YARN产生背景
Hadoop1.x时:
MapReduce: Master/Slave结构,1个JobTracker带多个TaskTracer。
MapReduce1.x存在的问题:
1、单点故障&节点压力大不易扩展
2、资源利用率低、运维成本高
HDFS2后才有了YARN:
YARN:不同计算框架可以共享同一个HDFS集群上的数据,享受整体的资源调度。
XXX on YARN的好处:与其他计算框架共享集群资源,按资源需要分配,进而提高集群资源利用率。
XXX: Spark/MapReduce/Storm/Flink
YARN架构
●Yet Another Resource Negotiator
●通用的资源管理系统
●为上层应用提供统一的资源管理和调度
1) ResourceManager:RM
整个集群同一时间提供服务的RM只有一个(生产会有主备)
处理客户端的请求:例如提交一个作业,杀死一个作业
监控NM,一旦NM挂掉,该NM上的任务需要告诉AM来决定如何处理
2)NodeManager:NM
整个集群中有多个,负责自己本身节点资源管理和使用
定时向RM汇报本节点的资源使用情况
接收并处理来自RM的各种命令:例如启动Container
处理来自AM的命令
3)ApplicationMaster :AM
每一个应用程序对应一个:MR、Spark,负责应用程序的管理
为应用程序向RM申请资源(core,memory),分配给内部task
需要与NM通信:启动/停止task,task是运行在Container里,AM也是运行在Container里
4)Container
封装了CPU、Memory等资源的一个容器
是一个任务运行环境的抽象
5) Client
提交作业
查看作业运行进度
杀死作业
YRAN执行流程
1、Client向ResourceManager提交作业;
2、ResourceManager去通知任意一个NodeManager启动一个Container来运行ApplicationMaster;
3、ApplicationMaster向ResourceManager注册,为task向ResourceManager申请资源;
4、ApplicationMaster获取到资源后,在相对应NodeManager上的启动Container来运行task;
ApplicationMaster(按照YARN标准实现MapReduce ApplicaitonMaster, Spark ApplicaitonMaster)
在YRAN之上,是可以运行多种不同作业(多种ApplicationMater)的一个操作系统。
YRAN环境搭建
/etc/hadoop/目录下配置文件:
MapReduce作业提交到YARN上运行
使用hadoop jar命令: