1 YARN的发展
Yet Another Resource Negotiator
Hadoop 2.x 之后才出现
其他框架使用YARN
1.2 启动YARN
start-yarn.sh 之后会多出两个进程
ResourceManager (RM) 全局资源管理器
NodeManager (NM) 节点资源管理器
RM + NM 就是 YRAN(粗略理解)
2 YARN的基本架构
YARN的架构 和 HDFS 类似
Master RM
Slave NM
3 Resource Manager
RM 中 还有两个组成部分
3.1 Scheduler 调度器
- 为每个节点都运作起来
- 只是一个纯调度器 , 不负责监控程序
容量调度器 capacity
容量调度器详解 以队列为单位划分资源
公平调度器 fair
每个用户的资源都是一样的公平调度器详解
队列调度器 FIFO(default)
FIFO Scheduler把应用按提交的顺序排成一个队列,这是一个先进先出队列,在进行资源分配的时候,先给队列中最头上的应用进行分配资源,待最头上的应用需求满足后再给下一个分配,以此类推。队列调度器详解
调度器总结
务逻辑比较简单或者刚接触Hadoop的时候,建议使用FIFO调度器;
如果需要控制部分应用的优先级同时又想要充分利用集群资源的情况下,建议使用Capacity调度器;
如果想要多用户或者多队列公平的共享集群资源,那么就选用Fair调度器
3.2 App Manager 应用程序管理器
- 接收Client端传来的job
- 为MR程序 分配第一个Container 来运行第一个 App Master
- 监控 App Master 遇到失败的时候重启App Master
4 AppMaster (AM)
- 与RM的调度器协商获取资源
- 与NM通信 启动任务 停止任务 资源池Container
- 监控旗下的任务执行状态 如果失败则会重新启动来申请资源
当我们正常提交一个MR任务,
hadoop jar xxx.jar 命令
jps看下后台 会多了一个MRAppMaster的进程 也就是 ApplicationMaster
其实AppMaster 就是一个Java程序,类名为MRAppMaster 所以进程名字就如此
AM 负责监控map reduce 任务 ,用户提交一个MR 就会产生一个AM,AM即为整个任务的一个管理者
新增一个任务
5 Container
YARN的资源抽象化,类似于Docker中的Container,任何一个模块都在容器中
6 流程贯通