问题现象:emr控制台“集群监控”-->“集群事件”里会出现“ NameNode 发生full GC ”的告警事件
原因:堆内存使用率过大或配置的堆内存不合理
可能影响:
- namenode进程垃圾回收时间过长或内存oom,可能导致该NameNode进程无法正常提供服务,影响hdfs的正常读写性能
处理建议:
- 调整NameNode堆内存的大小
- NameNode中文件对象需要占用一定的内存,消耗内存大小随文件对象的生成而线性递增。NameNode中,文件对象可以是文件、目录或者Block。在NameNode WebUI界面的Summary也可以看到文件系统对象(filesystem objects)的统计。
2. 在EMR控制台“集群服务”下,点击“HDFS”进入HDFS服务管理列表,切到“配置管理”页签,修改hadoop-env.sh中的“NNHeapsize”配置项,文件系统对象个数和NameNode配置的JVM参数的对应关系建议如下
代码语言:javascript复制文件对象数量达到10,000,000,则JVM参数建议配置为:-Xms6G -Xmx6G -XX:NewSize=512M -XX:MaxNewSize=512M
文件对象数量达到20,000,000,则JVM参数建议配置为:-Xms12G -Xmx12G -XX:NewSize=1G -XX:MaxNewSize=1G
文件对象数量达到50,000,000,则JVM参数建议配置为:-Xms32G -Xmx32G -XX:NewSize=3G -XX:MaxNewSize=3G
文件对象数量达到100,000,000,则JVM参数建议配置为:-Xms64G -Xmx64G -XX:NewSize=6G -XX:MaxNewSize=6G
文件对象数量达到200,000,000,则JVM参数建议配置为:-Xms96G -Xmx96G -XX:NewSize=9G -XX:MaxNewSize=9G
文件对象数量达到300,000,000,则JVM参数建议配置为:-Xms164G -Xmx164G -XX:NewSize=12G -XX:MaxNewSize=12G
- 清理hdfs集群无用文件(如果无法增加内存,可以删除集群中无用文件,减少集群中的文件对象数量)
- 用hadoop用户登录集群节点,选择并确认是无用的文件或目录,执行hdfs dfs -rm -r -skipTrash 文件或目录路径命令,需注意选项-skipTrash将跳过回收站(如果启用)并立即删除指定的文件。
PS:如需了解和配置监控指标及事件告警可参考下列文档:
emr集群事件
快速配置云监控事件告警推送
emr监控指标项告警配置