Hadoop介紹

wymrdjm發表於2017-12-29

Hadoop介紹

Apache Hadoop 是Apache開源組織的一個分散式計算開源框架,提供了一個分散式檔案系統子專案(HDFS)和支援MapReduce分散式計算的軟體架構。簡單來說,Hadoop是一個可以更容易開發和執行處理大規模資料的軟體平臺。Hadoop實現了一個分散式叢集檔案系統(HadoopDistributedFileSystem)。分散式叢集檔案系統的意思是:每臺計算機各自提供自己的儲存空間,並各自協調管理所有計算機節點(node)中的檔案。

Hadoop · MapReduce

Architecture

Hadoop在網路計算機叢集上執行,每個節點執行一組守護程式。

• 資源管理器ResourceManager — computing 
• 節點管理器NodeManager — computing 
• 名稱節點NameNode — storage 
• 二級節點名稱SecondaryNameNode — storage 
• 資料節點DataNode — storage

Master-Slave architecture

Map/Reduce框架由一個單獨的master JobTracker 和每個叢集節點一個slave TaskTracker共同組成。master負責排程構成一個作業的所有任務,這些任務分佈在不同的slave上,master監控它們的執行,重新執行已經失敗的任務。而slave僅負責執行由master指派的任務。

Master節點 (1) 
• 管理所有Slave的節點 
• 接受外界請求 
• 分配誰什麼時候執行什麼任務 
• 與Slave節點交流 
Slave節點 (1..*) 
• 執行任務 
• 執行Master節點

這裡寫圖片描述

Job flow

  1. 將input data分成到computing chunks中
  2. 將一個chunk分配到一個Map 節點
  3. 執行所有的Mappers
  4. Shuffle and sort
  5. 執行所有的Reducers
  6. Reducers的結果組成了這個job的output

Hadoop 優缺點

Hadoop 並不是針對所有情況的完美的解決方案 
1. Hadoop是一個batch processing framework,用來處理非常大的dataset 
2. Hadoop時延高,只適用Batch資料處理,對於互動式資料處理,實時資料處理的支援不夠 
2. 因為data已經是distributed,Hadoop在處理Map phase的時候很高效(efficient) 
2. Hadoop在I/O communication方面表現不是那麼好。Hadoop在job執行過程中,頻繁的對hdfs進行檔案讀取/寫入操作,io操作頻繁。並且shuffle and sort會引發large network traffic 
4. Hadoop沒有對迭代(iteration)的原生支援 
5. Hadoop只有一個同步屏障(synchronisation barrier)

相關文章