手工计算YARN和MapReduce、tez内存配置设置

1.1.HDP YARN MapReduce参数调优建议

转自:https://blog.csdn.net/mnasd/article/details/81202908

1.1.1.RM的内存资源配置,配置的是资源调度相关

RM1:yarn.scheduler.minimum-allocation-mb 分配给AM单个容器可申请的最小内存(默认是1G)
RM2:yarn.scheduler.maximum-allocation-mb 分配给AM单个容器可申请的最大内存(默认是yarn.nodemanager.resource.memory-mb的值)

注:
最小值可以计算一个节点最大Container数量(可以适当调大一些,比如2GB)
一旦设置,不可动态改变

1.1.2.NM的内存资源配置,配置的是硬件资源相关

NM1:yarn.nodemanager.resource.memory-mb 节点最大可用内存
NM2:yarn.nodemanager.vmem-pmem-ratio 虚拟内存率,默认2.1 (可以是5,有些场景下如果内存不足,会导致任务跑失败)

注:
RM1、RM2的值均不能大于NM1的值
NM1可以计算节点最大最大Container数量,max(Container)=NM1/RM2

一旦设置,不可动态改变

1.1.3.AM内存配置相关参数,配置的是任务相关

AM1:mapreduce.map.memory.mb 分配给map Container的内存大小
AM2:mapreduce.reduce.memory.mb 分配给reduce Container的内存大小

l 这两个值应该在RM1和RM2这两个值之间
l AM2的值最好为AM1的两倍
l 这两个值可以在启动时改变

AM3:mapreduce.map.java.opts 运行map任务的jvm参数,如-Xmx,-Xms等选项
AM4:mapreduce.reduce.java.opts 运行reduce任务的jvm参数,如-Xmx,-Xms等选项。

注:
1、这两个值应该在AM1和AM2之间。

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

下面参考:https://docs.cloudera.com/HDPDocuments/HDP2/HDP-2.1.1/bk_installing_manually_book/content/rpm-chap1-11.html

HDP实用程序脚本是计算HDP内存配置设置的推荐方法,但也提供了手工计算YARN和MapReduce内存配置设置的信息,以供参考。

1.1.4.1.使用HDP实用程序脚本计算内存配置设置

这个章节介绍如何通过hdp-configuration-utils.py的Python脚本来计算YARN、MapReduce、Hive和Tez的内存。这些内存分配设置基于特定硬件。hdp-configuration-utils.py在HDP的套件文件(http://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.1.1/bk_installing_manually_book/content/rpm-chap1-9.html)中。

1.1.4.1.1.下载套件文件

我们提供了一系列的套件文件,包括script文件(scripts.zip)和配置文件(configuration_files.zip),可以通过以下方式下载此文件:
wget http://public-repo-1.hortonworks.com/HDP/tools/2.1.1.0/hdp_manual_install_rpm_helper_files-2.1.1.385.tar.gz

Hortonworks强烈建议您编辑和获取包含在伴生文件中的文件。
或者,您还可以将内容复制到~/.bash_profile中,以在您的环境中设置这些环境变量。
下面提供了创建Hadoop目录的示例脚本文件的快照。这个示例脚本文件将源文件包含在伴生文件中。

#!/bin/bash 
./users.sh 
./directories.sh

echo "Create datanode local dir"
mkdir -p $DFS_DATA_DIR;
chown -R $HDFS_USER:$HADOOP_GROUP $DFS_DATA_DIR;
chmod -R 750 $DFS_DATA_DIR;

echo "Create yarn local dir"
mkdir -p $YARN_LOCAL_DIR;
chown -R $YARN_USER:$HADOOP_GROUP $YARN_LOCAL_DIR;
chmod -R 755 $YARN_LOCAL_DIR;

echo "Create yarn local log dir"
mkdir -p $YARN_LOCAL_LOG_DIR;
chown -R $YARN_USER:$HADOOP_GROUP $YARN_LOCAL_LOG_DIR;
chmod -R 755 $YARN_LOCAL_LOG_DIR;
1.1.4.1.2.运行这个脚本

要运行hdp-configuration-util .py脚本,在包含脚本的文件夹中执行以下命令:

python hdp-configuration-utils.py <options>

有以下可选项:

可选项 描述
-c CORES 在每个节点上的cpu核数
-m MEMORY 每个节点的内存数量
-d DISKS 每个节点中磁盘数量
-k HBASE 如果HBASE安装了为True,反之为False

你可以使用-h或–help选项查看帮助和使用方法。
例如:

[root@hadoop5 hdp_manual_install_rpm_helper_files-2.1.1.385]# pwd
/root/hdp_manual_install_rpm_helper_files-2.1.1.385
[root@hadoop5 hdp_manual_install_rpm_helper_files-2.1.1.385]# ls
configuration_files  HDP-CHANGES.txt  readme.txt  scripts
[root@hadoop5 hdp_manual_install_rpm_helper_files-2.1.1.385]# cd configuration_files/
[root@hadoop5 configuration_files]# ls
core_hadoop  ganglia  hbase  hive  nagios  oozie  pig  sqoop  tez  webhcat  zookeeper
[root@hadoop5 configuration_files]# cd ../scripts/
[root@hadoop5 scripts]# ls
directories.sh  hdp-configuration-utils.py  usersAndGroups.sh  yarn-utils.py
[root@hadoop5 scripts]# python hdp-configuration-utils.py -c 16 -m 64 -d 4 -k True
 Using cores=16 memory=64GB disks=4 hbase=True
 Profile: cores=16 memory=49152MB reserved=16GB usableMem=48GB disks=4
 Num Container=8
 Container Ram=6144MB
 Used Ram=48GB
 Unused Ram=16GB
 yarn.scheduler.minimum-allocation-mb=6144
 yarn.scheduler.maximum-allocation-mb=49152
 yarn.nodemanager.resource.memory-mb=49152
 mapreduce.map.memory.mb=6144
 mapreduce.map.java.opts=-Xmx4096m
 mapreduce.reduce.memory.mb=6144
 mapreduce.reduce.java.opts=-Xmx4096m
 yarn.app.mapreduce.am.resource.mb=6144
 yarn.app.mapreduce.am.command-opts=-Xmx4096m
 mapreduce.task.io.sort.mb=1792
 tez.am.resource.memory.mb=6144
 tez.am.java.opts=-Xmx4096m
 hive.tez.container.size=6144
 hive.tez.java.opts=-Xmx4096m
 hive.auto.convert.join.noconditionaltask.size=1342177000
[root@hadoop5 scripts]#

在这里插入图片描述

1.1.4.1.3.手工计算YARN和MapReduce内存配置设置

YARN会考虑集群中每台机器上的所有可用计算资源。基于可用资源,基于可用的资源,YARN协商来自集群中运行的应用程序(如MapReduce)的资源请求,通过分配容器的方式YARN提供提供处理能力。容器是YARN处理能力的基本单元,是资源元素(内存和CPU等)的包装单元。
在集群中,平衡内存、处理(CPU核数)和磁盘的使用至关重要,以便处理不受任何集群资源的限制。作为一般建议,允许每个磁盘两个容器,每个核提供了集群利用率的最佳平衡。在为集群节点确定适当的YARN和MapReduce内存配置时,从可用的硬件资源开始。特别的,注意每个节点的下面的值:
RAM(内存大小)
CORES(CPU核数)
DISKS(硬盘数量)

YARN和MapReduce的总可用RAM应考虑预留内存。保留内存是系统进程和其他Hadoop进程(如HBase)所需的RAM。
Reserved Memory = Reserved for stack memory + Reserved for HBase Memory (If HBase is on the same node)

推荐的的保留内存:

每个node节点的总内存 推荐保留给系统的内存 推荐保留给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

接下来计算每个节点允许的最大的容器数量。下面的公式可以被使用:

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

其中MIN_CONTAINER_SIZE是最小的容器大小(RAM中),这个值取决于可用RAM的数量—在内存小的节点中,container的最小尺寸也应该更小。下表列出了推荐值。

每个节点总RAM数量 推荐的最小的container大小
小于4GB 256 MB
4GB 和 8GB之间 512 MB
8GB和24GB之间 1024 MB
大于24GB 2048 MB

最后的计算是确定每个容器的RAM数量:

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

用这些计算,YARN和MapReduce等参数的配置可以设置成如下:

配置文件 属性
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 (mapreduce中的参数配置) 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
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涂作权的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值