怎样确定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

结果例如以下:

手动计算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

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

YARN和MapReduce的内存设置參考的更多相关文章

  1. YARN和MapReduce的内存设置参考

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

  2. Ubuntu设置交换空间參考教程[图]

    假设你当前使用的Ubuntu系统,不管是虚拟机还是实体机,没有交换分区或交换分区空间不足,能够为其设置交换空间. 本文提供的是一种设置交换空间的简单方法. 如若转载,请注明博文地址及原作者(Risin ...

  3. Hadoop 2.6.0分布式部署參考手冊

    Hadoop 2.6.0分布式部署參考手冊 关于本參考手冊的word文档.能够到例如以下地址下载:http://download.csdn.net/detail/u012875880/8291493 ...

  4. 怎样通过Java程序提交yarn的mapreduce计算任务

    因为项目需求,须要通过Java程序提交Yarn的MapReduce的计算任务.与一般的通过Jar包提交MapReduce任务不同,通过程序提交MapReduce任务须要有点小变动.详见下面代码. 下面 ...

  5. 6. GC 调优(工具篇) - GC參考手冊

    进行GC性能调优时, 须要明白了解, 当前的GC行为对系统和用户有多大的影响. 有多种监控GC的工具和方法, 本章将逐一介绍经常使用的工具. 您应该已经阅读了前面的章节: 垃圾收集简单介绍 - GC參 ...

  6. win8硬盘安装Ubuntu14.04双系统參考教程

    硬盘安装,无需光盘.U盘.win8为主.Ubuntu14.04为辅.可将Windows或Ubuntu设置为开机默认启动项.在Ubuntu下可查看.操作Windows系统下的文件:适用于安装和14.04 ...

  7. 大数据系列4:Yarn以及MapReduce 2

    系列文章: 大数据系列:一文初识Hdfs 大数据系列2:Hdfs的读写操作 大数据谢列3:Hdfs的HA实现 通过前文,我们对Hdfs的已经有了一定的了解,本文将继续之前的内容,介绍Yarn与Yarn ...

  8. hadoop-集群管理(2)——内存设置

    http://www.cnblogs.com/yuechaotian/archive/2013/03/08/2949607.html 1. 内存 hadoop为各个守护进程(namenode,seco ...

  9. WPS2012交叉引用技巧,word比wps这点强更新參考文献

                WPS2012交叉引用技巧,word比wps这点强更新參考文献 到时生成仅仅有有一条线,好像WPS不能够,word能够,假设谁知道能够补充.^_^ 1.写论文,參考文献的改动非 ...

随机推荐

  1. BZOJ 4820 [Sdoi2017]硬币游戏 ——期望DP 高斯消元

    做法太神了,理解不了. 自己想到的是建出AC自动机然后建出矩阵然后求逆计算,感觉可以过$40%$ 用一个状态$N$表示任意一个位置没有匹配成功的概率和. 每种匹配不成功的情况都是等价的. 然后我们强制 ...

  2. poj3311Hie with the Pie

    Hie with the Pie Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7599   Accepted: 4088 ...

  3. java面试题之什么是多线程上下文切换

    多线程会共同使用一组计算机上的CPU,而线程数大于给程序分配的CPU数量时,为了让各个线程都有执行的机会,就需要轮流使用CPU.不同的线程切换使用CPU发生的数据切换等就是上下文切换

  4. el-select绑定值为对象时,报错[Vue warn]: <transition-group> children must be keyed: <ElTag>

    解决方法: <el-select v-model="syncParams.toSlaveList" multiple value-key="ip" pla ...

  5. APUE 学习笔记(五) 进程环境

    1.main函数 C程序总是从main函数开始执行,当内核执行C程序时,在调用main函数之前先调用exec函数从内核获取命令行参数和环境变量值   2.进程终止 正常终止: (1)在main函数内执 ...

  6. 2018.8.7 Noip2018模拟测试赛(二十)

    日期: 八月七号  总分: 300分  难度: 提高 ~ 省选    得分: 100分(呵呵一笑) 题目列表: T1:SS T2:Tree Game T3:二元运算 赛后反思: Emmmmmm…… 开 ...

  7. Win32 绘制RGB三原色图案

    以前看到三原色的图案,一直很好奇是如何画出来.后来终于搞清楚了,其实很简单,实际上就是RGB三个分量的"位与"运算. 下面给出Win32绘制三原色图案的例子,特此记录在此: #in ...

  8. python 之 线程池实现并发

    使用线程池实现高IO并发 模块:ThreadPoolExecutor, as_completed 测试代码如下: #!/opt/python3/bin/python3 from concurrent. ...

  9. Network | DHCP

    动态主机设置协议(Dynamic Host Configuration Protocol, DHCP)是一个局域网的网络协议,使用UDP协议工作,主要有两个用途: 给内部网络或网络服务供应商自动分配I ...

  10. SQL SERVER 内存

    http://www.cnblogs.com/CareySon/archive/2012/08/16/HowSQLServerManageMemory.html

配置

计算值

yarn.nodemanager.resource.memory-mb

= 21 * 2 = 42*1024 MB

yarn.scheduler.minimum-allocation-mb

= 2*1024 MB