这是我参与「第四届青训营 」笔记创作活动的第15天。
YARN
- YARN是一种新的 Hadoop 资源管理器可为上层计算应用提供统一的和资源管理调度,提高集群硬件资源的利用率。
- Hadoop1.0中的yarn耦合在其他组件中,效率差,2.0之后独立出来为新的组件。
调度系统:根据合适的调度策略合理分配利用系统资源。
- 用有限资源解决有限资源无法满足的需求时就需要调度。
- 调度系统主要解决资源请求和可用资源间的映射(Mapping)问题。
- 预达目标(根据不同应用场景权衡)
- 严格的多租户间公平、容量保障
- 调度过程的高吞吐与低延迟
- 高可靠性与高可用性保障:主从机制
- 高可扩展的调度策略
- 高集群整体物理利用率:降级硬件成本优化
- 满足上层任务的个性化调度需求
- 任务持续、高效、稳定的运行
- 调度系统范型
- 集中式:融合资源管理调度和任务控制;
- 两层式:资源管理调度和任务控制解耦;
- 共享状态式:多个调度器基于乐观并发共享全局资源视图;
- 分布式:多个调度器基于先验知识进行最快调度决策;
- 多种类型调度器共存,共同分配;
整体架构
- Resourge Manager(RM):处理客户端请求,监控NodeManager,启动或监控ApplicationMaster,进行资源的分配与调度。
- 可用ZK进行高可用管理Resourge Manager
- NodeManager ( NM ):管理单个节点上的资源,处理来自ResourceManager的请求,处理来自ApplicationMaster的命令。
- ApplicationMaster ( AM ):为应用程序申请资源并分配给内部的任务,负责任务的监控与容错,管理任务的生命周期。
- Container(容器):YARN中的资源抽象,封装了节点上的硬件资源,如内存、CPU、磁盘、网络等。
任务运行生命周期核心流程
- 程序提交到客户端。
- 客户端向RM申请一个Application。
- RM返回给客户的该Application的ApplicationID和HDFS中资源提交路径。
- 客户端找到HDFS中的路径,并将任务所需的资源提交上去。
- 资源提交后,客户端向RM申请运行AM,RM收到请求后将任务初始化成Task,放入任务队列中(FIFO)。
- 将Task发送给一个NM。
- NM创建容器,拉起AM进程。
- AM所在的NM从HDFS中下载所需资源:jar包等
- 向RM注册,保持心跳,在心跳中进行资源(容器)申请。
- RM将分配的资源量(容器信息)随心跳返回给AM。
- AM根据得到的资源信息,向容器对应的NM节点发送启动脚本拉起进程。
- NM拉起容器进程。
- NM无任务资源(jar包)需要从HDFS拉取。
- 容器与AM保持通信,报告任务运行状态。
- 任务运行完成后,AM向RM注销,结束本次任务。