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