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,並監視器執行情況。