AWS EMR 未生成 NameNode FsImage
Posted
技术标签:
【中文标题】AWS EMR 未生成 NameNode FsImage【英文标题】:AWS EMR not generating NameNode FsImage 【发布时间】:2018-09-04 10:01:50 【问题描述】:我们一直在运行一个 3 节点 AWS EMR 集群(1 个 NameNode,2 个 DataNodes)。观察到 Namenode 检查点没有发生并且 fsImage ,md5 文件没有更新。编辑日志堆积导致NameNode因磁盘空间不足而失败。
HDFS 版本:Hadoop 2.8.3-amzn-0
-rw-r--r-- 1 hdfs hdfs 62 Sep 3 12:04 fsimage_0000000000000000000.md5
-rw-r--r-- 1 hdfs hdfs 317 Sep 3 12:04 fsimage_0000000000000000000
-rw-r--r-- 1 hdfs hdfs 260954697 Sep 3 13:49 edits_0000000000000000001-0000000000002061850
-rw-r--r-- 1 hdfs hdfs 270456683 Sep 3 14:54 edits_0000000000002061851-0000000000004196518
-rw-r--r-- 1 hdfs hdfs 256666626 Sep 3 15:54 edits_0000000000004196519-0000000000006223083
-rw-r--r-- 1 hdfs hdfs 256756282 Sep 3 16:54 edits_0000000000006223084-0000000000008250289
-rw-r--r-- 1 hdfs hdfs 263465424 Sep 3 17:59 edits_0000000000008250290-0000000000010330235
-rw-r--r-- 1 hdfs hdfs 257754598 Sep 3 19:49 edits_0000000000010330236-0000000000012365196
-rw-r--r-- 1 hdfs hdfs 257361703 Sep 3 21:39 edits_0000000000012365197-0000000000014396984
-rw-r--r-- 1 hdfs hdfs 258246258 Sep 3 23:29 edits_0000000000014396985-0000000000016435653
-rw-r--r-- 1 hdfs hdfs 257862137 Sep 4 01:19 edits_0000000000016435654-0000000000018471306
-rw-r--r-- 1 hdfs hdfs 257044520 Sep 4 03:09 edits_0000000000018471307-0000000000020496923
-rw-r--r-- 1 hdfs hdfs 256987603 Sep 4 04:59 edits_0000000000020496924-0000000000022520948
-rw-r--r-- 1 hdfs hdfs 254213703 Sep 4 06:44 edits_0000000000022520949-0000000000024522780
-rw-r--r-- 1 hdfs hdfs 265518336 Sep 4 08:34 edits_0000000000024522781-0000000000026613243
按照 Hadoop 2.8.3
Secondary NameNode 或 CheckpointNode 将在每个 'dfs.namenode.checkpoint.txns'(默认 -100000)事务中创建一个命名空间的检查点,无论是否有 'dfs.namenode.checkpoint.period'(默认 - 3600 秒)已过期。
但是检查点并没有在 Namenode 中发生
【问题讨论】:
这只是一个评论。我没有在 EMR 上验证过这一点,但我相信你可以重启 namenode 来创建一个新的检查点作为临时解决方案。 aws.amazon.com/premiumsupport/knowledge-center/… 我遇到过类似的问题,但没有找到解决方案。最终,我的 namenode 内存不足并终止了流式传输作业。正如下面的答案所述,您可以强制解决问题,但是,通过进入安全模式会导致不写入火花检查点并且作业失败,因此这不是一个选项。我想知道是否需要安全模式来保存图像但由于火花而永远无法开启。 【参考方案1】:您可以运行以下命令来使 NameNode 工作:
hdfs dfsadmin -safemode enter
hdfs dfsadmin -saveNamespace
hdfs dfsadmin -safemode leave
https://community.hortonworks.com/content/supportkb/49438/how-to-manually-checkpoint.html
【讨论】:
这将在安全模式下终止流式传输作业。 spark checkpoint 会尝试写入,但是安全模式下的 namenode 将无法保存写入事务,然后流作业失败,因为 checkpoint 可以写入。【参考方案2】:检查点将由辅助 Namenode 或检查点节点创建。
这里的设置只有namenode,它不会自己创建检查点。
检查点节点或辅助 Namenode 应在设置中可用以自动执行此操作,否则必须重新启动安全模式 saveSnaphot 或 Namenode 才能发生检查点。
【讨论】:
以上是关于AWS EMR 未生成 NameNode FsImage的主要内容,如果未能解决你的问题,请参考以下文章
AWS EMR Spark 未使用自定义 Jar 加载 MainClass
SparkSession 应用程序源代码配置属性未覆盖 AWS EMR 默认值上的 JupyterHub 和 Zeppelin
NameNode&Secondary NameNode 工作机制