zoukankan      html  css  js  c++  java
  • 确定Hadoop内存配置设置

    一. 手动计算YARN和MapReduce内存配置设置

    YARN和MapReduce的总可用RAM应考虑保留内存。Reserved Memory是系统进程和其他Hadoop进程(例如HBase)所需的RAM。

    1. 保留内存

    保留内存=为堆栈内存保留+为HBase内存保留(如果HBase在同一节点上)

    保留的内存建议:

    每个节点的总内存推荐的预留系统内存推荐的预留HBase内存
    4GB 1GB 1GB
    8GB 2GB 1GB
    >=16GB 总内存1/8 总内存1/8

    2. 确定每个节点允许的最大容器数。

    容器数量= min(2 * CORES,1.8 * DISKS,(总可用RAM)/ MIN_CONTAINER_SIZE)

    其中MIN_CONTAINER_SIZE是最小容器大小(在RAM中)。此值取决于可用的RAM量 - 在较小的内存节点中,最小容器大小也应该更小。下表概述了建议值:

    每个节点的总RAM建议的最小容器尺寸
    小于4 GB 256 MB
    介于4 GB和8 GB之间 512 MB
    介于8 GB和24 GB之间 1024 MB
    超过24 GB 2048 MB

    3. 确定每个容器的RAM量:

    RAM-per-container = max(MIN_CONTAINER_SIZE,(总可用RAM)/容器数量))

    配置文件配置设置价值计算
    yarn-site.xml yarn.nodemanager.resource.memory-mb = containers * RAM-per-container
    yarn-site.xml yarn.scheduler.minimum-allocation-mb = RAM-per-container
    yarn-site.xml yarn.scheduler.maximum-allocation-mb = containers * RAM-per-container
    mapred-site.xml mapreduce.map.memory.mb = RAM-per-container
    mapred-site.xml mapreduce.reduce.memory.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
    yarn-site.xml (check) yarn.app.mapreduce.am.resource.mb = 2 * RAM-per-container
    yarn-site.xml (check) yarn.app.mapreduce.am.command-opts = 0.8 * 2 * RAM-per-container

    4. 在YARN上配置MapReduce内存设置

    MapReduce在YARN之上运行,并利用YARN Containers来安排和执行Map and Reduce任务。在YARN上配置MapReduce资源利用率时,需要考虑三个方面:

    1. 每个Map和Reduce任务的物理RAM限制。

    2. 每个任务的JVM堆大小限制。

    3. 每个任务将接收的虚拟内存量。

    您可以为每个Map和Reduce任务定义最大内存量。由于每个Map和Reduce任务都将在一个单独的Container中运行,因此这些最大内存设置应等于或大于YARN最小Container分配。

    对于上一节中使用的示例群集(48 GB RAM,12个磁盘和12个核心),Container的最小RAM(yarn.scheduler.minimum-allocation-mb)= 2 GB。因此,我们将为Map任务容器分配4 GB,为Reduce任务容器分配8 GB。

    在 mapred-site.xml:

    <name> mapreduce.map.memory.mb </ name> 
    <value> 4096 </ value>
    <name> mapreduce.reduce.memory.mb </ name>
    <value> 8192 </ value>

    每个Container都将运行JVM以执行Map和Reduce任务。JVM堆大小应设置为低于Map和Reduce Containers的值,以便它们在YARN分配的Container内存的范围内。

    在 mapred-site.xml:

    <name> mapreduce.map.java.opts </ name> 
    <value> -Xmx3072m </ value>
    <name> mapreduce.reduce.java.opts </ name>
    <value> -Xmx6144m </ value>

    上述设置配置Map和Reduce任务将使用的物理RAM的上限。每个Map和Reduce任务的虚拟内存(物理+分页内存)上限由允许每个YARN Container的虚拟内存比确定。此比率使用以下配置属性设置,默认值为2.1:

    在 yarn-site.xml:

    <name> yarn.nodemanager.vmem-pmem-ratio </ name> 
    <value> 2.1 </ value>

    通过我们示例集群上的上述设置,每个Map任务将接收以下内存分配:

    分配的物理RAM总量= 4 GB

    Map任务Container中的JVM堆空间上限= 3 GB

    虚拟内存上限= 4 * 2.1 = 8.2 GB

    例子

    群集节点具有12个CPU核心,48 GB RAM和12个磁盘。

    保留内存= 6 GB保留用于系统内存+(如果是HBase)8 GB用于HBase

    最小容器大小= 2 GB

    1. 如果没有HBase:

    容器数量= min(2 * 12,1.8 * 12,(48-6)/ 2)= min(24,21.6,21)= 21

    RAM-per-container = max(2,(48-6)/ 21)= max(2,2)= 2

    组态价值计算
    yarn.nodemanager.resource.memory-mb = 21 * 2 = 42 * 1024 MB
    yarn.scheduler.minimum.allocation-mb = 2 * 1024 MB
    yarn.scheduler.maximum.allocation-mb = 21 * 2 = 42 * 1024 MB
    mapreduce.map.memory.mb = 2 * 1024 MB
    mapreduce.reduce.memory.mb = 2 * 2 = 4 * 1024 MB
    mapreduce.map.java.opts = 0.8 * 2 = 1.6 * 1024 MB
    mapreduce.reduce.java.opts = 0.8 * 2 * 2 = 3.2 * 1024 MB
    yarn.app.mapreduce.am.resource.mb = 2 * 2 = 4 * 1024 MB
    yarn.app.mapreduce.am.command-opts = 0.8 * 2 * 2 = 3.2 * 1024 MB

    2. 如果包含HBase:

    容器数量= min(2 * 12,1.8 * 12,(48-6-8)/ 2)= min(24,21.6,17)= 17

    RAM-per-container = max(2,(48-6-8)/ 17)= max(2,2)= 2

    组态价值计算
    yarn.nodemanager.resource.memory-mb = 17 * 2 = 34 * 1024 MB
    yarn.scheduler.minimum.allocation-mb = 2 * 1024 MB
    yarn.scheduler.maximum.allocation-mb = 17 * 2 = 34 * 1024 MB
    mapreduce.map.memory.mb = 2 * 1024 MB
    mapreduce.reduce.memory.mb = 2 * 2 = 4 * 1024 MB
    mapreduce.map.java.opts = 0.8 * 2 = 1.6 * 1024 MB
    mapreduce.reduce.java.opts = 0.8 * 2 * 2 = 3.2 * 1024 MB
    yarn.app.mapreduce.am.resource.mb = 2 * 2 = 4 * 1024 MB
    yarn.app.mapreduce.am.command-opts = 0.8 * 2 * 2 = 3.2 * 1024 MB
  • 相关阅读:
    程序员必须知道的几个Git代码托管平台
    PHP扩展迁移为PHP7扩展兼容性问题记录
    PHP 7 来了,PHP 6 去哪儿了?
    十步轻松搞定IIS+PHP环境搭建
    .Net Discovery系列之十二-深入理解平台机制与性能影响(下)
    .Net Discovery系列之十一-深入理解平台机制与性能影响 (中)
    .Net Discovery系列之十-深入理解平台机制与性能影响(上)
    .Net Discovery 系列之七--深入理解.Net垃圾收集机制(拾贝篇)
    .Net Discovery 系列之六--深入浅出.Net实时编译机制(下)
    协程Coroutine
  • 原文地址:https://www.cnblogs.com/qzt666/p/10821675.html
Copyright © 2011-2022 走看看