• YARN和MapReduce的内存设置參考


    怎样确定Yarn中容器Container,Mapreduce相关參数的内存设置,对于初始集群,由于不知道集群的类型(如cpu密集、内存密集)我们须要依据经验提供给我们一个參考配置值,来作为基础的配置。

    完毕这一任务有两种方式,确定YARN和MapReduce的内存设置,我们能够使用HDP工具脚本进行内存配置设定

    执行hdp-configuration-utils.py 这个Python脚本(下载地址:hdp-configuration-utils来计算YARN、MapReduce须要的内存,执行下面命令

    python hdp-configuration-utils.py options

    当中可选项例如以下:

    选项

    描写叙述

    -c CORES

    每一个客户机的核数目

    -m MEMORY

    每一个客户机拥有的内存总数

    -d DISK

    每一个客户机拥有的磁盘数目

    -k HBASE

    假设Hbase安装了为”True”,否则为”False”

    注:须要python26的执行环境

    我们能够使用-h或-help来显示描写叙述选项的帮助信息。

    样例

    执行下面的命令

    python hdp-configuration-utils.py -c 16 -m 64 -d 4 -k True

    结果例如以下:

    1.png

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

    接下来我们将描写叙述怎样基于特定的硬件,手工的设置YARN和MapReduce内存。

    YARN能够考虑集群中全部节点的可用的计算机资源。

    基于可用的资源,YARN会沟通协调应用程序(如:mapReduce)须要的资源。YARN会为每一个应用提供对应的容器Container。容器Container是YARN的基本处理单元,是内存和CPU资源的一种封装。

    在Hadoop集群中。平衡内存RAM、处理器cpu和磁盘的使用是很重要的。作为一般的推荐,为每一个磁盘和每一个核分配两个容器,为集群的利用率提供了最好的平衡。

    当为一个集群决定合适的YARN和MapReduce内存设置时,从可用的硬件资源開始。注意每一个节点的下面值:

    RAM(内存的数量)

    CORES(CPU的核数)

    DISKS(磁盘的数目)

    整个针对YARN和MapReduce可用的RAM数,应该考虑预留的内存。

    预留的内存主要用于系统进程占用和其他Hadoop进程(如Hbase)。

    预留的内存=保留栈内存+Hbase预留内存(假设Hbase是部署在同一台机器上)

     

    我们一般会使用下表来决定预留内存的大小

    每一个节点的总内存

    推荐系统保留的内存

    推荐为hbase保留的内存

    4GB

    1GB

    1GB

    8GB

    2GB

    1GB

    16GB

    2GB

    2GB

    24GB

    4GB

    4GB

    48GB

    6GB

    8GB

    64GB

    8GB

    8GB

    72GB

    8GB

    8GB

    96GB

    12GB

    16GB

    128GB

    24GB

    24GB

    256GB

    32GB

    32GB

    512GB

    64GB

    64GB

    接下来我们计算决定每一个节点同意的最大容器的数目。我们能够使用下列公式:

    containers = min (2*CORES, 1.8*DISKS, (Total available RAM) /MIN_CONTAINER_SIZE)

    当中DISKS是參数每台机器中dfs.data.dirs參数的数目值。MIN_CONTAINER_SIZE是最小的容器大小(RAM)。这个值是依赖于RAM的可用数目——小的内存节点,最小的容器大小应该更小。

    容器推荐值

    每一个节点的总内存

    推荐的最小容器大小

    小于4GB

    256MB

    在4GB和8GB之间

    512MB

    在8GB和24GB

    1024MB

    大于24GB

    20148MB

    终于的计算结果决定了每一个容器的RAM的数目。

    RAM-per-container = max(MIN_CONTAINER_SIZE, (Total Available RAM) / containers))

    由于这些计算,YARN和MapReduce设置例如以下

    配置文件

    配置设定

    计算值

    Yarn-site.xml

    yarn.nodemanager.resource.memorymb

    =containers*RAM-per-container

    Yarn-site.xml

    yarn.scheduler.minimum-allocationmb

    = RAM-per-container

    yarn-site.xml

    yarn.scheduler.maximum-allocationmb

    =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

    mapred-site.xml

    yarn.app.mapreduce.am.resource.mb

    = 2 * RAM-per-container

    mapred-site.xml

    yarn.app.mapreduce.am.commandopts

    = 0.8 * 2 * RAM-per-container

    注:在安装好后,yarn-site.xml and mapred-site.xml位于文件夹/etc/Hadoop/conf文件夹

     

    举例说明:

    集群节点拥有12个CPU核,48GB内存和12块磁盘

    保留内存(Reserved Memory)=6GB系统预留内存+(假设有Hbase)8GB的Hbase内存

    最小的容器大小(Min container size)=2GB

    含有的容器数(containers)=min(2*12,1.8*12,(48-6)/2)=min(24,21.6,21)=21

    每一个容器的RAM(RAM-per-container)=max(2,(48-6)/21)=max(2,2)=2

    依据上述样例计算出来的值

    相关阅读:
    Python: 什么是*args和**kwargs
    python实现获取电脑IP、主机名、Mac地址
    python操作oracle完整教程
    python连接oracle数据库报错"DatabaseError: DPI-1047: 64-bit Oracle Client library cannot be loaded: "解决方案
    ORACLE_BASE、ORACLE_HOME有什么区别
    Java的JAVA_HOME、Path、CLASSPATH环境变量小结,可以借助这三个的配置去理解Oracle中的那几个环境变量的配置作用
    python连接Oracle的方式以及过程中遇到的问题
    hadoop学习笔记(六):hadoop全分布式集群的环境搭建
    CentOS7安装jdk教程
    在线用户列表
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/7209877.html
  • Copyright © 2020-2023  润新知

    配置

    计算值

    yarn.nodemanager.resource.memory-mb

    = 21 * 2 = 42*1024 MB

    yarn.scheduler.minimum-allocation-mb

    = 2*1024 MB