1. 程式人生 > >hadoop主要類介紹-開始篇

hadoop主要類介紹-開始篇

HADOOP類

(1)  InputFormat:將輸入的資料分割成split,並將split拆分成<k,v>作為map輸入。Job.setInputFormatClass()設定,TextInputFormat將文字按行分割成split,LineRecorderReader將每行解析為<k,v>

(2)  Mapper:實現map函式,將輸入的<k,v>生成中間結果,通過job.setMapperClass()設定。

(3)  Combiner:實現combine函式,合併中間具有相同key的鍵值對,通過job.setCombinerClass()設定。

(4)  Partitioner:實現getPartition函式,用於在Shuffle過程中按照key將中間資料分為R份,每份由一個Reducer負責。通過job.setPartitionerClass()設定, 預設使用HashPartitioner類,使用雜湊完成Shuffle過程。

(5)  Reducer:實現reduce函式,將中間結果合併,得到最終結果。通過job.setReduceClass()設定。

(6)  OutputFormat:負責輸出最終結果。通過job.setOutputFormatClass()設定,預設使用TextOutputFormat將最終結果以文字輸出。


Hadoop有四大核心模組:

    Common  常用工具類報                        HDFS  資料儲存

    YARN作業排程+資源管理平臺                  MAPReduce 資料處理

 HDFS 核心元件

    Namenode  管理檔案系統的名稱空間,維護檔案系統樹,儲存著所有檔案資訊

    這些資訊通過fsimage和edits檔案被持久到磁碟中。

Datanode檔案系統中真正儲存資料的地方  介面客戶端或元資料資訊(namenode)寫入或者讀取資料塊請求

Secondarynamenode:不是namenode節點,是namenode出現問題的備用節點

其負責定期合併namenode產生的fsimage和edits檔案,防止日誌檔案過大。

通常不和namenode在一個節點上,合併操作佔用CPUD大量時間,會影響namenode正常工作。

備註:Hadoop下載節點http://mirror.bit.edu.cn/apache/hadoop/common/

 

    NameNode是HDFS的守護程式,負責記錄檔案是如何分割成資料塊,以及這些資料塊分別存在哪些資料節點上。主要對記憶體及I/O進行管理。由於其在叢集中一個單點,如果NameNode宕機,整個系統無法執行。

DataNode叢集中每個從伺服器都有一個DataNode後臺程式,負責吧HDFS資料塊讀寫到本地檔案系統。讀寫時,先由NameNode告訴去哪個DataNode進行具體讀寫

Secondary NameNode用來監控HDFS狀態的輔助後臺程式。每個叢集中只有一個。定期儲存NameNode的快照,可將NameNode的宕機損失降到最低,同時作為備用NN使用。

Yarn源於MapReduce框架不足,將原有的JobTracker主要的資源管理和job排程/監控分成兩個單獨守護程序ResourceManager和每個Application有一個ApplicationMaster。RM和NM組成了基本的資料計算框架。RM協調叢集的資源利用,需要向其申請資源。NM主要負責啟動RM分配給AM的container,並監視器執行情況。