yarn核心配置参数说明

yarn作为hadoop的资源分配和调度的基础组件,有哪些相关的参数是和这个组件有关呢?

  1. ResourceManager相关
yarn.resourcemanager.scheduler.class    #配置调度器,apache yarn默认容量调度器,CDH默认公平调度器
yarn.resourcemanager.scheduler.client.thread-count    # ResourceManager处理调度器请求的现场数量,默认50
  1. NodeManager相关
yarn.nodemanager.resource.detect-hardware-capabilities    #是否让yarn自己检测硬件进行配置,默认false
yarn.nodemanager.resource.count-logical-processor-as-cores    #是否将虚拟核数当作CPU核数,默认false
yarn.nodemanager.resource.pcores-vcores-multiplier    #虚拟核数和物理核数乘数,默认为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
  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个

那在部署环境我们要怎么分配呢?
eg:3台服务器,每台配置4G内存,4核CPU,4线程,如果我们处理的是1G的文件进行数据的count统计,
那么就会有 1G/128M=8个MapTask 1个ReduceTask,1个MrAppMaster,平均下来就是每个节点有3个任务,
那我们按4 3 3 的比例分配10个任务。

那我们就按照上边的参数进行配置下我们的yarn-site.xml文件

<configuration>
    <property>
       <name>yarn.resourcemanager.hostname</name>
        <value>hadoop01</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <!-- 如果vmem、pmem资源不够,会报错,此处将资源监察置为false -->
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>
    <property>
        <name>yarn.nodemanager.pmem-check-enabled</name>
        <value>false</value>
    </property>
    <!-- 选择调度器。默认容量-->
    <property>
        <name>yarn.resourcemanager.scheduler.class</name>
        <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
    </property>
    <!--ResourceManager处理调度器请求的现场数量,一共3*4=12,留出几个供其他使用-->
    <property>
        <name>yarn.resourcemanager.scheduler.client.thread-count</name>
        <value>8</value>
    </property>
    <!--是否让yarn自动检测硬件进行配置-->
    <property>
        <name>yarn.nodemanager.resource.detect-hardware-capabilities</name>
        <value>false</value>
    </property>
    <!--是否将虚拟核数当作CPU核数 默认false-->
    <property>
        <name>yarn.nodemanager.resource.count-logical-processors-as-cores</name>
        <value>false</value>
    </property>
    <!--虚拟核数和物理核数乘数-->
    <property>
        <name>yarn.nodemanager.resource.pcores-vcores-multiplier</name>
        <value>1.0</value>
    </property>
    <!--nodemanager使用内存数,默认8g,但是服务器只有4G,修改为4g-->
    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>4096</value>
    </property>
    <!--nodemanager的CPU核数,默认设置为8个,但是服务器只有4核,修改为4个-->
    <property>
        <name>yarn.nodemanager.resource.cpu-vcores</name>
        <value>4</value>
    </property>
    <!--容器最小内存,默认1g-->
    <property>
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>1024</value>
    </property>
    <!--容器最大内存,默认8g,但是服务器只有4G,修改为2g-->
    <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>2048</value>
    </property>
    <!--容器最小CPU核数,默认1个-->
    <property>
        <name>yarn.scheduler.minimum-allocation-vcores</name>
        <value>1</value>
    </property>
    <!--容器最大CPU核数,默认4个,但是服务器只有4核,修改为2个-->
    <property>
        <name>yarn.schedluler.maximum-allocation-vcores</name>
        <value>2</value>
    </property>
    <!--虚拟内存和物理内存设置比例,默认2.1-->
    <property>
        <name>yarn.nodemanager.vmem-pmem-ratio</name>
        <value>2.1</value>
    </property>
</configuration>

按上边的配置修改,我们会得到最后更加符合我们服务器硬件参数的yarn资源集群。

posted @ 2021-04-26 01:01  Tenic  阅读(1622)  评论(0编辑  收藏  举报