我刚刚开始使用Hadoop。我的问题可能对你来说很愚蠢,但它令人困惑。
我的问题是,如果我有10 TB的数据和10个节点,是否将数据复制到所有节点上,每个节点上有1 TB的数据?
如果是这样的话,我会提交一个单词统计程序。MapReduce代码是否可以在每个节点上运行?如果是,那么是否在映射程序完成后在每个节点上启动缩减程序?
提前感谢
发布于 2014-10-31 17:40:27
欢迎使用Hadoop。
数据分布取决于您的复制因子(hdfs-site.xml中的dfs.replication)。如果因子为1,则表示所有数据在集群内只存储一次。2表示两次,依此类推。因此,如果复制系数为3,10TB的数据将占用群集内30TB的空间。复制系数大于1还意味着同一数据块永远不会在同一台服务器中存储两次,但副本驻留在其他服务器上。
通常,假设服务器是相同的,数据在整个集群中相当均匀地分布。如果由于某种原因,它的分布不够均匀,您可以运行Hadoop均衡器进程来平衡集群。
数据节点旨在使用它们拥有的数据运行映射阶段,以避免数据传输。因此,所有节点都应该参与mapreduce。在复制因子高于1的情况下,我不确定工作是如何分配的,因为数据位于多个位置,但我认为它应该相当均匀地分配。
https://stackoverflow.com/questions/26670765
复制相似问题