重新创建 EMR 集群后保持 HDFS 状态
Posted
技术标签:
【中文标题】重新创建 EMR 集群后保持 HDFS 状态【英文标题】:Persisting HDFS state after EMR cluster is recreated 【发布时间】:2020-03-20 22:41:03 【问题描述】:重新创建后是否可以在 emr 集群上保持 HDFS 存储的状态?根据我的经验,本地存储的所有文件都丢失了。
是否可以选择使用已挂载的卷(例如 EFS)并将 EMR 集群挂载到该文件挂载? 例如:
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///mnt/my/efs/location/</value>
</property>
如果集群被删除,正在寻找一种方法来找出集群上次停止的位置。任何帮助,将不胜感激。
【问题讨论】:
【参考方案1】:EMR 集群将 EC2 实例的本地存储和挂载 EBS 用于 HDFS 磁盘区域(您可以检查 HDFS 的可用磁盘空间量或多或少挂载在 EMR 集群节点上的磁盘量)。据我所知,使用 EFS 不是一个选项,因为使用 EFS 和安全网关附加的 IAM 权限不是创建 EMR 集群时的选项。
我们可以使用S3DistCp (s3-dist-cp)从HDFS复制到S3。或者坚持使用 EMRFS 而不是 HDFS。
【讨论】:
如果可以通过 terraform 引导进程,EMR 会从现有文件系统中读取还是尝试创建新文件系统? 您可以从 Terraform 引导(aws_emr_cluster 资源具有 bootstrap_action 属性来指定要使用的脚本,您可以将其上传到 S3 并从 bootstrap_action 指向 S3)。我不确定“从现有内容中读取”是什么。 Bootstrap 是设置一个新的 EMR 集群,而不是现有的 EMR 集群。 如果您创建一个新的 EMR 集群,EMR 集群中 EC2 实例的文件/磁盘始终是新的。以前使用的 localstore 或 EBS 卷都已消失。你不能以某种方式神奇地回忆起它们并使用它们。很明显写在docs.aws.amazon.com/emr/latest/ManagementGuide/…。 “附加到 EMR 集群的 Amazon EBS 卷是短暂的:这些卷会在集群和实例终止时被删除(例如,在缩小实例组时),因此不要期望数据会持续存在,这一点很重要。” 正如文档中明确指出的那样,请放弃以某种方式附加到 EMR 集群的 EBS 或 Localstore 可以保存或重复使用的期望。 该文件称“EMRFS 可以帮助确保存储在 Amazon S3 中的 HDFS 数据存在持久的“真实来源”。”。这意味着一旦您的 EMR 集群消失,您就不能期望保留 HDFS 内容。以上是关于重新创建 EMR 集群后保持 HDFS 状态的主要内容,如果未能解决你的问题,请参考以下文章