基础架构
1.ResourceManager(RM)主要作用于整个集群
2.NodeManager(NM)主要作用 单节点
3.ApplicationMaster(AM)作用于每一个作业
4.Container 容器
其中RM和NM是从集群方面来看
AM与Container则是从作业角度来看
在提交一个MR任务运行时,实际我们会把一个任务拆分成很多来执行,如设置reducer的分区数来设置任务个数
ResourceManager
负责整个集群系统的资源管理和分配。
Yarn平台的主节点,主要用于接收各种任务,有两个(主备),构建成高可用。
主要作用
- 处理客户端请求;
- 启动或监控ApplicationMaster;
- 监控NodeManager;
- 资源的分配与调度
RM包括Scheduler(定时调度器)和ApplicationManager(应用管理器)。
- Schedular是一个资源调度器,它主要负责协调集群中各个应用的资源分配,保障整个集群的运行效率。负责调度Containers,不会关心应用程序监控及其运行状态等信息。
- ApplicationManager应用程序管理的功能:负责接收job的提交请求,为应用分配第一个Container来运行ApplicationMaster;还有就是负责监控ApplicationMaster,并在遇到失败时重启ApplicationMaster运行的Container
NodeManager
Yarn平台的从节点,主要用于处理ResourceManager分配的任务,任务实际是在NM上执行的。主要作用
- 和ResourceManager保持同步
- 跟踪Node的状态
- 监控Container的生命周期,监控Container使用的资源.
- 管理Container生成的日志
负责接收处理来自RM的资源分配请求,分配具体的Container给作业。
负责监控并报告Container使用信息给RM。NM只负责管理自身的Container,它并不知道运行在它上面应用的信息。负责管理应用信息的组件是AM
在NM注册到RM之后,它就会不间断的向RM发送heartbeat,如果RM有需要它执行的指令,就作为响应发送给它。
NM也可以在RM的指示下,杀掉Container
ApplicationMaster
运行在Container中。向ResourceManager申请资源并和NodeManager协同工作来运行应用的各个任务,然后跟踪它们状态及监控各个任务的执行,遇到失败的任务还负责重启它。管理YARN内运行的应用程序的每个task。
- 为应用程序申请资源并进一步分配给内部任务。
- 任务监控与容错
- 负责协调来自RM的资源,并通过NM监视任务的执行和资源使用情况。
和RM保持连接,定期向ResourceManager发送heartbeat.
计算一个Application需要的资源通过ResourceRequest的形式,跟RM沟通,让RM给它分配Container
和NM沟通来加载Container跟踪Container的状态处理Container故障或者Node故障的问题
在Yarn框架中,RM只负责告诉AM哪些Containers可以用,AM还需要去找NM请求分配具体的Container。
Container
一个动态资源分配单位,它将内存、cpu、磁盘、网络等资源封装在一起,从而限定每个任务使用的资源量。是具体执行应用task(如map task、reduce task)的基本单位。
- Container是一个动态资源分配单位,它将内存、cpu、磁盘、网络等资源封装在一起,从而限定每个任务使用的资源量。
- 具体执行应用task(如map task、reduce task)的基本单位
- 一个节点会运行多个Container,但一个Container不会跨节点。
- 任何一个job或application必须运行在一个或多个Container中
流程
常用命令
- yarn application -list查看集群任务
- yarn application -kill 名称 杀掉任务
- yarn logs -applicationID 任务名 查看日志
- yarn queue -status 队列名:查看队列
- yarn node -list -all 查看node的状态
通过配置文件查看集群所选择的调度算法,容量调度器
查看集群内存
查看队列