YARN运行原理
yarn的前世今生
首先在hadoop1.0版本中,存在的最大问题就是资源管理的问题!
随着技术的发展,人们已经不在满足hadoop集群中只使用mapreduce一个计算框架,人们更希望有一套合理的管理机制来控制整个集群的资源。
在hadoop中启动yarn的命令: ./start-yarn.sh
- RescoueceManager 是全局资源管理器
- NodeManager 是节点资源任务管理器
我们可以理解成RM和NM就是Yarn
Yarn的基本架构
Yarn在总体设计思想上和HDFS差不多的都是主从关系(Master/Slave)
在Hdfs中NameNode是主节点, datanode是从节点
在Yarn中RM是主节点,NM是从节点
详解RM的组成部分
- 调度器: Scheduler
- 就是为了让我们每一个节点都利用起来,合理的分配和调度的管理器,值得注意的是,调度器真的是一个纯调度器,它不负责从事任何具体的应用程序相关的工作
- 调度器分为三种:容量调度器、公平调度器、队列调度器
- 应用程序管理器:Application Manager
- AM主要是负责接收client端传输的job请求,为应用程序分配第一个Container(容器/资源池)来运行我们第一个Application Master, 还有就是负责监控Application Master, 并且在失败的时候重启 Application Master
- 当我们正常提交一个MR任务的时候,我们会在后台jps查看进程的时候会多了一个MRAppMaster的进程:ApplicationMaster
- 首先ApplicationMaster就是一个java程序,只不过他的类名:MRAppMaster
- ApplicationMaster负责监控MAP任务和reduce任务,用户提交的每一个程序都会产生一个AM, 这个AM就是负责整个任务的管理者
- Application Master主要功能
- 与RM调度器RS协商获取执行资源
- 与NM通信通信,以启动任务、停止任务;其中涉及到一个东西:资源池/容器(contaniner)
- 监控所有旗下的任务的执行状态,如果失败则会重启任务来申请资源
- Contaniner
- contaniner是Yarn中的抽象资源,它封装了某个节点的多维度的资源:如内存,CPU,磁盘,网络,IO
- 资源池主要是将节点的资源切分出来组成一个可以单独运行任务(的容器用来运行任务