[Yarn基础]-- Yarn资源分配

背景

在 2018年 11月的某一天,我发现 spark-submit 设置的资源参数未生效( –executor-cores 10),仔细排查后定位是Yarn 的分配策略使用有误,由于我们集群是使用 Ambari 安装的,未修改Yarn默认的分配策略(org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator),所以导致 集群的 cpu 没有充分利用,每个 Container 只会分配 1core ,而Memory 则被榨干。
解决方法:修改分配策略为—> org.apache.hadoop.yarn.util.resource. DominantResourceCalculator

Yarn 的分配策略

我们可以使用YARN中的Capacity Scheduler来管理群集容量。然后使用Capacity Scheduler DefaultResourceCalculator 或 DominantResourceCalculator 分配可用资源。
YARN中的基本调度单元是队列。每个队列的容量指定可用于提交到队列的应用程序的群集资源的百分比。
那么可以在层次结构中设置队列,以反映使用群集资源的组织,group 和个人所需的数据库结构,资源要求和访问限制。

  1. 如果你希望资源计算仅考虑用于资源计算的可用内存,则可以使用 DefaultResourceCalculator。使用 DefaultResourceCalculator 时,将根据可用内存分配资源,而不会考虑 用户显示指定的 cpu core 数量。

  2. 如果你有多种资源类型,则使用 DominantResourceCalculator 来启用CPU,GPU和 Memory scheduler。主导资源计算器基于资源分配的Dominant Resource Fairness(DRF)模型。DRF旨在在混合工作负载集群中的不同类型的进程之间公平地分配CPU,GPU和内存资源。

举例
用户A运行 CPU 繁重的任务:DRF会为用户A运行的任务分配更多的CPU和更少的内存
用户B运行 内存繁重的任务:DRF会为用户B运行的任务分配更少的CPU和更多的内存
在单个资源情况下,所有作业都请求相同的资源,DRF会降低该资源的最大最小公平性,也就是说集群资源有限的情况下,DRF 会按照调度策略分配。

Yarn 调度策略

YARN(MRv2)和MapReduce(MRv1)计算框架支持以下调度程序:

  1. FIFO - 根据到达时间的先后顺序分配资源。
  2. Fair Scheduler - 将资源分配给加权池,每个池内都有公平共享。在配置池的调度策略时,域资源公平性(DRF)是一种公平调度器。
  3. Capacity - 通过每个池中的FIFO调度为池分配资源。

YARN和MapReduce的调度程序默认值为:

名称/厂商 Cloudera Hortonworks
Yarn CDH 5和CDH 4将默认设置为Fair Scheduler;
但是Cloudera推荐Fair Scheduler
默认为 FIFO ;
资源分配使用 Capacity Scheduler’s DefaultResourceCalculator
MapReducer CDH 5和CDH 4将默认设置为Fair Scheduler。
但是Cloudera推荐Fair Scheduler
未知

讨论

为了减少不必要的运维成本开销(因为修改配置需要重启 Yarn 、HDFS、Hive和 Oozie等组件),那么在安装和部署集群时,就要先考虑好集群各个组件的配置。
关于 Yarn 需要注意:

  1. 资源分配策略
    org.apache.hadoop.yarn.util.resource. DominantResourceCalculator
  2. 修改java参数
    ApplicationMaster 内存(yarn.app.mapreduce.am.resource.mb) > ApplicationMaster Java 最大堆栈
  3. 修改nodemanager的目录
    保证目录名称一致、不要将小盘目录添加到 nm 上
  4. 修改允许链接申请资源的用户
    有 Kerberos 认证时,需要考虑这个问题

参考

  • https://docs.hortonworks.com/HDPDocuments/HDP3/HDP-3.1.0/data-operating-system/content/about_yarn_resource_allocation.html
  • https://www.cloudera.com/documentation/enterprise/5-11-x/topics/admin_schedulers.html
  • https://www.cloudera.com/documentation/enterprise/5-11-x/topics/cdh_ig_yarn_tuning.html
  • https://archive.cloudera.com/cdh5/cdh/5/hadoop/hadoop-yarn/hadoop-yarn-site/FairScheduler.html
  • https://archive.cloudera.com/cdh5/cdh/5/hadoop/hadoop-yarn/hadoop-yarn-site/CapacityScheduler.html

你可能感兴趣的:(Hadoop,CDH)