1. 程式人生 > >HDFS、YARN和MapReduce簡介

HDFS、YARN和MapReduce簡介

Hadoop

Hadoop是一個Apache旗下的分散式系統基礎架構。

Hadoop1由HDFS和MapReduce構成;Hadoop2框架核心設計有HDFS、MapReduce、YARN。

Hadoop2主要改進了以下四部分:YARN、NameNode HA、HDFS federation、Hadoop RPC序列化擴充套件性。詳細解釋如下:

YARN是Hadoop2中的資源管理系統,它可以使Hadoop2可以執行更多的處理框架;

NameNode HA提高了Hadoop的可靠性,當action NameNode宕機時,可立即切換到standby NameNode提供服務;

HDFS federation讓多個NameNode共同管理DataNode,增加了Hadoop的叢集規模;

Hadoop RPC序列化擴充套件性的提高,是指將資料型別獨立可插拔。

HDFS

HDFS是一個分散式檔案系統,具有高容錯性,提供高吞吐率的資料訪問,能夠有效處理海量資料集。

它支援超大檔案,能夠檢測並應對硬體故障,採用流式資料訪問,並使用了簡化了的一致性模型。但它不適合低延遲環境,大量小檔案的讀寫,並且不支援多使用者寫入以及隨機修改檔案。

HDFS由NameNode和DataNode構成;NameNode儲存HDFS的名字空間,任何修改操作都記錄在NameNode中;DataNode把每個HDFS資料塊(HDFS處理單元,預設128MB)儲存在本地檔案系統的單獨檔案中,以此來儲存HDFS資料。

HDFS的讀寫流程如下圖所示:

MapReduce

MapReduce是面向大型資料處理的平行計算模型和方法。

其工作流程如下:

MapReduce的map端輸出作為輸入傳遞給reduce端,並按鍵排序的過程稱為shuffle,其過程如圖:


Hadoop1中的MapReduce有以下四大缺點:

JobTracker同時負責資源管理和作業控制,導致其擴充套件性差;

MapReduce採用Master/Slave結構存在的單點故障問題會使整個叢集不可用,所以它可靠性差;

MapReduce資源分配基於槽位,兩種Map槽位和Reduce槽位工作時間不同卻不可共享資源,降低了資源的利用率;

它無法支援多種計算框架,只能使用基於磁碟的離線計算,不支援記憶體計算、流式計算和迭代式計算。

YARN

YARN是Hadoop2中的通用資源管理系統,為上層應用提供統一資源管理排程,改正了Hadoop1中MapReduce的缺點,其結構如下:

YARN的元件有ResourceManager、ApplicationMaster、NodeManager和Container,其採用的仍然是Master/Slave結構(ResourceManager是Master,NodeManager是Slave)。

其工作流程圖如下: