zoukankan      html  css  js  c++  java
  • [Hadoop]-调优篇-YARN

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

    1.内存篇

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

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

      可以参考如下表格:

    每台机器的内存 系统需要的内存 HBASE需要的内存
    4G 1G 1G
    8GB 2G 1G
    16G 2G 2G
    24G 4G 4G
    48G 6G 8G
    64G 8G 8G
    72G 8G 8G
    96GB 12GB 16GB
    128GB 24GB 24GB
    255GB 32GB 32GB
    512GB 64GB 64GB

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

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

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

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

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

    配置文件 配置设置 默认值 计算值
    yarn-site.xml yarn.nodemanager.resource.memory-mb 8192 MB = containers * RAM-per-container
    yarn-site.xml yarn.scheduler.minimum-allocation-mb 1024MB = RAM-per-container
    yarn-site.xml yarn.scheduler.maximum-allocation-mb 8192 MB = containers * RAM-per-container
    yarn-site.xml (check) yarn.app.mapreduce.am.resource.mb 1536 MB = 2 * RAM-per-container
    yarn-site.xml (check) yarn.app.mapreduce.am.command-opts -Xmx1024m = 0.8 * 2 * RAM-per-container
    mapred-site.xml mapreduce.map.memory.mb 1024 MB = RAM-per-container
    mapred-site.xml mapreduce.reduce.memory.mb 1024 MB = 2 * RAM-per-container
    mapred-site.xml mapreduce.map.java.opts   = 0.8 * RAM-per-container
    mapred-site.xml mapreduce.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.xml yarn.nodemanager.resource.memory-mb = 52 * 2 =104 G
    yarn-site.xml yarn.scheduler.minimum-allocation-mb = 2G
    yarn-site.xml yarn.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.xml mapreduce.map.memory.mb = 2G
    mapred-site.xml mapreduce.reduce.memory.mb = 2 * 2=4G
    mapred-site.xml mapreduce.map.java.opts = 0.8 * 2=1.6G
    mapred-site.xml mapreduce.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/

  • 相关阅读:
    Day12——提权学习之第三方软件Radmin提权
    Day11——提权学习之第三方软件VNC提权
    Day10——提权学习之第三方软件FlashFXP及pcAnywhere提权
    Day9——提权学习之第三方软件FileZilla提权
    Day8——提权学习之第三方软件G6-FTP提权
    Day7——提权学习之第三方软件serv-u提权
    Day6——提权学习之Oracle数据库提权学习总结
    Memcached 未授权访问漏洞 CVE-2013-7239
    恭喜tes获得夏季赛冠军
    有关xss的小日记
  • 原文地址:https://www.cnblogs.com/NightPxy/p/9212430.html
Copyright © 2011-2022 走看看