`
qindongliang1922
  • 浏览: 2182554 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117484
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:125867
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:59866
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71256
社区版块
存档分类
最新评论

Hadoop2.2内存调优

阅读更多
今天散仙写了个MapReduce作业,目的是读数据库里面多个表的数据,然后在JAVA中根据具体的业务情况做过滤,并把符合数据的结果写入到HDFS上,在Eclipse里面提交作业进行调试的时候,发现在Reduce阶段,总是抛出Java heap space的异常,这异常明显,就是堆内存溢出造成的,然后散仙仔细看了下业务块的代码,在Reduce里读数据库的时候,有几个表的返回数据量比较大约有50万左右,因为具体的数量不会太大,所以没有采用分页来返回,读完后数据,采用Map集合封装,在业务处理的一段时间里,一直会停留在内存里,原来的mapred-site.xml里面的配置reduce内存比较小,只需调大此处内存即可。



<property>
    <name>mapreduce.map.memory.mb</name>
    <value>215</value>
</property>
<property>
    <name>mapreduce.map.java.opts</name>
    <value>-Xmx215M</value>
</property>

<property>
    <name>mapreduce.reduce.memory.mb</name>
    <value>1024</value>
</property>
<property>
    <name>mapreduce.reduce.java.opts</name>
    <value>-Xmx1024M</value>
</property>



hadoop2.2内存控制的几个重要参数:
YARN
yarn.scheduler.minimum-allocation-mb
yarn.scheduler.maximum-allocation-mb
yarn.nodemanager.vmem-pmem-ratio
yarn.nodemanager.resource.memory.mb
Mapreuce
Map Memory
mapreduce.map.java.opts
mapreduce.map.memory.mb
Reduce Memory
mapreduce.reduce.java.opts
mapreduce.reduce.memory.mb



如果出现异常:
Container [pid=17645,containerID=container_1415210272486_0013_01_000004] is running beyond physical memory limits. Current usage: 1.0 GB of 1 GB physical memory used; 1.6 GB of 2.1 GB virtual memory used. Killing container.
Dump of the process-tree for container_1415210272486_0013_01_000004 :



可以调整yarn.nodemanager.vmem-pmem-ratio 的比率,默认是2.1,或者加大程序reduce的运行个数进行尝试,这个比率的控制影响着虚拟内存的使用,当yarn计算出来的虚拟内存,比在mapred-site.xml里的mapreduce.map.memory.mb或mapreduce.reduce.memory.mb的2.1倍还要多时,就会发生上面截图中的异常,而默认的mapreduce.map.memory.mb或
mapreduce.reduce.memory.mb得初始大小为1024M,然后根据异常中的yarn自身根据运行环境推算出来的虚拟内存来做比较,发现比1024*2.1还要大,所以就会由NodeManage守护进程kill掉AM容器,从而导致整个MR作业运行失败,现在我们只需要调大这个比率即可,避免发生这种异常。具体调大多小,可根据具体情况来设置。





最后备注一下,hadoop的环境变量的脚本配置java.sh:

export PATH=.:$PATH


export FSE_HOME="/home/search/fse2"
export FSE_CONF_DIR=$FSE_HOME/conf
export PATH=$PATH:$FSE_HOME/bin


user="search"
export JAVA_HOME="/usr/local/jdk"
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin



export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_HOME=/home/search/hadoop
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export CLASSPATH=.:$CLASSPATH:$HADOOP_COMMON_HOME:$HADOOP_COMMON_HOMEi/lib:$HADOOP_MAPRED_HOME:$HADOOP_HDFS_HOME:$HADOOP_HDFS_HOME




#export HADOOP_HOME=/home/$user/hadoop
#export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
#export CLASSPATH=.:$CLASSPATH:$HADOOP_HOME/lib
#export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

export ANT_HOME=/usr/local/ant
export CLASSPATH=$CLASSPATH:$ANT_HOME/lib
export PATH=$PATH:$ANT_HOME/bin

export MAVEN_HOME="/usr/local/maven"
export CLASSPATH=$CLASSPATH:$MAVEN_HOME/lib
export PATH=$PATH:$MAVEN_HOME/bin


  • 大小: 338.2 KB
1
1
分享到:
评论
5 楼 qindongliang1922 2014-11-06  
wwwwxiaoxiu 写道
也可以关闭物理内存与虚拟内存的检测,貌似*2.1的结果不是很准
<!--关闭java虚拟机内存检查-->
<property>
    <name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!--关闭虚拟机内存检查-->
<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>


关闭虚拟内存检查的参数,在阿狸的一篇博客上看过,貌似不起作用,你们用这个生效了吗?
4 楼 wwwwxiaoxiu 2014-11-06  
也可以关闭物理内存与虚拟内存的检测,貌似*2.1的结果不是很准
<!--关闭java虚拟机内存检查-->
<property>
    <name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!--关闭虚拟机内存检查-->
<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
3 楼 tenght 2014-11-06  
嗯,好滴,谢谢~
2 楼 qindongliang1922 2014-11-06  
tenght 写道
你好,yarn.nodemanager.vmem-pmem-ratio 的比率指的是虚拟内存/实际内存吧?如果把这个比率调小,对于yarn的性能有怎样的影响?


不能笼统的说,对yarn的性能有多少影响,这个比例只是yarn根据map或reduce的堆内存乘以特定的比例(默认是2.1)推测出来的虚拟内存,有时候这个推测出来的虚拟内存,会影响程序运行,造成NM判断内存不够用的假象,所以会kill掉这个任务,但在内存吃紧的情况下,或短暂时间内不能加的时候,就可以调动这个比例,使得程序可以正常执行,跟yarn的性能没啥关系
1 楼 tenght 2014-11-06  
你好,yarn.nodemanager.vmem-pmem-ratio 的比率指的是虚拟内存/实际内存吧?如果把这个比率调小,对于yarn的性能有怎样的影响?

相关推荐

    HADOOP 2.2 集群配置(适合LINUX初学者)

    在IT行业中,Hadoop是一个广泛使用的开源框架,主要用于大数据处理...随着对Hadoop理解的深入,你还可以探索更高级的主题,如HA(高可用性)、数据均衡、监控和调优等。不断学习和实践,你将成为一名出色的Hadoop专家。

    HIVE 0.12安装配置(HADOOP2.2)

    这些内容通常涉及Hive的分区策略、Tez或Spark执行引擎的配置,以及Hive与Hadoop的性能调优。 **10. 性能优化** 为了提高Hive的性能,你可以考虑使用ORCFile或Parquet格式存储数据,这两个格式都支持列式存储,可以...

    ext-2.2.zip

    总的来说,Oozie ext-2.2.zip是一个为Oozie用户量身定制的增强工具,它通过改善Web UI的交互性和功能性,极大地提升了用户在管理Hadoop工作流时的效率和满意度。如果你正在使用Oozie进行大数据作业的调度,那么安装...

    Hadoop实战中文版

    通过上述知识点的学习,读者可以全面了解Hadoop的基本概念、安装配置方法、数据处理流程以及性能调优技巧。此外,本书还提供了丰富的实战案例,帮助读者将理论知识应用于实际场景中。掌握这些内容后,无论是从事...

    hadoop2.7.3+hive1.2.1+spark2.0.1性能测试

    **2.2 配置 hadoop-env.sh 文件** - 设置JDK路径:`export JAVA_HOME=/usr/java/jdk1.7.0_79` **2.3 配置 yarn-env.sh 文件** - 类似于`hadoop-env.sh`,在此文件中也需指定JDK路径。 **2.4 配置 core-site.xml ...

    某大数据平台针对车联网场景的各个组件参数调优POC说明

    - **内存分配**:根据服务器的实际可用内存,合理分配给Hadoop、Hive、NiFi和Spark等组件,确保每个组件都有足够的内存资源。 - **CPU核心分配**:根据不同组件的计算需求,合理分配CPU核心数。 - **磁盘I/O优化**:...

    phoenix-hbase-2.2-5.1.3-bin.tar.gz

    Phoenix提供了一系列监控指标,如查询执行时间、内存使用情况等,帮助我们了解系统状态并进行性能调优。通过调整Phoenix配置参数,如并行查询线程数、缓存大小等,可以进一步提升系统性能。 6. **安全与权限** ...

    CHD3安装部署手册

    在安装CDH3之前,需要确保操作系统符合兼容性要求,通常为RHEL或CentOS的特定版本,并且硬件配置要满足Hadoop集群的基础要求,如内存、CPU和磁盘空间。 2.2 注意事项 - 启停:确保正确设置Hadoop服务的启动和停止...

    基于Spark2.2的新闻网大数据实时分析系统设计与实现.zip

    首先,Apache Spark 是一个开源的大数据处理框架,以其高效的内存计算和强大的并行处理能力而受到广泛关注。Spark 2.2 版本在前一版本的基础上进行了优化,提供了更强大的SQL支持、流处理性能提升以及机器学习库...

    IBM.Press.Understanding.DB2.2nd.Edition.Jan.2008

    6. **性能调优**:分析DB2的性能监控工具,如SQL诊断报告、性能监视器,以及如何通过查询优化、并行执行、内存分配等手段提升系统性能。 7. **高可用性与灾难恢复**:讨论DB2的复制技术,如纯同步复制、异步复制,...

    CDH参数优化.doc

    **2.2 YARN内存配置** - **节点管理器可用内存总量**: - `yarn.nodemanager.resource.memory-mb`:设置为150000MB(150GB),确保有足够的内存资源分配给YARN容器。 - **Container内存范围**: - 最小值:`yarn....

    大数据运维手册

    **2.2 软件环境要求** 除了硬件配置外,还需要确保客户端已经安装了必要的软件环境,如操作系统版本、Java运行环境等。这些软件环境的要求也会随着TDH版本的不同而有所不同。 **2.3 支持的浏览器** TDH Manager...

    Clickhouse大数据仓库不完整评测报告20190401.docx

    针对Clickhouse,我们进行了如索引创建、分区策略优化、内存和磁盘使用配置等针对性的调优,以最大程度发挥其性能潜力。 3. 评测方案 3.1 生成数据集 为了模拟真实业务场景,我们创建了大量结构化数据,涵盖多种...

    Superior调度器指南

    综上所述,“Superior调度器指南”提供了关于PAAS平台问题知识库中Hadoop环境下多租户管理、资源管理和调度策略的深入讲解。通过理解这些概念和技术细节,可以帮助用户更好地管理和优化集群资源,提高系统的整体性能...

    Hbase官方文档

    **2.2 操作系统配置** - 调整内核参数,如文件句柄数量、网络缓冲区大小等。 - 关闭不必要的守护进程和服务,减少系统负载。 **2.3 Hadoop配置** - 配置Hadoop的核心参数,如HDFS的地址、块大小等。 - 确保Hadoop...

    spark入门实战

    - **深入了解运行计划及调优:**详细解析了Spark SQL的查询优化策略,包括如何制定有效的查询计划来提高性能。 - **Spark实战应用:**通过具体案例展示了如何利用Spark SQL进行数据分析。 - **2.5 Spark ...

    构建高性能的大型分布式java应用

    Hadoop HDFS、Google File System (GFS) 是其中的两个著名例子。 **7.4 分布式事务** 分布式事务是指跨越多个节点或资源管理器的事务。为了保证事务的一致性,通常采用两阶段提交 (2PC) 或三阶段提交 (3PC) 协议来...

    云数据采集中心及大数据计算平台建设专业方案.docx

    常见的大数据计算平台有Hadoop、Spark、Flink等,根据业务场景选择适合的计算框架,考虑其处理速度、内存管理、容错机制等因素。 2.2 集群配置 设计合理的硬件集群配置,包括服务器选型、存储容量、网络带宽等,...

    hbase官方文档

    - **配置项说明**:对HBase中的各种配置选项进行解释,包括内存管理、日志记录等高级设置。 #### 三、基本先决条件 - **操作系统需求**:列出支持的操作系统版本和最低要求。 - **JDK版本**:指定兼容的JDK版本,...

Global site tag (gtag.js) - Google Analytics