数据与未来

hadoop MapReduce工作原理解析

2018-01-24  本文已影响11人  Mervyn_2014
mapreduce.jpg
  1. 客户端执行任务。
  2. Client请求Resource Manager获取一个Application Master实例。
  3. 复制任务信息到HDFS中
  4. 提交任务到ResourceManager。
  5. ResourceManager告诉NodeMananger启动container,并告知ApplicationMaster
  6. 初始化任务
  7. 检索输入分片(retrieve input splits)
  8. 请求ResourceManager分配资源(allocate recources)
  9. 启动容器(container),并告知其他nodeMananger
  10. 检索任务资源信息(retrieve job resources)
  11. 启动map或reduce 任务。
mapreduce工作原理.png
  1. Client请求ResourceManager运行一个ApplicationMaster实例
  2. Resource Manager选择一个NodeManager,启动一个Container并运行Application Master实例(step 2a、step 2b)
  3. Application Master根据实际需要向ResourceManager请求更多的Container资源(step 3)
  4. Application Master通过获取到的Container资源执行分布式计算(step 4a、step 4b)
    ResourceManager:是YARN资源控制框架的中心模块,负责集群中所有的资源的统一管理和分配。它接收来自NM(NodeManager)的汇报,建立AM,并将资源派送给AM(ApplicationMaster)。

概念:

NodeManager:

简称NM,NodeManager是ResourceManager在每台机器的上代理,负责容器的管理,并监控他们的资源使用情况(cpu,内存,磁盘及网络等),以及向 ResourceManager提供这些资源使用报告。

ApplicationMaster:

以下简称AM。YARN中每个应用都会启动一个AM,负责向RM申请资源,请求NM启动container,并告诉container做什么事情。

Container:资源容器。

YARN中所有的应用都是在container之上运行的。AM也是在container上运行的,不过AM的container是RM申请的。

  1. Container是YARN中资源的抽象,它封装了某个节点上一定量的资源(CPU和内存两类资源)。
  2. Container由ApplicationMaster向ResourceManager申请的,由ResouceManager中的资源调度器异步分配给ApplicationMaster;
  3. Container的运行是由ApplicationMaster向资源所在的NodeManager发起的,Container运行时需提供内部执行的任务命令(可以是任何命令,比如java、Python、C++进程启动命令均可)以及该命令执行所需的环境变量和外部资源(比如词典文件、可执行文件、jar包等)。
    另外,一个应用程序所需的Container分为两大类,如下:
    (1) 运行ApplicationMaster的Container:这是由ResourceManager(向内部的资源调度器)申请和启动的,用户提交应用程序时,可指定唯一的ApplicationMaster所需的资源;
    (2) 运行各类任务的Container:这是由ApplicationMaster向ResourceManager申请的,并由ApplicationMaster与NodeManager通信以启动之。
    以上两类Container可能在任意节点上,它们的位置通常而言是随机的,即ApplicationMaster可能与它管理的任务运行在一个节点上。
上一篇 下一篇

猜你喜欢

热点阅读