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 s3a 文件系统

AWS EMR Spark 未使用自定义 Jar 加载 MainClass

SparkSession 应用程序源代码配置属性未覆盖 AWS EMR 默认值上的 JupyterHub 和 Zeppelin

NameNode&Secondary NameNode 工作机制

使用 lambda 函数删除关联的 cloudformation 堆栈时 EMR 集群未终止

SecondaryNameNode的工作流程