如何在 AWS EMR 中启动辅助 Namenode

How to start secondary Namenode in AWS EMR

我们一直是 运行 生产级系统,我们希望在其中自动启动 AWS EMR 中的辅助名称节点。 下面是 jps 的输出,其中辅助名称节点守护进程不是 运行

[root@ip-10-2-23-23 ~]# jps
6241 Bootstrap
7041 ResourceManager
10754 RunJar
6818 WebAppProxyServer
10787 SparkSubmit
7619 JobHistoryServer
6922 ApplicationHistoryServer
3661 Main
4877 Main
6318 NameNode
8943 LivyServer
4499 Jps
5908 Bootstrap
4791 Main
10619 StatePusher
9918 HistoryServer

辅助名称节点需要执行名称节点检查点和定期创建 fsImage。我没有为名称节点配置任何 HA。

命令我们运行手动创建FsImage是

hdfs secondarynamenode -checkpoint

如何在 AWS EMR 中启动辅助名称节点或有任何配置?

Hadoop 版本:Hadoop 2.8.3-amzn-0

AWS EMR 不会 运行 在 EMR 上处理次级 Namenode,因此不会创建 FSImage,运行 每小时创建一个 FSImage 的 cron 解决了磁盘使用过多的问题,因为FSImage 合并快照(Namenode 元数据)以创建一个更小的新 FsImage。 FSImage 创建对于 Namenode 来说是一项代价高昂的操作,它会占用实例资源。如果有太多等待合并的快照,Namenode 可能永远无法从这个繁琐的过程中恢复,因此最好通过 cron 经常创建 FSImage。在标准的 Hadoop 系统中,这项工作是通过 运行 在一个单独的实例,但 EMR 没有两个主节点的概念,因此主节点始终是单点故障。

hdfs secondarynamenode -checkpoint

此问题的其他解决方案是 运行在自定义 Hadoop 上使用 EMR,例如 MapR。