2014-10-31 212 views
0

我刚刚开始使用Hadoop。我的问题可能很愚蠢,但令人困惑。Hadoop集群工作

我的问题是,如果我有10TB数据和10个节点,数据是复制到所有节点上,每个节点上有1TB?

如果是这样,我提交一个字数统计程序。 MapReduce代码是否在每个节点上运行?如果是这样,一旦映射器完成,reducer是否在每个节点上启动?

在此先感谢

回答

4

欢迎来到Hadoop。

数据分布取决于您的复制因子(hdfs-site.xml中的dfs.replication)。如果因子为1,则意味着所有数据在群集中只存储一次。 2表示两次,等等。因此,对于复制因子3,10TB的数据在集群内需要30TB的空间。大于1的复制因子也意味着相同的数据块永远不会在相同的服务器中存储两次,而是副本驻留在其他服务器上。

通常情况下,假设服务器是相同的,数据在整个集群中分布得相当均匀。如果由于某种原因导致分布不均匀,则可以运行Hadoop平衡器进程来平衡集群。

datanodes是为了运行映射阶段与他们必须避免数据传输的数据。所以所有节点都应该参与mapreduce。由于复制因子大于1,我不确定工作是如何分布的,因为数据位于多个位置,但我想它的分布意味着要相当均匀。

+0

其中数据存储在每个群集上。还有一件事如果我有10个集群,这意味着在每个集群上运行map reduce代码。 – 2014-10-31 10:03:13

+0

我猜你的意思是你的集群中有10台服务器?是的,如果节点有一部分数据,他们应该运行一些mapreduce。 – 2014-10-31 11:38:33

+0

@lucys如果这个答案对你有帮助吗?你应该接受它。 – 2014-12-10 17:51:42