hadoop生态圈之任务调度器yarn

yarn出现

yarn是hadoop2.x后出现负责资源调度,它不仅支持mapreduce的计算,还支持hive、spark等计算框架的计算。

yarn组件

yarn包含组件:resourceManager、ApplicationMaster、Container、NodeManager

resourceManager: 负责资源调度,与AM进行通信、与NodeManager进行通信。NodeManager通过心跳机制告知resourceManager自己的资源情况;RM通过RM-AM接口与AM进行通信。

它主要由两个组件构成:调度器(Scheduler)和应用程序管理器(Applications Manager,ASM)。 调度器 调度器根据容量、队列等限制条件(如每个队列分配一定的资源,最多执行一定数量的作业等),将系统中的资源分配给各个正在运行的应用程序。应用程序管理器 应用程序管理器负责管理整个系统中所有应用程序,包括应用程序提交、与调度器协商 资源以启动 ApplicationMaster、监控 ApplicationMaster 运行状态并在失败时重新启动它等。

AM:用户提交的每个应用程序均包含一个 AM,与RM通信获取运行任务的资源,对运行在Container的任务进行资源调度。在任务完成后通知RM,回收资源

Container:真正运行的任务的容器,与AM进行通信,报告AM作业运行情况

NodeManager:每一台机器框架的代理,是执行应用程序的容器,监控应用程序的资源使用情况 (CPU,内存,硬盘,网络 ) 并且向调度器汇报。

yarn工作原理

1.用 户 向 YARN 中 提 交 应 用 程 序, 其 中 包 括 ApplicationMaster 程 序、 启 动ApplicationMaster 的命令、用户程序等。

2.ResourceManager 为 该 应 用 程 序 分 配 第 一 个 Container, 并 与 对 应 的 Node-Manager 通信,要求它在这个 Container 中启动应用程序的 ApplicationMaster。

3.ApplicationMaster 首 先 向 ResourceManager 注 册, 这 样 用 户 可 以 直 接 通 过ResourceManager查看应用程序的运行状态,然后它将为各个任务申请资源,并监控它的运行状态,直到运行结束,即重复步骤 4~7。

4.ApplicationMaster采用轮询的方式通过 RPC 协议向 ResourceManager 申请和领取资源。

5.一旦 ApplicationMaster 申请到资源后,便与对应的 NodeManager 通信,要求它启动任务。

6.NodeManager 为任务设置好运行环境(包括环境变量、JAR包、二进制程序等)后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务。

7.各个任务通过某个 RPC 协议向 ApplicationMaster 汇报自己的状态和进度,以让 ApplicationMaster 随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。

8.在应用程序运行过程中,用户可随时通过 RPC 向 ApplicationMaster 查询应用程序的当前运行状态。

9.应用程序运行完成后, ApplicationMaster 向 ResourceManager 注销并关闭

yarnWEBUI

可以通过ip:8088进入yarn页面,在这里可以看到资源使用情况和每个作业完成情况。

 

猜你喜欢

转载自blog.csdn.net/hzs33/article/details/88039618