YARN资源管理与任务调度

1.1 Y A R N YARN YARN的架构
1.1.1 功能
  • 分布式资源管理与任务调度框架。
  • 资源管理:将整个集群的所有机器的 C P U CPU CPU和内存进行统一化管理
    • 每一台机器运行程序时,使用多少资源,都由 Y A R N YARN YARN进行分配
  • 任务调度:当有多个任务一起提交时,资源的分配和任务的优先级
1.1.2 架构

主从架构

  • 主节点: r e s o u r c e m a n a g e r resourcemanager resourcemanager
    • 接收所有任务的提交
    • 管理所有的从节点
    • 全局集群的资源管理和任务调度
    • 每个 n o d e m a n a g e r nodemanager nodemanager运行所有程序能够使用的资源
  • 从节点: n o d e m a n a g e r nodemanager nodemanager
    • 启动程序的运行环境:计算进程
    • 使用以及管理这台机器的资源,每个程序再这台机器能使用多少。
1.2 Y A R N YARN YARN的任务运行流程
1.2.1 架构图

在这里插入图片描述

1.2.2 架构说明
  1. 客户端向 y a r n yarn yarn提交 J o b Job Job,首先找到 r e s o u r c e m a n a g e r resourcemanager resourcemanager主节点分配资源。
  2. r e s o u r c e m a n a g e r resourcemanager resourcemanager开启一个 C o n t a i n e r Container Container,再 C o n t a i n e r Container Container中运行一个 A p p l i c a t i o n Application Application M a n a g e r Manager Manager,并且随机找一台 n o d e m a n a g e r nodemanager nodemanager启动 A p p l i c a t i o n Application Application M a s t e r Master Master来管理这个 j o b job job
  3. A p p l i c a t i o n Application Application M a s t e r Master Master R e s o u r c Resourc Resource S c h e d u l e r Scheduler Scheduler申请资源和指令。
  4. R e s o u c e Resouce Resouce S c h e d u l e r Scheduler Scheduler把需要用到的资源和指令封装发送给 A p p l i c a t i o n Application Application M a s t e r Master Master
  5. A p p l i c a t i o n Application Application M a s t e r Master Master 将获取到的资源分配给各个 n o d e m a n a g e r nodemanager nodemanager n o d e m a n a g e r nodemanager nodemanager根据资源和指令启动 M a p T a s k MapTask MapTask任务
  6. M a p T a s k MapTask MapTask任务运行完成后给 A p p l i c a t i o n Application Application M a s t e r Master Master进行汇报
  7. A p p l i c a t i o n Application Application M a s t e r Master Master通知 R e d u c e T a s k ReduceTask ReduceTask M a p T a s k MapTask MapTask中拉取数据
  8. R e d u c e T a s k ReduceTask ReduceTask去所有的 M a p T a s k MapTask MapTask中拉取自己分区的数据,进行聚合。
  9. R e d u c e T a s k ReduceTask ReduceTask运算完成后,给 A p p l i c a t i o n Application Application M a s t e r Master Master汇报结果
  10. A p p l i c a t i o n Application Application M a s t e r Master Master再把计算结果汇总到 A p p l i c a t i o n Application Application M a n a g e r Manager Manager中。
1.3 组件介绍
  • A p p l i c a t i o n Application Application M a n a g e r Manager Manager :整个 Y A R N YARN YARN中所有应用的管理者
  • R e s o u r c e Resource Resource S c h e d u l e r Scheduler Scheduler:负责整个 Y A R N YARN YARN集群的资源分配
    • 返回信息是 C o n t a i n e r Container Container
    • 这个程序由哪些机器执行,每台机器能使用的内存和 C P U CPU CPU,每台机器要执行的指令任务
  • A p p l i c a t i o n Application Application M a s t e r Master Master :负责管理运行的程序
    • 资源的申请和向所有 n o d e m a n a g e r nodemanager nodemanager分配计算任务
    • 监控所有的 M a p T a s k MapTask MapTask r e d u c e T a s k reduceTask reduceTask,保证所有的 T a s k Task Task都运行成功过
      • 如果由 T a s k Task Task失败,会重新分配这个任务。
1.4 Y A R N YARN YARN的资源分配配置

资源分配由配置再 y a r n − s i t e . x m l yarn-site.xml yarnsite.xml的参数决定

配置属性含义默认值
y a r n . n o d e m a n a g e r . r e s o u r c e . m e m o r y − m b yarn.nodemanager.resource.memory-mb yarn.nodemanager.resource.memorymb每台 N o d e M a n g e r NodeManger NodeManger能够使用的最大物理内存数 8192 M 8192M 8192M
y a r n . n o d e m a n a g e r . r e s o u r c e . c p u − v c o r e s yarn.nodemanager.resource.cpu-vcores yarn.nodemanager.resource.cpuvcores每台 N o d e M a n g e r NodeManger NodeManger能够使用的最大物理 C P U CPU CPU核数 8 8 8
y a r n . s c h e d u l e r . m i n i m u m − a l l o c a t i o n − m b yarn.scheduler.minimum-allocation-mb yarn.scheduler.minimumallocationmb每个应用最少申请的内存 1024 M 1024M 1024M
y a r n . s c h e d u l e r . m a x i m u m − a l l o c a t i o n − m b yarn.scheduler.maximum-allocation-mb yarn.scheduler.maximumallocationmb每个应用最多申请的内存 8192 M 8192M 8192M
y a r n . s c h e d u l e r . m i n i m u m − a l l o c a t i o n − v c o r e s yarn.scheduler.minimum-allocation-vcores yarn.scheduler.minimumallocationvcores每个应用最少申请的 C P U CPU CPU核数 1 1 1
y a r n . s c h e d u l e r . m a x i m u m − a l l o c a t i o n − v c o r e s yarn.scheduler.maximum-allocation-vcores yarn.scheduler.maximumallocationvcores每个应用最多申请的 C P U CPU CPU核数,这个值一般等于最大申请内存的 G B GB GB 32 32 32
y a r n . n o d e m a n a g e r . v m e m − p m e m − r a t i o yarn.nodemanager.vmem-pmem-ratio yarn.nodemanager.vmempmemratio虚拟内存和真实物理内存的比率 2.1 2.1 2.1
y a r n . n o d e m a n a g e r . p m e m − c h e c k − e n a b l e d yarn.nodemanager.pmem-check-enabled yarn.nodemanager.pmemcheckenabled关闭物理内存检查 f a l s e false false
y a r n . n o d e m a n a g e r . v m e m − c h e c k − e n a b l e d yarn.nodemanager.vmem-check-enabled yarn.nodemanager.vmemcheckenabled关闭虚拟内存检查 f a l s e false false
1.5 YARN的任务调度
  • F I F O FIFO FIFO:先进先出

    • 单队列实现,单个队列拥有整个 Y A R N YARN YARN的所有资源
    • 程序先提交就享有当前所有的资源,只有等当前程序运行结束,后面的下一个程序才开始运行
  • C a p a c i t y Capacity Capacity:容量调度 < A p a c h e 默 认 的 调 度 机 制 > <Apache默认的调度机制> <Apache>

    • 多队列的并行,每个队列内部还是 F I F O FIFO FIFO
    • 为每个队列分配固定的资源,当程序运行时,提交到那个队列,就享有这个队列的所有资源
    • 资源动态抢占,当前的队列资源不足的时候,其他队列资源空闲,可以进行调用。
    • y a r n − s i t e . x m l yarn-site.xml yarnsite.xml的参数为: y a r n . r e s o u r c e m a n a g e r . s c h e d u l e r . c l a s s yarn.resourcemanager.scheduler.class yarn.resourcemanager.scheduler.class,参数值为: o r g . a p a c h e . h a d o o p . y a r n . s e r v e r . r e s o u r c e m a n a g e r . s c h e d u l e r . c a p a c i t y . C a p a c i t y S c h e d u l e r org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler
  • F a i r Fair Fair:公平调度 < C D H 版 本 默 认 的 调 度 机 制 > <CDH版本默认的调度机制> <CDH>

    • 多队列并行的,并且每个队列内部是可以进行程序并发,队列中的资源共享。
    • 支持资源抢占
    • 可以分配队列的优先级
    • y a r n − s i t e . x m l yarn-site.xml yarnsite.xml的参数为: y a r n . r e s o u r c e m a n a g e r . s c h e d u l e r . c l a s s yarn.resourcemanager.scheduler.class yarn.resourcemanager.scheduler.class,参数值为: o r g . a p a c h e . h a d o o p . y a r n . s e r v e r . r e s o u r c e m a n a g e r . s c h e d u l e r . f a i r . F a i r S c h e d u l e org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairSchedule org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairSchedule
  • 公平调度对应的参数

    属性名称含义
    y a r n . s c h e d u l e r . f a i r . a l l o c a t i o n . f i l e yarn.scheduler.fair.allocation.file yarn.scheduler.fair.allocation.file指定公平调度的配置文件 e t c / h a d o o p / f a i r − s c h e d u l e r . x m l etc/hadoop/fair-scheduler.xml etc/hadoop/fairscheduler.xml
    y a r n . s c h e d u l e r . f a i r . u s e r − a s − d e f a u l t − q u e u e yarn.scheduler.fair.user-as-default-queue yarn.scheduler.fair.userasdefaultqueue没有指定队列名时,是否使用用户名作为队列名称 t r u e true true
    y a r n . s c h e d u l e r . f a i r . p r e e m p t i o n yarn.scheduler.fair.preemption yarn.scheduler.fair.preemption是否允许资源抢占 t r u e true true
    y a r n . s c h e d u l e r . f a i r . p r e e m p t i o n . c l u s t e r − u t i l i z a t i o n − t h r e s h o l d yarn.scheduler.fair.preemption.cluster-utilization-threshold yarn.scheduler.fair.preemption.clusterutilizationthreshold最大抢占比例 0.8 0.8 0.8
    y a r n . s c h e d u l e r . f a i r . s i z e b a s e d w e i g h t yarn.scheduler.fair.sizebasedweight yarn.scheduler.fair.sizebasedweight是否启用权重 t r u e true true
    y a r n . s c h e d u l e r . f a i r . a s s i g n m u l t i p l e yarn.scheduler.fair.assignmultiple yarn.scheduler.fair.assignmultiple是否允许分配多个container t r u e true true
    y a r n . s c h e d u l e r . f a i r . m a x . a s s i g n yarn.scheduler.fair.max.assign yarn.scheduler.fair.max.assign如果允许,最多分配多少个 20 20 20
    y a r n . s c h e d u l e r . f a i r . l o c a l i t y . t h r e s h o l d . n o d e yarn.scheduler.fair.locality.threshold.node yarn.scheduler.fair.locality.threshold.node放弃等待优先本地计算的节点比例,-1表示都不放弃 − 1 -1 1
    y a r n . s c h e d u l e r . f a i r . l o c a l i t y . t h r e s h o l d . r a c k yarn.scheduler.fair.locality.threshold.rack yarn.scheduler.fair.locality.threshold.rack放弃等待优先机架计算的节点比例,-1表示都不放弃 − 1 -1 1
    y a r n . s c h e d u l e r . f a i r . a l l o w − u n d e c l a r e d − p o o l s yarn.scheduler.fair.allow-undeclared-pools yarn.scheduler.fair.allowundeclaredpools是否允许创建未定义的队列 t r u e true true
    y a r n . s c h e d u l e r . f a i r . u p d a t e − i n t e r v a l − m s yarn.scheduler.fair.update-interval-ms yarn.scheduler.fair.updateintervalms表示重新计算公平调度的间隔,单位毫秒 500 500 500
    • 公平调度对应的配置文件
    
        <?xml version="1.0"?>
    <allocations>
        <queue name="sample_queue">
          <minResources>10000 mb,0vcores</minResources>
          <maxResources>90000 mb,0vcores</maxResources>
          <maxRunningApps>50</maxRunningApps>
          <maxAMShare>0.1</maxAMShare>
          <weight>2.0</weight>
          <schedulingPolicy>fair</schedulingPolicy>
          <queue name="sample_sub_queue">
            <aclSubmitApps>charlie</aclSubmitApps>
            <minResources>5000 mb,0vcores</minResources>
          </queue>
        </queue>
      
        <queueMaxAMShareDefault>0.5</queueMaxAMShareDefault>
      
        <!—- Queue 'secondary_group_queueue' is a parent queue and may have
             user queues under it -->
        <queue name="secondary_group_queue" type="parent">
        <weight>3.0</weight>
        </queue>
        
        <user name="sample_user">
          <maxRunningApps>30</maxRunningApps>
        </user>
        <userMaxAppsDefault>5</userMaxAppsDefault>
        
        <queuePlacementPolicy>
          <rule name="specified" />
          <rule name="primaryGroup" create="false" />
          <rule name="nestedUserQueue">
              <rule name="secondaryGroupExistingQueue" create="false" />
          </rule>
          <rule name="default" queue="sample_queue"/>
        </queuePlacementPolicy>
    </allocations>
      ```
    
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值