目录
yarn资源调度
yarn主要就是为了调度资源,调度分两级
- 一级调度管理
- 计算资源管理(CPU,内存,网络IO,磁盘)
- Appmaster生命周期管理 (每一个应用执行的情况,都需要汇报给ResourceManager)
- 二级调度管理
- App内部的计算模型管理 (AppMaster的任务精细化管理)
- 多样化的计算模型
详见官方文档:http://hadoop.apache.org/docs/r2.7.5/hadoop-yarn/hadoop-yarn-site/YARN.html
架构图
主要组件
- ResourceManager:接受用户计算任务请求,启动/监控ApplicationMaster,监控nodemanager,资源分配与调度
- NodeManager:执行计算节点,
- 管理抽象容器container
- 接受ApplicationMaster的命令
- 负责接受主节点分配的任务
- 单个节点上的资源管理和任务管理
- ApplicationMaster:任务的管理器,用户没提交一个任务,ResourceManager就会启动一个ApplicationMaster(简称appmaster)
- 数据切分
- 申请任务执行的资源,申请的是container,资源是根据mapreduce.map.memory.mb和mapreduce.reduce.memory.mb这两个配置项为每个map或reduce申请内存
- 负责协调来自ResourceManager的资源,开通NodeManager监视容的执行和资源使用(CPU,内存等的资源分配)
- container:资源分配的单位,拥有一定的cpu和内存,一个container种只能运行一个maptask或reducetask
- JobHistoryServer:用于查看执行的历史任务
- TimeLineServer:hadoop2.4.0以后出来的新特性 主要用于查看正在执行的任务情况
主要访问端口
hdfs的http://192.168.52.100:50070/
yarn集群http://192.168.52.100:8088/cluster
jobhistory历史任务http://192.168.52.100:19888
任务调度
- FIFO Scheduler(队列调度器)先进先出使用
- 资源优先满足第一个任务,如果第一个任务用完了资源,第二个任务只能等待
- capacity Scheduler 容量的调度器appache默认
- 集群种的资源均匀划分成好几块,每个块内执行队列调度器;块与块之间资源不共享,会出现一个块内资源使用紧张,另外一个块资源空闲,导致资源利用率不高
- Fair Scheduler 公平调度器chd默认
- 优先分配资源满足给第一个任务
- 如果第一个任务占满资源,提交第二个任务时,会从第一个任务种分一部分资源出来
- 资源利用率比较高,并且任务也不会暂停
- 具体使用哪一种调度器在配置yarn-site.xml当中的配置
- yarn.resourcemanager.scheduler.class 这个属性的配置
常用的参数
- container分配最小内存: yarn.scheduler.minimum-allocation-mb
- container分配最大内存:yarn.scheduler.maximum-allocation-mb
- container的最小虚拟内核个数:yarn.scheduler.minimum-allocation-vcores
- container的最大虚拟内核个数:yarn.scheduler.maximum-allocation-vcores
- nodeManager可以分配的内存大小:yarn.nodemanager.resource.memory-mb
- nodeManage虚拟内核使用大小:yarn.nodemanager.resource.cpu-vcores