2014-10-31 139 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