Yarn是什么
yarn是一个资源调度平台,主要负责给 运算程序 提供 服务器运算资源 的,相当于一个操作系统平台,而mapreduce则可以看作是一个应用程序。
基本架构
- 组件:
- ResourceManger: 处理客户端的请求、监控NodeManager和Application、资源的分配与调度
- NodeManager:管理单个节点上的资源、处理ResourceManager和ApplicationMaster的命令
- ApplicationMaster:为应用程序申请资源并分配、负责数据的切分、任务的监控和容错
- Contains:封装某个节点上的资源,比如内存、磁盘、CPU等等、
工作机制![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/f9704d4570ce820632ef4fa596c84230.png)
- MR提交到客户端所在节点
- 申请Application
- ResourceMaanger将申请到的资源路径返回去
- 将资源提交到HDFS上
- 提交完毕申请运行mrAppMaster
- ResourceManager会把请求转成一个Task
- 会有Nodemanager接到这个任务并创建Contains,产生一个mrAppMaster
- Contains把资源从HDFS上面copy到本地
- 申请执行mapTask
- ResourceManager将mapTask分配给另外两个NodeManager,两个NM接收到任务并创建Contains
- MRAppMaster发送启动脚本,然后那两个NodeManager接收并启动MapTask,MapTask对数据进行分区排序
- NodeManager执行完毕,mrAppMaster向ResourceManager申请容器执行ReduceTask、
- ReduceTask 获取到 MapTask上的数据
- 执行完毕,Mr向RM申请注销自己
资源调度器
Hadoop作业调度主要有三种
1. FIFO,先进先出:谁先来限制性谁
2. 容量调度器:多个队列,每个队列事FIFO
3. 公平调度器:缺额大的优先执行(缺额是指每个job理想情况下获得的计算资源和实际获得的计算资源的差距)