大數據基礎原理


 

http://yuedu.baidu.com/ebook/d128cf8e33687e21ae45a935?pn=1&click_type=10010002

2.3 Hadoop原理
2.3.1 Hadoop HDFS原理
HDFS是一個高度容錯性的系統,適合部署在廉價的機器上。HDFS能提供高吞吐量的數據訪問,非常適合大規模數據集上的應用。HDFS放寬了一部分POSIX約束,來實現流式讀取文件系統數據的目的。

HDFS采用master/slave架構。

一個HDFS集群是由一個NameNode和一定數目的DataNodes組成。

NameNode是一個中心服務器,負責管理文件系統的名字空間(namespace)以及客戶端對文件的訪問。

DataNode一般是一個節點一個,負責管理它所在節點上的存儲。

 

HDFS數據上傳原理可以參考圖2-5對照理解,數據上傳過程如下所示:
1)Client端發送一個添加文件到HDFS的請求給NameNode;
2)NameNode告訴Client端如何來分發數據塊以及分發的位置;
3)Client端把數據分為塊(block),然后把這些塊分發到DataNode中;
4)DataNode在NameNode的指導下復制這些塊,保持冗余。

 

2.3.2 Hadoop MapReduce原理
適合用MapReduce來處理的數據集(或任務),需要滿足:待處理的數據集可以分解成許多小的數據集,而且每一個小數據集都可以完全並行地進行處理。

Hadoop MapReduce極大地方便了編程人員在不會分布式並行編程的情況下,將自己的程序運行在分布式系統上。

一個MapReduce作業(job)通常會把輸入的數據集切分為若干獨立的數據塊,由map任務(task)以完全並行的方式處理它們。框架會對map的輸出先進行排序,然后把結果輸入給reduce任務。通常,作業的輸入和輸出都會被存儲在文件系統中。整個框架負責任務的調度和監控,以及重新執行已經失敗的任務。
MapReduce框架包括

  一個主節點(ResourceManager)、

  多個子節點(運行NodeManager)

  MRAppMaster(每個任務一個)

共同組成。

Hadoop的job client提交作業(jar包/可執行程序等)和配置信息給ResourceManager,后者負責分發這些軟件和配置信息給slave、調度任務且監控它們的執行,同時提供狀態和診斷信息給job-client。

MapReduce框架的流程如圖2-6所示。
針對上面的流程可以分為兩個階段來描述。
(1)Map階段
1)InputFormat根據輸入文件產生鍵值對,並傳送到Mapper類的map函數中;
2)map輸出鍵值對到一個沒有排序的緩沖內存中;
3)當緩沖內存達到給定值或者map任務完成,在緩沖內存中的鍵值對就會被排序,然后輸出到磁盤中的溢出文件;
4)如果有多個溢出文件,那么就會整合這些文件到一個文件中,且是排序的;
5)這些排序過的、在溢出文件中的鍵值對會等待Reducer的獲取。

(2)Reduce階段

1)Reducer獲取Mapper的記錄,然后產生另外的鍵值對,最后輸出到HDFS中;
2)shuffle:相同的key被傳送到同一個的Reducer中;
3)當有一個Mapper完成后,Reducer就開始獲取相關數據,所有的溢出文件會被排序到一個內存緩沖區中;
4)當內存緩沖區滿了后,就會產生溢出文件到本地磁盤;
5)當Reducer所有相關的數據都傳輸完成后,所有溢出文件就會被整合和排序;
6)Reducer中的reduce方法針對每個key調用一次;
7)Reducer的輸出到HDFS。

  

2.3.3 Hadoop YARN原理
MapReduce的最嚴重的限制主要關系到可伸縮性、資源利用和對與MapReduce不同的工作負載的支持。


全新的Hadoop架構——YARN(也稱為MRv2)。下一代Hadoop計算平台,主要包括ResourceManager、ApplicationMaster、NodeManager

ResourceManager用來代替集群管理器,
ApplicationMaster代替一個專用且短暫的JobTracker,
NodeManager代替TaskTracker。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM