Hadoop Yarn架构及任务提交流程

一、Yarn架构图
在这里插入图片描述
图片来自官网

二、Yarn架构的主要组件

1、ResourceManager

这是一个全局性组件,负责整个集群资源管理。其两个主要的组件分别为Scheduler(调度器)和 ApplicationsManager(应用管理器)。

Scheduler

调度器Scheduler是支持可插拔的,用于根据不同的队列、应用等来划分集群资源,如 CapacityScheduler 按照容量调度、FairScheduler 公平调度。

ApplicationsManager

其作用是负责接收应用的提交请求、然后协商第一个container用于运行该应用的ApplicationMaster,并且在ApplicationMaster失败时负责重启该ApplicationMaster。

2、ApplicationMaster

每个应用都有一个 ApplicationMaster,这个 ApplicationMaster 负责向 Scheduler 请求资源,运行这个应用需要多少资源就向 Scheduler 请求多少资源。

请求资源到位以后,协商NodeManager启动对应的container,并调度任务执行,监控任务运行状态,通过心跳定时向RM报告任务信息。

扫描二维码关注公众号,回复: 10765076 查看本文章

3、NodeManager

每台机器对应一个NodeManager,对 container 负责,监控所在机器上的资源使用率情况,包括CPU、内存、磁盘、带宽等,并通过心跳定时将这些信息报告给ResourceManager。RM需要知道这些信息来进行资源分配、协调。

资源单位:container

Yarn资源调度单位是 container ,每个 container 包含一定数量的CPU核、内存、磁盘、带宽等,调度器根据应用的资源请求大小对资源进行封装,最终大小为最小划分单元的整数倍,如未指定,最小划分单元以默认为主。

三、Yarn上应用提交执行流程

执行流程

1、客户端准备好任务相关的资源,JAR包、依赖包、配置文件等,向 ResourceManager 请求提交应用;
2、ResourceManager 响应请求,进行权限及集群负载情况检查,如果通过,将任务提交到等待队列,等待调度;
3、如果有资源可用,ResourceManager选择一个 NodeManager,并要求 NodeManager 启动一个 container 来运行该任务的 ApplicationMaster;
4、ApplicationMaster 向 ResourceManager 请求运行任务所需的资源;
5、调度器 Scheduler 响应 ApplicationMaster 的资源请求,并根据资源调度策略分配资源,返回资源信息给ApplicationMaster;
6、ApplicationMaster 根据调度器返回的资源信息,协商对应 NodeManager 启动 container,以便在 container 中运行任务;
7、ApplicationMaster 调度任务运行,并监控任务运行的状态(由 container 和 ApplicationMaster 的心跳通信完成),定时向 ResourceManager 汇报任务的状态信息。
8、ApplicationMaster 调度任务运行完毕,释放 container 资源。

在这个过程中,如果碰到异常的对应处理

ResourceManager 失败:其他备 ResourceManager 接管,通知 ApplicationMaster 重启

NodeManager 失败:ResourceManager 监控到 NodeManager,通知给 ApplicationMaster, ApplicationMaster 做后续处理(任务失败的,重新调度)

ApplicationMaster 失败:ResourceManager 重新启动 ApplicationMaster,已经完成的任务不需重新调度

前边第7点或许会问个问题?任务的状态为什么要报给 ResourceManager, 原因在于 ResourceManager 记录了任务的状态信息之后,如果 ApplicationMaster 失败,或者 NodeManager 失败,在 ResourceManager 重启 ApplicationMaster 之后,就能从RM那里知道哪些任务失败了,只将失败的任务重新调度运行即可。

发布了95 篇原创文章 · 获赞 5 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43878293/article/details/104588889