單個作業的資源管理和任務監控
具體功能描述:
1. 計算應用的資源需求,資源可以是靜態或動態計算的,靜態的一般是Client申請時就指定了,動態則需要ApplicationMaster根據應用的運行狀態來決定
2. 根據數據來申請對應位置的資源(Data Locality)
3. 向ResourceManager申請資源,與NodeManager交互進行程序的運行和監控,監控申請的資源的使用情況,監控作業進度
4. 跟蹤任務狀態和進度,定時向ResourceManager發送心跳消息,報告資源的使用情況和應用的進度信息
5. 負責本作業內的任務的容錯
ApplicationMaster可以是用任何語言編寫的程序,它和ResourceManager和NodeManager之間是通過ProtocolBuf交互,以前是一個全局的JobTracker負責的,現在每個作業都一個,可伸縮性更強,至少不會因為作業太多,造成JobTracker瓶頸。同時將作業的邏輯放到一個獨立的ApplicationMaster中,使得靈活性更加高,每個作業都可以有自己的處理方式,不用綁定到MapRedue的處理模式上。
**如何計算資源需求**
一般的MapReduce是根據block數量來定Map和Reduce的計算數量,然后一般的Map或Reduce就占用一個Container
**如何發現數據的本地化**
數據本地化是通過HDFS的block分片信息獲取的