美文网首页
yarn和mapreduce资源调优

yarn和mapreduce资源调优

作者: 吃货大米饭 | 来源:发表于2019-07-11 15:37 被阅读0次

    1.yarn---Memory调优

    YARN允许用户配置每个节点上可用的物理内存资源,注意,这里是“可用的”,因为一个节点上的内存会被若干个服务共享,比如一部分给YARN,一部分给HDFS,一部分给HBase等,YARN配置的只是自己可以使用的,配置参数如下:
    (1)yarn.nodemanager.resource.memory-mb
    表示该节点上YARN可使用的物理内存总量,默认是8192(MB),注意,如果你的节点内存资源不够8GB,则需要调减小这个值,而YARN不会智能的探测节点的物理内存总量。
    (2)yarn.scheduler.minimum-allocation-mb
    单个容器可申请的最少物理内存量,默认是1024(MB),如果一个容器申请的物理内存量少于该值,则该对应的值改为这个数。
    (3) yarn.scheduler.maximum-allocation-mb
    单个容器可申请的最多物理内存量,默认是8192(MB)

    2.yarn---CPU调优

    目前的CPU被划分成虚拟CPU(CPU virtual Core),这里的虚拟CPU是YARN自己引入的概念,初衷是,考虑到不同节点的CPU性能可能不同,每个CPU具有的计算能力也是不一样的,比如某个物理CPU的计算能力可能是另外一个物理CPU的2倍,这时候,你可以通过为第一个物理CPU多配置几个虚拟CPU弥补这种差异。用户提交作业时,可以指定每个任务需要的虚拟CPU个数。在YARN中,CPU相关配置参数如下:
    (1)yarn.nodemanager.resource.cpu-vcores
    表示该节点上YARN可使用的虚拟CPU个数,默认是8,注意,目前推荐将该值设值为与物理CPU核数数目相同。如果你的节点CPU核数不够8个,则需要调减小这个值,而YARN不会智能的探测节点的物
    理CPU总数。
    (2)yarn.scheduler.minimum-allocation-vcores
    单个容器可申请的最小虚拟CPU个数,默认是1,如果一个容器申请的CPU个数少于该数,则该对应的值改为这个数
    (3)yarn.scheduler.maximum-allocation-vcores
    单个容器可申请的最多虚拟CPU个数,默认是4

    3.mapreduce---Memory调优
    (1)yarn.app.mapreduce.am.resource.mb
    MR AppMaster需要的内存,默认是1536M
    (2)yarn.app.mapreduce.am.command-opts
    MR AppMaster的Java opts ,默认是-Xmx1024m
    (3)mapreduce.map.memory.mb
    每个map task所需要的内存,默认是1024M。应该是大于或者等于Container的最小内存
    (4)mapreduce.reduce.memory.mb
    每个reduce task所需要的内存,默认是1024M
    (5)mapreduce.map.java.opts
    map task进程的java.opts,默认是-Xmx200m
    (6)mapreduce.reduce.java.opts
    reduce task进程的java.opts,默认是-Xmx200m

    特别注意:
    mapreduce.map.memory.mb >mapreduce.map.java.opts
    mapreduce.reduce.memory.mb >mapreduce.reduce.java.opts
    mapreduce.map.java.opts / mapreduce.map.memory.mb
    =0.70~0.80
    mapreduce.reduce.java.opts / mapreduce.reduce.memory.mb
    =0.70~0.80
    在yarn container这种模式下,JVM进程跑在container中,mapreduce.{map|reduce}.java.opts 能够通过Xmx设置JVM最大的heap的使用,
    一般设置为0.75倍的memory.mb,

    则预留些空间会存储java,scala code等

    4.mapreduce---CPU调优
    (1)mapreduce.map.cpu.vcores
    map task的虚拟核数,默认为1
    (2)mapreduce.reduce.cpu.vcores
    reduce task的虚拟核数,默认为1
    (3)yarn.app.mapreduce.am.resource.cpu-vcores
    am的虚拟核数,默认为1

    5.案例

    假设机器的物理配置 64G 16cores
    装完系统还剩 62G
    预留15~20% 14G:DN 4G + NM 1G=5G 9G

    DN进程: 生产4G
    1000m
    hadoop-env.sh
    HADOOP_NAMENODE_OPTS=-Xmx1024m
    HADOOP_DATANODE_OPTS=-Xmx4096m
    NM进程: 生产1G
    yarn-env.sh
    export YARN_RESOURCEMANAGER_HEAPSIZE=1024
    export YARN_NODEMANAGER_HEAPSIZE=1024
    部署同一台: 数据本地化
    NN RM 经常性部署同一台 说白了 集群节点少

    yarn.nodemanager.resource.memory-mb : 48G 计算总内存 固定经验计算值
    yarn.nodemanager.resource.cpu-vcores : 24

    yarn.scheduler.minimum-allocation-mb : 4G
    yarn.scheduler.minimum-allocation-vcores: 2

    yarn.scheduler.maximum-allocation-mb : 8G
    yarn.scheduler.maximum-allocation-vcores : 4 固定经验值(不要超过5个)

    6.参考文档

    http://blog.itpub.net/30089851/viewspace-2127851/
    http://blog.itpub.net/30089851/viewspace-2127850/

    相关文章

      网友评论

          本文标题:yarn和mapreduce资源调优

          本文链接:https://www.haomeiwen.com/subject/leerkctx.html