[Hadoop]-调优篇-YARN

本文详细介绍了YARN在内存和CPU资源方面的优化方法,并提供了具体的配置建议和计算公式,帮助读者更好地理解如何调整YARN参数以提高集群效率。

YARN作为资源调度管理组件,对YARN的的优化主要呈现在CPU和内存两方面

1.内存篇

  在YARN集群中,平衡内存,CPU和磁盘的资源是比较重要的.一般来说,每两个Container使用一块磁盘和一个CPU核可以是使资源得到比较充分的利用

  对YARN而言的内存可用资源,是指在排除操作系统或其它应用程序占用之外剩下的部分,才是可用资源

  可以参考如下表格:

每台机器的内存系统需要的内存HBASE需要的内存
4G1G1G
8GB2G1G
16G2G2G
24G4G4G
48G6G8G
64G8G8G
72G8G8G
96GB12GB16GB
128GB24GB24GB
255GB32GB32GB
512GB64GB64GB

  计算每台机器最多可以拥有多少个Container,可以使用下面的公式:

    containers = min (2*机器CPU核数, 1.8*机器上挂载的磁盘个数, (机器总内存) / MIN_CONTAINER_SIZE)

    说明: MIN_CONTAINER_SIZE是指container最小的容量大小,这需要根据具体情况去设置,可以参考下面的表格  

每台机器可用的内存Container最小值
小于4GB256MB
4GB到8GB之间512MB
8GB到24GB之间1024MB
大于24GB2048MB

  根据上面的计算后,YARN和MapReduce的资源最终可以这样设置

配置文件配置设置默认值计算值
yarn-site.xmlyarn.nodemanager.resource.memory-mb8192 MB= containers * RAM-per-container
yarn-site.xmlyarn.scheduler.minimum-allocation-mb1024MB= RAM-per-container
yarn-site.xmlyarn.scheduler.maximum-allocation-mb8192 MB= containers * RAM-per-container
yarn-site.xml (check)yarn.app.mapreduce.am.resource.mb1536 MB= 2 * RAM-per-container
yarn-site.xml (check)yarn.app.mapreduce.am.command-opts-Xmx1024m= 0.8 * 2 * RAM-per-container
mapred-site.xmlmapreduce.map.memory.mb1024 MB= RAM-per-container
mapred-site.xmlmapreduce.reduce.memory.mb1024 MB= 2 * RAM-per-container
mapred-site.xmlmapreduce.map.java.opts = 0.8 * RAM-per-container
mapred-site.xmlmapreduce.reduce.java.opts = 0.8 * 2 * RAM-per-container

  举个例子:  一台机器,128G内存、32核CPU的机器,挂载了7个磁盘

         根据上面的图表,系统保留内存为24G,在不使用HBASE的情况下,可以认为YARN的可用资源为104G

         可用资源104G,计算Container最大值为13个 <= min (2*32, 1.8* 7 , (128-24)/2) = min (64, 12.6 , 51) = 13

       每个Container平均内存大小为8G <=max (2, (124-24)/13) = max (2, 8) = 8

       可以支持平均8G,明显有点偏大(浪费)了,既然可以支持到平均8G,那就继续设置,降为2G,这样可以产生的更多的Container

配置文件配置设置计算值
yarn-site.xmlyarn.nodemanager.resource.memory-mb= 52 * 2 =104 G
yarn-site.xmlyarn.scheduler.minimum-allocation-mb= 2G
yarn-site.xmlyarn.scheduler.maximum-allocation-mb= 52 * 2 = 104G
yarn-site.xml (check)yarn.app.mapreduce.am.resource.mb= 2 * 2=4G
yarn-site.xml (check)yarn.app.mapreduce.am.command-opts= 0.8 * 2 * 2=3.2G
mapred-site.xmlmapreduce.map.memory.mb= 2G
mapred-site.xmlmapreduce.reduce.memory.mb= 2 * 2=4G
mapred-site.xmlmapreduce.map.java.opts= 0.8 * 2=1.6G
mapred-site.xmlmapreduce.reduce.java.opts= 0.8 * 2 * 2=3.2G

        另外还有几个参数:

          yarn.nodemanager.vmem-pmem-ratio:任务每使用1MB物理内存,最多可使用虚拟内存量,默认是2.1

          yarn.nodemanager.pmem-check-enabled:是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true

          yarn.nodemanager.vmem-pmem-ratio:是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true

          第一个参数的意思是当一个map任务总共分配的物理内存为2G的时候,该任务的container最多内分配的堆内存为1.6G,可以分配的虚拟内存上限为2*2.1=4.2G。

          照这样算下去,每个节点上YARN可以启动的Map数为104/2=52个

2.CPU篇

  相较内存的设置,CPU的要简单的多.因为YARN中引入了一个虚拟CPU的概念,YARN中的核都是指虚拟CPU.它的设计初衷是表述不同的CPU之间的计算能力差异.

  比如一个高性能CPU的计算能力是另一种便宜版的两倍,就可以在高性能这边设置1:2的物理虚拟核比.

  YARN的CPU设置如下:

    yarn.nodemanager.resource.cpu-vcores:表示该节点上YARN可使用的虚拟CPU个数,默认是8.

                        注意,目前推荐将该值设值为与物理CPU核数数目相同。如果你的节点CPU核数不够8个,则需要调减小这个值,而YARN不会智能的探测节点的物理CPU总数

    yarn.scheduler.minimum-allocation-vcores:单个任务可申请的最小虚拟CPU个数,默认是1,如果一个任务申请的CPU个数少于该数,则该对应的值改为这个数

    yarn.scheduler.maximum-allocation-vcores:单个任务可申请的最多虚拟CPU个数,默认是32

  这些默认值在实际生产集群中是不合适,生产集群一般都是高核服务器,这里应该以自己的集群重新调试参数.(比如一般的32核服务器,就要设置为31核,留一个操作系统)

 

3.调度器优化

  详见 YARN调度器篇

 

  参考: http://blog.itpub.net/30089851/viewspace-2127851/

转载于:https://www.cnblogs.com/NightPxy/p/9212430.html

### 回答1: Hadoop YARN (Yet Another Resource Negotiator) 是一个基于Hadoop的集群资源管理系统。Hadoop YARN Client是Hadoop YARN中的一部分,它是用来与YARN ResourceManager通信的客户端工具。 Hadoop YARN Client的主要功能是向YARN ResourceManager提交应用程序并获取集群的资源来执行这些应用程序。当一个应用程序需要在Hadoop集群上运行时,开发人员可以使用Hadoop YARN Client来编写和提交应用程序,然后该客户端将应用程序的相关信息发送给YARN ResourceManager。这些应用程序可以是MapReduce程序,也可以是其他类型的应用程序,例如Spark、Flink等。 使用Hadoop YARN Client,开发人员可以指定应用程序所需的计算资源和内存等配置参数。此外,Hadoop YARN Client还可以跟踪应用程序的状态,并显示有关应用程序执行进度和状态的相关信息。如果发生错误或异常,开发人员可以使用Hadoop YARN Client来取消或终止应用程序的执行。 Hadoop YARN Client利用YARN ResourceManager的资源度功能,将应用程序提交给ResourceManager后,ResourceManager将根据集群的资源情况来分配相应的资源给该应用程序。此外,Hadoop YARN Client还可以与NodeManager通信,以获取有关执行任务的节点的信息,并监视应用程序的进度。 总的来说,Hadoop YARN Client提供了一个方便的方式来提交和管理应用程序的执行,并与YARN ResourceManager和NodeManager进行通信,以获取资源和监视应用程序的状态。通过使用Hadoop YARN Client,开发人员可以更容易地在Hadoop集群上运行和管理各种类型的应用程序。 ### 回答2: Hadoop YARN客户端是Hadoop生态系统中的一个关键组件,用于与YARN资源管理器进行通信,并提交、监控和管理MapReduce作业或其他分布式计算任务。YARN(Yet Another Resource Negotiator)是Hadoop的资源管理器,负责集群资源的分配和任务的度。 Hadoop YARN客户端的主要功能包括作业的提交和监控。当用户想要运行一个MapReduce作业时,他们可以使用YARN客户端来提交该作业。YARN客户端将作业的执行所需要的资源需求和其他相关信息发送给YARN资源管理器。资源管理器根据集群中可用的资源和度策略来分配资源,并将作业的任务分配给相应的节点上的容器来执行。 同时,YARN客户端还可以监控作业的执行进度和状态。用户可以通过YARN客户端查询和获取作业的相关信息,如已完成的任务数、失败的任务数、运行时间等。这些信息对于实时监控作业的运行状况以及进行作业非常有帮助。 此外,YARN客户端还可以用于管理作业的生命周期。用户可以使用YARN客户端来杀死正在运行的作业或取消已提交但未开始执行的作业。这对于当用户不再需要某个作业时或出现意外情况需要中断作业时非常有用。 总之,Hadoop YARN客户端是Hadoop生态系统中负责与YARN资源管理器通信的关键组件。它提供了作业的提交、监控和管理的功能,帮助用户实现高效的分布式计算任务。 ### 回答3: Hadoop-YARN-Client是Hadoop生态系统中的一个组件,它是Hadoop资源管理器(YARN)的客户端库。YARNHadoop的第二代资源管理系统,它的目的是为集群中的各个工作负载提供资源度和管理服务。 Hadoop-YARN-Client的作用是允许用户通过编程方式与YARN交互,以便向集群提交应用程序,并监控和管理它们的执行。通过Hadoop-YARN-Client,用户可以以编程方式与YARN的应用程序客户端接口(API)进行交互,完成下列任务: 1. 提交应用程序:用户可以使用Hadoop-YARN-Client将一个应用程序提交给YARN。提交应用程序时,需要指定应用程序的类型、先级、所需资源等信息,并将应用程序的代码和依赖项打包成一个本地或分布式的Jar文件。 2. 监控应用程序:一旦应用程序被提交到YARN,用户可以使用Hadoop-YARN-Client监控应用程序的执行情况。用户可以查询应用程序的状态、进度和资源使用情况等信息。 3. 管理应用程序:用户可以使用Hadoop-YARN-Client管理应用程序的执行。例如,用户可以请求YARN增加或减少分配给应用程序的资源,或者终止应用程序的执行。 总之,Hadoop-YARN-Client是Hadoop生态系统中与YARN交互的关键组件之一。它为用户提供了一种便捷的方式来提交、监控和管理在YARN上执行的应用程序,让用户能够更好地利用集群资源和进行任务度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值