栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

yarn的目标就是实现(yarn中的任务有)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

yarn的目标就是实现(yarn中的任务有)

文章目录

前言一、Yarn基础架构二、Yarn工作机制

容量调度器(Capacity Scheduler)公平调度器(Fair Scheduler) 三、Yarn生产环境核心参数


前言

Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序则相当于运行于操作系统之上的应用程序。


一、Yarn基础架构

YARN主要由ResourceManager、NodeManager、ApplicationMaster和Container等组件构成。

    ResourceManager(RM)

    处理客户端请求监控NodeManager启动监控ApplicationMaster资源的分配与调度 NodeManager(NM)主要作用

    管理单个节点上的资源处理来自ResourceManager的命令处理来自ApplicationMaster的命令 ApplicationMaster(AM)作用

    为应用程序申请资源并分配给内部任务任务的监控与容错 container容器

    container是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等

二、Yarn工作机制


(1) MR程序提交到客户端所在节点,通过main方法执行了waitForCompletion方法后创建YarnRunner,YarnRunner向RM申请一个application资源
(2) RM返回给application资源的提交路径以及application_id
(3) YarnRunner提交job运行所需资源,包括该job所需切片的信息(job.split)、job在Hadoop集群中的参数配置信息(job.xml)和使用的jar包(wc.jar);这些资源文件需在job.submit()方法提交成功后才会在.staging文件中生成(当然里面还包含crc校验文件的sucess标志文件)
(4) 资源提交完成后YarnRunner向RM申请运行mrAppMaster
(5) RM会在内部将用户的请求初始化一个Task,然后放入的任务队列里面等待执行
(6) 等到NodeManager空闲后领取到Task任务便创建container容器
(7) container容器在里面启动mrAppMaster
(8) container容器读取job资源,获取到了job切片信息,向RM申请MapTask容器用来执行Map任务
(9) 其他空闲NodeManager空闲后领取任务创建对应切片个数的container容器
(10)之后mrAppMaster发送程序脚本启动对应的Map任务,yarnChild即为Map任务进程
(11)当Map任务运行完成落磁盘之后,mrAppMaster会再次向RM申请执行ReduceTask任务的资源
(12)reduce向map获取分区的数据
(13)当reduce任务也运行完成之后,mrAppMaster通知RM并注销自己,同时相关的MapReduce的资源也释放掉

容量调度器(Capacity Scheduler)

目前,Hadoop作业调度器主要有三种:FIFO、容量(Capacity Scheduler)和公平(Fair Scheduler)。
Apache Hadoop3.1.3默认的资源调度器是Capacity Scheduler。
CDH框架默认调度器是Fair Scheduler。
具体设置详见:yarn-default.xml文件


    The class to use as the resource scheduler.
    yarn.resourcemanager.scheduler.class
org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler


特点:

多队列:每个队列可配置一定的资源量,每个队列采用FIFO调度策略容量保证:管理员可为每个队列设置资源最低保证和资源使用上限灵活性:如果一个队列中的资源有剩余,可以暂时共享给那些需要资源的队列,而一旦该队列有新的应用程序提交,则其他队列借调的资源会归还给该队列。多租户:
支持多用户共享集群和多应用程序同时运行。
为了防止同一个用户的作业独占队列中的资源,该调度器会对同一用户提交的作业所占资源量进行限定。 公平调度器(Fair Scheduler)

    与容量调度器相同点
    (1)多队列:支持多队列多作业
    (2)容量保证:管理员可为每个队列设置资源最低保证和资源使用上线
    (3)灵活性:如果一个队列中的资源有剩余,可以暂时共享给那些需要资源的队列,而一旦该队列有新的应用程序提交,则其他队列借调的资源会归还给该队列。
    (4)多租户:支持多用户共享集群和多应用程序同时运行;为了防止同一个用户的作业独占队列中的资源,该调度器会对同一用户提交的作业所占资源量进行限定。与容量调度器不同点

    核心调度策略不同
    容量调度器:优先选择资源利用率低的队列
    公平调度器:优先选择对资源的缺额比例大的每个队列可以单独设置资源分配方式
    容量调度器:FIFO、 DRF
    公平调度器:FIFO、FAIR、DRF

三、Yarn生产环境核心参数

    ResourceManager相关

    yarn.resourcemanager.scheduler.class	            配置调度器,默认容量
    yarn.resourcemanager.scheduler.client.thread-count     ResourceManager处理调度器请求的线程数量,默认50
    

    NodeManager相关

    yarn.nodemanager.resource.detect-hardware-capabilities     是否让yarn自己检测硬件进行配置,默认false
    yarn.nodemanager.resource.count-logical-processors-as-cores     是否将虚拟核数当作CPU核数,默认false
    yarn.nodemanager.resource.pcores-vcores-multiplier	        虚拟核数和物理核数乘数,例如:4核8线程,该参数就应设为2,默认1.0
    yarn.nodemanager.resource.memory-mb	            NodeManager使用内存,默认8G
    yarn.nodemanager.resource.system-reserved-memory-mb  NodeManager为系统保留多少内存
    以上二个参数配置一个即可
    yarn.nodemanager.resource.cpu-vcores          NodeManager使用CPU核数,默认8个
    yarn.nodemanager.pmem-check-enabled        是否开启物理内存检查限制container,默认打开
    yarn.nodemanager.vmem-check-enabled        是否开启虚拟内存检查限制container,默认打开
    yarn.nodemanager.vmem-pmem-ratio            虚拟内存物理内存比例,默认2.1
    

    Container相关

    yarn.scheduler.minimum-allocation-mb	容器最最小内存,默认1G
    yarn.scheduler.maximum-allocation-mb	容器最最大内存,默认8G
    yarn.scheduler.minimum-allocation-vcores	容器最小CPU核数,默认1个
    yarn.scheduler.maximum-allocation-vcores	容器最大CPU核数,默认4个
    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/773675.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号