2016-11-27 41 views
0

如何設置Hadoop中的DataNode數量?是由代碼,配置還是環境決定。 也有人在衝浪時,有人說「地圖每個節點10-100地圖的首選地圖數量」所以「節點」在這裏意味着NameNode或DataNode?Hadoop中的DataNode數量和MapTasks

當談論MapTasks的數量時,有人說它等於分割數量,另一個是對塊數量說的,而另一些人則說這是由框架決定的,可能不會給出精確的分割或塊的數量,這對他們來說是對的嗎?

回答

1

問題:如何設置Hadoop中的DataNode數量?

用於設置或計算DataNode的數量。首先估計Hadoop的存儲ħ

H = C^- [R S /(1-I)

其中:

Ç =平均壓縮比。它取決於使用的壓縮類型(Snappy,LZOP,...)和數據大小。當不使用壓縮時,c = 1。

r =複製因子。在生產集羣中通常是3。

S =要移至Hadoop的數據大小。這可能是歷史數據和增量數據的組合。增量數據可以是每天例如並且預計在一段時間(例如3年)。

i =中間因子。它通常是1/3或1/4。 Hadoop的工作空間專門用於存儲Map階段的中間結果。

實施例:在沒有壓縮即C = 1,爲3的複製因子,中間的0.25 = 1/4

H= 1*3*S/(1-1/4)=3*S/(3/4)=4*S 

隨着上述假設的因素,Hadoop的存儲被估計爲4乘以初始數據大小的大小。

現在公式估計的數據節點(N)的數量:

N = H/d = C - [R S /(1-I)* d

其中:

d =每個節點可用的磁盤空間。

問題:「每個節點10-100個地圖的首選地圖數量」所以這裏的「節點」是指NameNode或DataNode?

如您所知,MapReduce作業會轉至處理數據,反之亦然。所以這裏「節點」是數據節點。

問題:有多少地圖?

地圖的數量通常是由輸入端的總大小, 即,輸入文件的塊的總數來驅動。

地圖的平行度水平似乎是每個節點10到100個地圖 ,儘管它已經被設置爲300個地圖用於非常cpu-light 地圖任務。任務設置需要一段時間,所以如果地圖至少需要一分鐘才能執行,則最好使用 。

如果havve輸入數據的10TB和128MB的塊大小,你最終會與82000點的地圖,除非Configuration.set(MRJobConfig.NUM_MAPS, int)(只提供了一個暗示,framework)來設置它甚至更高。

+0

我已刪除關於確認的帖子的最後部分。既然你是從維基引用內容,它不會是錯的。 –

+0

玩文字,尼斯...... !!好的同意。 –

+0

https://hadoop.apache.org/docs/stable/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html確認數量相同的地圖 –