Yarn
Hadoop2.x版本出现
角色
-
ResourceManager管理集群资源 -
NodeManager管理各个结点自身资源 -
AppMaster一次任务调度的领导 -
Container容器,分配资源用于一个Task的执行
资源管理
RM(ResourceManager),了解集群中所有结点的资源信息。
NM(NodeManager)掌握本台机器的资源信息,并需要定期向RM汇报自己的资源信息。
MapReduce on Yarn
-
MR-Cli将任务所需文件(Jar(代码)、XML(参数)、切片信息(输入数据))上传到HDFS -
MR-Cli到RM上申请执行这个任务所需的 - RM找一台较为空闲的NM启动一个
Container,并放射一个AppMaster,用于调度本次任务 -
AppMaster从HDFS下载切片信息,再到RM上申请资源 - RM再通过
AppMaster申请的信息,再通过NM开启对应的Container - 这些
Container再到AppMaster反向注册信息 -
AppMaster再将Jar \ XML发到Container,反射调用方法执行,完毕之后,报告对应信息给AppMaster -
AppMaster再将信息报告给RM - 计算框架都有Task失败重试的机制
优点
- 解决了单点故障问题,由于每一个任务由一个AppMaster进行调度,且可进行AppMaster出错重试,从而使单点故障影响到多个任务进行问题不存在。
- 解决了单点压力过大问题,每一个任务由一个AppMaster进行调度,而每一个AppMaster都是由集群中资源较为充足的结点进行启动,调度任务,起到一个负载均衡的作用。
- 完成了资源管理和任务调度的解耦,Yarn只负责对集群资源的管理,各个计算框架只要继承了AppMaster,就可以共同使用Yarn资源管理,更加充分地利用集群资源。
Yarn更新解决了什么问题?
在1.x版本时,JobTracker和TaskTracker是常服务,资源管理和任务调度的耦合,而在2.x版本之后,Yarn将二者分离,只有资源管理成为了常服务,而任务调度则变成只有任务在调度时,才启用的临时服务。