说明,感谢亮哥长期对我的帮助,此处多篇文章均为亮哥带我整理。以及参考诸多博主的文章。如果侵权,请及时指出,我会立马停止该行为;如有不足之处,还请大佬不吝指教,以期共同进步。
1.Yarn
1.1 Yarn 是什么?
YARN是Hadoop2.0版本新引入的资源管理系统,直接从MR1演化而来。
核心思想:将MP1中JobTracker的资源管理和作业调度两个功能分开,分别由ResourceManager和ApplicationMaster进程来实现。
1)ResourceManager:负责整个集群的资源管理和调度。
2)ApplicationMaster:负责应用程序相关的事务,比如任务调度、任务监控和容错等。
YARN的出现,使得多个计算框架可以运行在一个集群当中。
1)每个应用程序对应一个ApplicationMaster。
2)目前可以支持多种计算框架运行在YARN上面比如MapReduce、Storm、Spark、Flink等。
1.2 YARN的基本架构
从YARN的架构图来看,它主要由ResourceManager和ApplicationMaster、NodeManager、
ApplicationMaster和Container等组件组成。
ResourceManager(RM)
1)处理客户端请求;
2)启动或监控ApplicationMaster;
3)监控NodeManager;
4)资源的分配与调度。
NodeManager(NM)
1)单个节点上的资源管理;
2)处理来自ResourceManager上的命令;
3)处理来自ApplicationMaster上的命令。
ApplicationMaster(AM)
1)负责数据的切分;
2)为应用程序申请资源并分配给内部的任务;
3)任务的监控与容错。
Container
对任务运行环境进行抽象,封装CPU、内存等多维度的资源以及环境变量、启动命令等任务运行相关的信息。
比如内存、CPU、磁盘、网络等,当AM向RM申请资源时,RM为AM返回的资源便是用Container表示的。
YARN会为每个任务分配一个Container,且该任务只能使用该Container中描述的资源。
1.3 MapReduce on YARN
1、MapReduce on TARN
1)YARN负责资源管理和调度;
2)ApplicationMaster负责任务管理。
2、MapReduce ApplicationMaster
1)MRAppMaster;
2)每个MapReduce启动一个MRAppMaster;
3)MRAppMaster负责任务切分、任务调度、任务监控和容错。
3、MRAppMaster任务调度
1)YARN将资源分配给MRAppMaster;
2)MRAppMaster进一步将资源分配给内部任务。
4、MRAppMaster容错
1)MRAppMaster运行失败后,由YARN重新启动;
2)任务运行失败后,由YARN重新申请资源。
1.4 Yarn工作流程
1.5 Spark on YARN
Driver: 用户编写的程序的main函数就运行在driver上面,用户调用spark的api驱动driver进行工作,
比如计划任务(schedule)、分发任务、收集结果等。
Cluster Manager:指yarn、Mesos等集群管理者。
Executor:实际执行任务的进程,运行在集群中的节点上。