HA(High Available)高可用性集羣環境搭建
理解MapReduce
- Map
將數據映射爲KV模型
並行分佈式計算
計算向數據移動
- Reduce
數據全量/分量加工
相同的key爲一組,調用一次reduce方法
排序實現key的匯聚([歸併排序]-將已有序的子序列合併,得到完全有序的序列)
- KV使用自定義數據類型
序列化:便於分佈式程序數據交互
Comparable:實現排序(字典序,數值序)
MR 1.0
- 角色
JobTracker:(主)調度所有的作業和監控整個集羣的資源負載
TaskTracker:(從)管理自身節點資源,和JobTracker心跳,彙報資源,獲取task
Client:以作業爲單位,規劃作業計算分佈,提交作業資源到HDFS,最終提交作業到JobTracker
- 弊端
1.JobTracker負載過重,單點故障
2.資源調度和計算調度強耦合,其他計算框架需要重複實現資源管理
3.不同框架對資源不能全局管理
MR 2.0 On YARN
- YARN:Yet Another Resource Negotiator
特點:解耦資源管理與任務計算,多個應用框架可運行在YARN上(MapReduce、Spark、Storm等)
ResourceManager:(主)集羣節點資源管理
NodeManager:與RM彙報資源;管理Container生命週期(計算框架中的角色以Container表示)(一般與DataNode位於同節點上)
ApplicationMaster:負責應用程序相關事務(任務調度,任務監控和容錯等);每個應用程序對應一個ApplicationMaster
Container:默認NM啓動線程控制Container大小,超出申請資源,kill;支持linux內核的Cgroup
- MR
RM-ApplicationMaster-Container:以作業爲單位,負載到不同的節點,避免單點故障;創建Task需要和RM申請資源(Container)
Task-Container:執行具體的作業
- Client
RM—Client:請求資源創建AM
AM-Client:與AM交互