yarn是什么?
yarn是hadoop集群的资源管理系统,是hadoop2中引入的。最初的目的是为了改善MapReduce的实现。
hadoop为什么引入yarn?
解释这个问题之前我们先来了解一下hadoop1中mapreduce的运行机制。
具体流程如下:
1).客户端通过submit()方法提交作业
2).submit()方法会创建一个内部的JobSummiter实例,并且调用submitJobInternal()方法提交作业,JobSummiter向JobTracker请求一个新的作业ID,该实例会检查本次作业是否可执行(比如:检查输出路径,计算作业的输入分片等),如果可执行会将运行所需要的作业资源(JAR、配置文件等)上传到文件系统(HDFS),
3).JobTracker接受到提交任务请求后,会放到一个内部队列里中,交由作业调度器(Job Scheduler)进行调度并初始化任务,从文件系统中获取客户端已经好的输入分片,(每个分片计算一个map),reduce任务数量由setNumReduceTask()方法设置
4).TaskTracker会定期向JobTracker发送“心跳”,表明TaskTracker是否存活,同时“心跳”是两者之间的消息通道,当TaskTracker空闲后,会通过“心跳”发送给JobTrac