NM 是每个节点上的资源和任务管理器,一方面,它会定时地向 RM 汇报本节
点上的资源使用情况和各个 Container 的运行状态;另一方面,它接收并处理来
自 AM 的 Container 启动/停止等各种请求。
Container
Container 是 YARN 中的资源抽象,它封装了某个节点上的多维度资源,如
内存、CPU、磁盘、网络等,当 AM 向 RM 申请资源时,RM 为 AM 返回的资源便是
用 Container 表示。YARN 会为每个任务分配一个 Container,且该任务只能使用
该 Container 中描述的资源。
注:1. Container 不同于 MRv1 中的 slot,它是一个动态资源划分单位,是
根据应用程序的需求动态生成的。
2. 现在 YARN 仅支持 CPU 和内存两种资源,且使用了轻量级资源隔离机制 Cg
roups 进行资源隔离。
YARN 的资源管理和执行框架都是按主/从范例实现的——Slave ---节点管
理器(NM)运行、监控每个节点,并向集群的 Master---资源管理器(RM)报告资
源的可用性状态,资源管理器最终为系统里所有应用分配资源。
特定应用的执行由 ApplicationMaster 控制,ApplicationMaster 负责将一
个应用分割成多个任务,并和资源管理器协调执行所需的资源,资源一旦分配好,
ApplicationMaster 就和节点管理器一起安排、执行、监控独立的应用任务。
需要说明的是, YARN 不同服务组件的通信方式采用了事件驱动的异步并发
机制,这样可以简化系统的设计。
十、YARN 架构
用于作业调度和资源管理。
resourcemanager
YARN 的老大,总体负责资源的调度。
nodemanager
YARN 的小弟,具体负责服务器的资源的调度使用。
Container
容器,用于承载 ApplicationMaster 进程或具体的 map 进程或 reduce 进程。
ApplicationMaster
应用程序管理器,用于具体管理整个应用程序的执行的,如果有部分进程
在执行的过程中产生了失败,那么由 ApplicationMaster 来安排其他的
NodeManager 重新开启 Container 来执行失败的进程
十一、MapReduce 计算框架
MapReduce 分为两个阶段,一个是 map 阶段,一个是 reduce 阶段。
map 阶段:主要是映射输入的数据,进行第一步的处理工作。
reduce 阶段:主要是将 map 映射的结果汇总、计算,形成最终输出。
shuffle 阶段:实际是一个较为复杂的过程,它连接了 Map 阶段和 reduce
阶段。
mapreduce 的计算过程:
数据输入---map 阶段处理---输出---shuffle 过程--->reduce 的输入--->re
duce 阶段处理--->输出结果
mapreduce 适合处理大数据量的离线任务。