2012-10-07 51 views
6

當我運行「hadoop job -status xxx」時,輸出以下一些列表。機架本地地圖任務和數據本地地圖任務有什麼區別?

Rack-local map tasks=124 
Data-local map tasks=6 

機架本地地圖任務和數據本地地圖任務有什麼區別?

+3

Thoma的答案是正確的,但我擔心機架本地任務數量與本地數據量有關。你需要比這更多的數據本地任務。在較大的羣集中,我通常會看到〜95%的數據是本地數據。與你相反,這是相反的。 –

+0

@DonaldMiner是的,那不好。但是,這主要取決於該羣集上正在運行多少個作業。有時你需要犧牲一份工作的表現,以便另一份工作可以更快。 –

+0

@ThomasJungblut這個數字仍然聽起來不對。在擁有3倍複製功能的較大集羣上,即使是全插槽容量,我也看到這個數字要高出很多。 –

回答

9

在數據本地任務中,不需要複製任何內容。這是因爲塊像計算一樣在物理上位於同一臺服務器上。

下一層是機架本地任務,在這裏必須複製數據,因爲沒有可用的所需塊的本地副本。請注意,機架本地只在網絡的機架本地交換內複製。

還有最糟糕的情況,其中數據不在本地,也不在同一機架上。所以這必須通過兩臺交換機複製到運行計算的主機。我不知道是否有櫃檯,但基本上這必須是#all tasks - #data-local tasks - #rack-local tasks

1

我想指出的是,在同一機架內的計算機之間提供千兆(或更快)的網絡比爲更大數量的計算機便宜得多。
根本原因是以太網交換機不可擴展,我們不能以合理的價格爲數百個端口提供這種交換機。
因爲它hadoop試圖至少在同一個機架上運行任務,如果不能在存儲數據的節點上執行它。