如何在 AWS EMR 中启动辅助 Namenode

Posted

技术标签:

【中文标题】如何在 AWS EMR 中启动辅助 Namenode【英文标题】:How to start secondary Namenode in AWS EMR 【发布时间】:2018-09-04 12:52:31 【问题描述】:

我们一直在运行一个生产级系统,我们希望在其中自动启动 AWS EMR 中的辅助名称节点。 以下是未运行辅助 namenode 守护进程的 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

二级namenode需要做namenode检查点和定期创建fsImage。我没有为Namenode配置任何HA。

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

hdfs secondarynamenode -checkpoint

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

Hadoop 版本:Hadoop 2.8.3-amzn-0

【问题讨论】:

【参考方案1】:

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

hdfs secondarynamenode -checkpoint

此问题的其他解决方案是在 MapR 等自定义 Hadoop 上运行 EMR。

【讨论】:

以上是关于如何在 AWS EMR 中启动辅助 Namenode的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 AWS Lambda 在 AWS EMR 上运行 PySpark

如何在 AWS EMR 上重启纱线

寻找有关如何使用 python 启动 AWS EMR 集群以运行 pyspark 步骤的示例

在 AWS EMR 中使用 spark-submit 启动 Python 应用程序

AWS Data Pipeline 在 emr 活动步骤部分中转义逗号

AWS EMR Airflow:Postgresql 连接器