- Hadoop1.x中MapReduce存在的问题:
- 基于MapReduce:Master/Slave架构,1个JobTracker带多个TaskTracker
- 存在JobTracker单点问题。
- 不能支持除了MapReduce作业之外的其他作业(比如Spark作业)
- 基于MapReduce:Master/Slave架构,1个JobTracker带多个TaskTracker
- XXX on YARN:
- 底层共享同一个HDFS集群上的数据
- YARN作为接口层(统一接口抽象、不同实现)
- 各种作业可以运行在YARN之上:
- MapReduce 离线批处理(batch)
- Tez 交互式处理(Interactive)
- HBase 实时在线处理(online)
- Storm 流式处理(Streaming)
- Spark 内存处理(In-memory)
- YARN架构
5) Client提交作业查询作业的运行进度杀死作业
- 负责集群资源管理
1)ResourceManager: RM整个集群同一时间提供服务的RM只有一个,负责集群资源的统一管理和调度处理客户端的请求: 提交一个作业、杀死一个作业监控我们的NM,一旦某个NM挂了,AM应该进行处理
2) NodeManager: NM整个集群中有多个,负责自己本身节点资源管理和使用定时向RM汇报本节点的资源使用情况接收RM、AM的命令
- 启动Container,运行Task、AM
- 负责为作业(job)调度资源
3) Application Master : AM负责作业的管理(在这里,作业也叫做Application)一个作业对应一个为作业向RM申请资源(core、memory),分配给内部task需要与NM通信:启动/停止task(task是运行在NM上的)
4) Container封装了CPU、Memory等资源的一个容器是 task、AM 运行环境的抽象
- YARN执行流程
- Client提交作业到RM
- RM就近选取NM,
- NM启动AM(启动一个Container,AM运行其中)
- AM向RM注册(从而,Client可以查询作业运行情况)
- AM同时向 RM申请资源(可以启动的Container)
- 根据申请到的资源,AM与集群中的NM通信
- NM启动Task(启动一个Container,Task运行其中)
- YARN环境搭建
1)mapred-site.xml<property><name>mapreduce.framework.name</name><value>yarn</value></property>
2)yarn-site.xml<property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property>
3) 启动YARN相关的进程sbin/start-yarn.sh
4)验证ps uxResourceManagerNodeManager
5)停止YARN相关的进程sbin/stop-yarn.sh
- 提交MapReduce(MR)作业到YARN上运行:
- 使用hadoop jar 运行一个jar、mainClass、args...
- share/hadoop/mapreduce/目录,有一些MapReduce的example