Amazon EMR - 从设备上的 Yum 更新引导操作失败

Posted

技术标签:

【中文标题】Amazon EMR - 从设备上的 Yum 更新引导操作失败【英文标题】:Amazon EMR - Yum Update Boostrap Action Fails on Slave 【发布时间】:2017-05-15 15:53:24 【问题描述】:

准备重写这个问题,因为我得到了很多更新的信息。

我的问题如下:

我有一个带有 1 个主节点和 1 个从节点的 EMR 集群。从节点配置为可以不受限制地访问开放的互联网(我知道这是一个安全风险)。

当我使用简单调用 sudo yum -y update 的引导操作设置此集群时,它失败了,说引导操作在从节点上失败(它总是在主节点上成功)

但是,如果 SSH 进入 Slave 节点并手动尝试执行sudo yum -y update,则在 5.5.0 EMR 包上操作成功。

我无法进一步调试为什么会发生这种情况,因为尽管据我所知已正确配置它,但 EMR 不会将任何日志复制到 S3(日志复制充其量是零星的)并且 CloudWatch 不会获取任何日志来自 VPC,这使得调试这个问题非常模糊。

任何信息将不胜感激。

编辑:我能够让我的 CloudWatch VPC 日志正常工作(显然我的 IAM 没有上传日志的信任关系),它显示了很多拒绝,而主节点似乎没有显示任何拒绝。这让我认为正在进行一些自动配置并阻止我正确下载 yum 包?

【问题讨论】:

【参考方案1】:

按照我提出晦涩问题并设法自行解决的传统,让我分享一下我的缓解方法。

事实证明这是 EMR-5.5.0 发布标签中的一个问题。降级到 EMR-5.3.0 修复了我的脚本问题,现在脚本按预期正常执行。

似乎可能在 5.5.0 中更改了执行脚本的时间/方式。

【讨论】:

【参考方案2】:

我在使用 EMR 6.3.0 时遇到了同样的错误。有趣的是,它适用于一些 AWS 账户。我相信 boostrap 操作与 EMR 配置同时运行。所以如果 yum update 时间过长,有些包安装会失败。

我试了几次,不同的包在这个日志文件中失败了:.../node/reports/**/*.yaml.gz,消息为"Error: Rpmdb changed underneath us"

我的解决方案是从我的引导操作中删除 yum update。根据此文档,这很好: https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-custom-ami.html

“在首次启动时,默认情况下,Amazon Linux AMI 会连接到程序包存储库以在其他服务启动之前安装安全更新。”

【讨论】:

以上是关于Amazon EMR - 从设备上的 Yum 更新引导操作失败的主要内容,如果未能解决你的问题,请参考以下文章

如何将文件从 S3 复制到 Amazon EMR HDFS?

markdown Amazon EMR上的Apache Spark

在 AWS EMR 上的 PySpark 脚本上找不到 com.amazon.ws.emr.hadoop.fs.EmrFileSystem

通过s3在Amazon EMR上的TezTask顶点失败

Amazon EMR over s3 上的 TezTask 顶点故障

有关 Amazon EMR 上的流式作业流程的问题