HDFS:DataNode存儲數據,NameNode負責告訴別人數據存儲在哪個節點,哪些信息,2NN,備份NameNode.
YARN:整個集群資源的管理。
MapReduce:
(1)分布式的運算程序往往需要分成至少 2 個階段。
(2)第一個階段的 MapTask 並發實例,完全並行運行,互不相干。
(3)第二個階段的 ReduceTask 並發實例互不相干,但是他們的數據依賴於上一個階段的所有MapTask 並發實例的輸出。
(4)MapReduce 編程模型只能包含一個 Map 階段和一個 Reduce 階段,如果用戶的業務邏輯非常復雜,那就只能多個 MapReduce 程序,串行運行。
大致過程:
1、有一個client(可以代碼調用,一些頁面訪問入口等),向集群提交一個任務,比如查詢某某文件。
2、client提交完任務之后,YARN中的ResourceManger找一個節點,開啟一個Container,然后把任務放到Container中,任務叫App Mstr,App Mstr向ResourceManger申請,任務開啟所需資源。ResourceManger尋找哪些節點有資源,App Mstr開啟Map Task,相當於Map階段。每一個Map Task獨立運行,最終把結果匯總寫入磁盤HDFS上。