鍍金池/ 教程/ 大數(shù)據(jù)/ Hadoop - YARN
YARN - Failover
MapReduce - Shuffle
Hadoop配置
MapReduce - 讀取數(shù)據(jù)
Hadoop - MapReduce
YARN - Container
Hadoop 測(cè)試
MapReduce - Mapper
Hadoop - 參考
YARN - ResourceManager
HDFS - 可靠性
HDFS - 讀文件
Hadoop - 簡(jiǎn)介
YARN - ApplicationMaster
Hadoop - IO
Hadoop 監(jiān)控
MapReduce - 編程
Hadoop - YARN
Hadoop - HDFS
HDFS - 命令工具
HDFS - 寫(xiě)文件
YARN - NodeManager
Hadoop安裝

Hadoop - YARN

舊的MapReduce架構(gòu)

http://wiki.jikexueyuan.com/project/hadoop/images/yarn-old-mapreduce.png" alt="" />

  • JobTracker: 負(fù)責(zé)資源管理,跟蹤資源消耗和可用性,作業(yè)生命周期管理(調(diào)度作業(yè)任務(wù),跟蹤進(jìn)度,為任務(wù)提供容錯(cuò))
  • TaskTracker: 加載或關(guān)閉任務(wù),定時(shí)報(bào)告認(rèn)為狀態(tài)

此架構(gòu)會(huì)有以下問(wèn)題:

  1. JobTracker是MapReduce的集中處理點(diǎn),存在單點(diǎn)故障
  2. JobTracker完成了太多的任務(wù),造成了過(guò)多的資源消耗,當(dāng)MapReduce job 非常多的時(shí)候,會(huì)造成很大的內(nèi)存開(kāi)銷(xiāo)。這也是業(yè)界普遍總結(jié)出老Hadoop的MapReduce只能支持4000 節(jié)點(diǎn)主機(jī)的上限
  3. 在TaskTracker端,以map/reduce task的數(shù)目作為資&##x6E90;的表示過(guò)于簡(jiǎn)單,沒(méi)有考慮到cpu/ 內(nèi)存的占用情況,如果兩個(gè)大內(nèi)存消耗的task被調(diào)度到了一塊,很容易出現(xiàn)OOM
  4. 在TaskTracker端,把資源強(qiáng)制劃分為map task slot和reduce task slot, 如果當(dāng)系統(tǒng)中只有map task或者只有reduce task的時(shí)候,會(huì)造成資源的浪費(fèi),也就集群資源利用的問(wèn)題

總的來(lái)說(shuō)就是單點(diǎn)問(wèn)題資源利用率問(wèn)題

YARN架構(gòu)

http://wiki.jikexueyuan.com/project/hadoop/images/yarn-architecture.png" alt="" />

http://wiki.jikexueyuan.com/project/hadoop/images/yarn-architecture-physical.png" alt="" />

YARN就是將JobTracker的職責(zé)進(jìn)行拆分,將資源管理和任務(wù)調(diào)度監(jiān)控拆分成獨(dú)立#x7ACB;的進(jìn)程:一個(gè)全局的資源管理和一個(gè)每個(gè)作業(yè)的管理(ApplicationMaster) ResourceManager和NodeManager提供了計(jì)算資源的分配和管理,而ApplicationMaster則完成應(yīng)用程序的運(yùn)行

  • ResourceManager: 全局資源管理和任務(wù)調(diào)度
  • NodeManager: 單個(gè)節(jié)點(diǎn)的資源管理和監(jiān)控
  • ApplicationMaster: 單個(gè)作業(yè)的資源管理和任務(wù)監(jiān)控
  • Container: 資源申請(qǐng)的單位和任務(wù)運(yùn)行的容器

架構(gòu)對(duì)比

http://wiki.jikexueyuan.com/project/hadoop/images/hadoop-different.png" alt="" />

YARN架構(gòu)下形成了一個(gè)通用的資源管理平臺(tái)和一個(gè)通用的應(yīng)用計(jì)算^#x5E73;臺(tái),避免了舊架構(gòu)的單點(diǎn)問(wèn)題和資源利用率問(wèn)題,同時(shí)也讓在其上運(yùn)行的應(yīng)用不再局限于MapReduce形式

YARN基本流程

http://wiki.jikexueyuan.com/project/hadoop/images/yarn-process.png" alt="" />

http://wiki.jikexueyuan.com/project/hadoop/images/yarn-process-status-update.png" alt="" />

1. Job submission

從ResourceManager中獲取一個(gè)Application ID 檢查作業(yè)輸出配置,計(jì)算輸入分片 拷貝作業(yè)資源(job jar、配置文件、分片信息)到HDFS,以便后面任務(wù)的執(zhí)行

2. Job initialization

ResourceManager將作業(yè)遞交給Scheduler(有很多調(diào)度算法,一般是根據(jù)優(yōu)先級(jí))Scheduler為作業(yè)分配一個(gè)Container,ResourceManager就加載一個(gè)application master process并交給NodeManager管理ApplicationMaster主要是創(chuàng)建一系列的監(jiān)控進(jìn)程來(lái)跟蹤作業(yè)的進(jìn)度,同時(shí)獲取輸入分片,為每一個(gè)分片創(chuàng)建一個(gè)Map task和相應(yīng)的reduce task Application Master還決定如何運(yùn)行作業(yè),如果作業(yè)很?。膳渲茫?,則直接在同一個(gè)JVM下運(yùn)行

3. Task assignment

ApplicationMaster向Resource Manager申請(qǐng)資源(一個(gè)個(gè)的Container,指定任務(wù)分配的資源要求)一般是根據(jù)data locality來(lái)分配資源

4. Task execution

ApplicationMaster根據(jù)ResourceManager的分配情況,在對(duì)應(yīng)的NodeManager中啟動(dòng)Container 從HDFSN#x4E2D;讀取任務(wù)所需資源(job jar,配置文件等),然后執(zhí)行該任務(wù)

5. Progress and status update

定時(shí)將任務(wù)的進(jìn)度和狀態(tài)報(bào)告給ApplicationMaster Client定時(shí)向ApplicationMaster獲取整個(gè)任務(wù)的進(jìn)度和狀態(tài)

6. Job completion

Client定時(shí)檢查整個(gè)作業(yè)是否完成 作業(yè)完成后,會(huì)清空臨時(shí)文件、目錄等

上一篇:Hadoop 測(cè)試下一篇:Hadoop - MapReduce