AWS EMR运行bootstrap脚本卡住,安装facebook prophet时集群失败
AWS EMR Bootstrap安装Facebook Prophet失败问题解决
核心原因定位
Facebook Prophet依赖的Stan模型需要C++编译环境,你当前脚本注释了Development Tools组安装,仅安装python3相关库无法提供完整的编译依赖,导致pystan/prophet编译过程无限重试或等待交互输入,最终触发EMR bootstrap 1小时超时限制。
解决步骤
1. 修正bootstrap.sh脚本
#!/bin/bash -xe # 预更新yum缓存避免安装包检索失败 sudo yum makecache fast # 安装完整编译工具链,加-y跳过交互确认 sudo yum groupinstall -y "Development Tools" sudo yum install -y python3-devel python3-libs python3-tools # 拉取依赖清单 aws s3 cp s3://bucket/requirements.txt . # 升级pip、setuptools、wheel避免安装兼容性问题 sudo python3 -m pip install --upgrade pip setuptools wheel # 预安装匹配Prophet版本的pystan,减少后续依赖冲突 sudo python3 -m pip install --timeout 120 pystan==2.19.1.1 # 安装其余依赖,加--no-cache-dir减少磁盘占用 sudo python3 -m pip install --timeout 120 --no-cache-dir --upgrade -r ./requirements.txt
2. 可选优化(大幅减少启动时间)
Prophet编译时间较长,你可以提前在和EMR同版本的Amazon Linux2环境中编译好pystan和prophet的whl安装包,上传到S3,bootstrap脚本直接拉取whl安装,跳过编译步骤,可将bootstrap执行时间压缩到5分钟以内。
3. 问题排查方法
如果修改后仍然失败,可按以下步骤定位:
- 登录EMR主节点,逐行执行bootstrap脚本内的命令,查看实时输出定位报错点
- 若为网络超时问题,可给pip命令加上国内镜像源参数:
-i https://pypi.tuna.tsinghua.edu.cn/simple - 若为编译报错,执行
gcc --version、g++ --version确认编译器是否正常安装 - 可在EMR控制台调整bootstrap动作的超时时间,从默认1小时调整为2小时,预留足够编译时间
内容的提问来源于stack exchange,提问作者Exorcismus
相关产品推荐
相关产品推荐

