《Hadoop实战第2版》Yarn学习笔记一(原理)
总体内容:1、MR局限性,
2、第二代MR(yarn)主要思想架构
一、Hadoop MapReduce框架的局限性
1、JobTracker单点瓶颈。由于JobTracker负责作业的分发、管理和调度,还要和集群中所有的节点保持heartbeat通信,
了解机器的运行状态和资源情况,随着集群的数量和提交job数量的增加,JobTracker任务量随之上涨,造成JobTracker
内存和网络带宽快速消耗,成为单点瓶颈(集群作业的中心点和风险的核心)。
2、TaskTracker端,由于作业分配信息过于简单,造成一个node含有多个资源消耗多或运行时间长的任务,使作业单点
失败或等待时间过长。
3、作业延迟过高。在mr前,taskTracker汇报情况-->JobTracker分配作业-->TaskTracker开始运行。由于通信延迟造
成任务启动时间过长。最显著的影响是小作业并不能及时完成。
4、变成框架不够灵活。MR框架限制了编程的模式及资源的分配。
二、yarn(MapReduce V2主要思想架构)
主要思想(围绕着思想-->名词解释/作用-->整体结构-->详细介绍--》)
a、思想
1、将JobTracker的集群资源管理和作业管理进行分离(分离出来的集群资源管理由全局的资源管理器
(ResourceManager)管理,分离出来作业管理由针对每个作业的应用主体(ApplicationMaster)管理)
2、TaskTracker演变成节点管理器(NodeManager)。
b、名词解释/作用
*全局资源管理器(ResourceManager):(负责集群的资源管理和调度)整个集群中资源最终分配者
*针对每个作业的应用主体(ApplicationMaster):(负责引用程序相关事务,比如任务调度、任务监控和容错)
与资源管理器通信获取资源,与节点服务器配合完成节点的Task任务
*节点管理器(NodeManager):NodeManager 是 Yarn 每个节点的代理,在hadoop集群中负责计算个字的节点。
这包含同ResourceManager(RM)保持日期同步,监督container的生命周期,监控container资源的使用情况,跟踪node 心跳,
日志管理和一些可以被不同YRAN应用程序使用的辅助服务。
c、整体结构(yarn结构图)从抽象到具体。
d、详细介绍
1、资源管理器ResourceManager(RM)
根据功能划分成两个组件:调度器、应用管理器。
*调度器(Scheduler):
1)根据集群中容量、队列和资源等限制,将资源分配给各个正在运行的应用,
2)负责资源的分配和调度但不负责监控和重启任务
3)处理客户端请求
*应用管理器(ApplicationManager):
1)负责接收作业,协商获取第一个资源容器用于执行应用的任务主体
2)为重启失败的应用主体分配容器
2、节点管理器(NodeManager)
节点管理器是每个节点的框架代理,具体功能如下:
1)负责启动应用的容器,监控容器的资源使用(CPU、内存、带宽等),然后汇报给调度器
2)应用对应的应用主题,通过协商从调度器处获取资源容器。
3) 跟踪监控容器的状态和应用执行的情况。
3、资源容器(ResourceContainer / Container)
主要职责就是运行、保存或传输应用主体提交的作业或需要存储和传输的数据。
(数据包含Cpu、内存等多维度的资源以及环 境变量、启动命令等任务相关运行的信息)
4、应用主体
应用主体和应用是一一对应的。主要职责如下:
1)与调度器协商资源。
2)与节点管理器合作,在对应的容器中运行对应的组件task,并监控这些task任务。
3)如果容器(Container)出现故障,应用主体重新向调度器申请其他资源。
4)计算应用程序所需的资源量,并转换成调度器可识别的协议信息包。
5)在应用主题出现故障后,应用管理器会负责重启它
应用主体有一下组件:
1)事件调度组件:是应用主体中各个组件的管理者,负责为其他组件生成事件。
2)容器分配组件:负责将Task的资源请求翻译成发送给调度器的应用主体的资源请求,并与资源管理器协商获取资源。
3)用户服务组件:将作业的状态、计数器、执行进度等信息反馈给Hadoop MapReduce的用户
4)任务监听组件:负责接受Map或Reduce Task发送的心跳信息。
5)任务组件:负责接收Map和Reduce Task形成的心跳信息和状态更新信息。
6)容器启动组件:通过使节点管理器运行来负责容器的启动。
7)作业历史事件处理组件:将作业运行的历史事件写入HDFS。
8)作业组件,维护作业和组件的状态。
三、yarn作业执行流程