Q1、NameNode报: java.lang.OutOfMemoryError: GC overhead limit exceeded
原因:经查看hadoop 堆内存只有4G,而文件+块数有2千万个,每个占用150B,需要3G左右内存,另外namenode还需要负责与DATANODE通信等等,故导致OOM
解决办法:
调整conf/hadoop-env.sh中的堆内存大小:
export HADOOP_HEAPSIZE=6000
export HADOOP_NAMENODE_INIT_HEAPSIZE=6000
然后重启hadoop namenode :
/home/hadoop/hadoop-2.2.0/sbin/hadoop-daemon.sh start namenode
另外需尽量合并小文件、删除不需要的数据,减少 文件数和块数。
Q2:yarn启用日志汇聚问题
当自定义container日志存放目录(yarn.nodemanager.remote-app-log-dir参数指定),提示以下信息:
Logs not available for attempt_1506090137795_0001_m_000000_0. Aggregation may not be complete, Check back later or try the nodemanager at slave2:10929
<!--开启日志汇聚--><property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>864000</value>
</property>
<property>
<name>yarn.log-aggregation.retain-check-interval-seconds</name>
<value>-1</value>
</property>
<!--
<property>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>/tmp/hadoop-yarn/staging/contains</value>
<description>default dir /tmp/logs 目前发现必须使用默认目录,自定义目录无法汇聚</description>
</property>
-->
采取默认目录/tmp/logs后正常,尚未发现具体原因。
另外必须重启所有hdfs+yarn服务后生效,通过yarn rmadmin -refreshNodes来刷新配置并无作用
本文解决Hadoop NameNode出现的java.lang.OutOfMemoryError问题,通过调整堆内存大小并给出具体步骤。同时,探讨了YARN日志汇聚配置问题及其解决方案。

988

被折叠的 条评论
为什么被折叠?



