hadoop三大组件之一:YARN | 青训营

135 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的第15天。

YARN

  • YARN是一种新的 Hadoop 资源管理器可为上层计算应用提供统一的和资源管理调度,提高集群硬件资源的利用率。
  • Hadoop1.0中的yarn耦合在其他组件中,效率差,2.0之后独立出来为新的组件。

调度系统:根据合适的调度策略合理分配利用系统资源。

  • 用有限资源解决有限资源无法满足的需求时就需要调度。
  • 调度系统主要解决资源请求和可用资源间的映射(Mapping)问题。
  • 预达目标(根据不同应用场景权衡)
    • 严格的多租户间公平、容量保障
    • 调度过程的高吞吐与低延迟
    • 高可靠性与高可用性保障:主从机制
    • 高可扩展的调度策略
    • 高集群整体物理利用率:降级硬件成本优化
    • 满足上层任务的个性化调度需求
    • 任务持续、高效、稳定的运行
  • 调度系统范型
    • 集中式:融合资源管理调度和任务控制;
    • 两层式:资源管理调度和任务控制解耦;
    • 共享状态式:多个调度器基于乐观并发共享全局资源视图;
    • 分布式:多个调度器基于先验知识进行最快调度决策;
    • 多种类型调度器共存,共同分配;

整体架构

image.png

  • Resourge Manager(RM):处理客户端请求,监控NodeManager,启动或监控ApplicationMaster,进行资源的分配与调度。
    • 可用ZK进行高可用管理Resourge Manager
  • NodeManager ( NM ):管理单个节点上的资源,处理来自ResourceManager的请求,处理来自ApplicationMaster的命令。
  • ApplicationMaster ( AM ):为应用程序申请资源并分配给内部的任务,负责任务的监控与容错,管理任务的生命周期。
  • Container(容器):YARN中的资源抽象,封装了节点上的硬件资源,如内存、CPU、磁盘、网络等。

任务运行生命周期核心流程

image.png

  1. 程序提交到客户端。
  2. 客户端向RM申请一个Application。
  3. RM返回给客户的该Application的ApplicationID和HDFS中资源提交路径。
  4. 客户端找到HDFS中的路径,并将任务所需的资源提交上去。
  5. 资源提交后,客户端向RM申请运行AM,RM收到请求后将任务初始化成Task,放入任务队列中(FIFO)。
  6. 将Task发送给一个NM。
  7. NM创建容器,拉起AM进程
  8. AM所在的NM从HDFS中下载所需资源:jar包等
  9. 向RM注册,保持心跳,在心跳中进行资源(容器)申请
  10. RM将分配的资源量(容器信息)随心跳返回给AM。
  11. AM根据得到的资源信息,向容器对应的NM节点发送启动脚本拉起进程。
  12. NM拉起容器进程。
  13. NM无任务资源(jar包)需要从HDFS拉取。
  14. 容器与AM保持通信,报告任务运行状态。
  15. 任务运行完成后,AM向RM注销,结束本次任务。