2014-03-03 92 views
3

我是hadoop的新手,我對此有以下問題。Hadoop任務可以在單個節點上並行運行

這就是我在hadoop中理解的。

1)當過任何文件寫入Hadoop中它存儲所有數據節點的數據塊(64MB默認)

2)當我們運行的MR工作,分裂將從此塊中創建和在每個數據節點上分割將被處理。

3)從每個分割記錄讀取器將被用來在映射器端生成鍵/值對。

問題:

1)一個數據節點可以一次處理多個分割嗎?如果數據節點容量更大?

我認爲這是MR1的侷限性,而用MR2 YARN我們有更好的資源利用率。

2)將在數據節點上以串行方式讀取拆分,還是可以並行處理以生成鍵/值對? [通過隨機訪問數據節點拆分中的磁盤位置]

3)map/reduce體系結構中的'slot'術語是什麼?我正在閱讀其中一篇博客,它說YARN將在Datanode中提供更好的插槽利用率。

回答

6

讓我先說說what I have understood in hadoop部分。

  1. 存儲在Hadoop文件系統中的文件是不存儲在所有數據節點。是的,它被分成塊(默認爲64MB),但是存儲這些塊的DataNode的數量取決於a.File Sizeb.Current Load on Data Nodesc.Replication Factord.Physical Proximity。 NameNode在決定哪些dataNodes將存儲文件的塊時考慮到這些因素。

  2. 再次每個數據節點可能不處理拆分。首先,DataNode只負責管理數據的存儲,而不執行作業/任務。 TaskTracker是負責在單個節點上執行任務的從節點。其次,只有那些包含該特定作業所需數據的節點纔會處理拆分,除非這些節點上的負載過高,在這種情況下,拆分中的數據將被複制到另一個節點並在那裏處理。

現在來的問題,

  1. 同樣,數據節點不負責處理作業/任務。我們通常將dataNode + taskTracker組合爲一個節點,因爲它們通常位於同一個節點上,處理不同的職責(數據存儲&正在運行的任務)。給定節點一次可以處理多個分割。通常將單個分割分配給單個Map任務。這可以轉化爲在單個節點上運行的多個Map任務,這是可能的。

  2. 來自輸入文件的數據以串行方式讀取。

  3. 節點的處理能力由Slots的數量定義。如果一個節點有10個插槽,則意味着它可以並行處理10個任務(這些任務可能是Map/Reduce任務)。考慮到該節點的物理配置,例如內存,物理存儲,處理器內核的數量等,集羣管理員通常配置每個節點的插槽數量。

相關問題