【发布时间】:2019-10-03 01:44:24
【问题描述】:
安装核心服务(Spark 等)后,有没有办法设置引导操作以在 EMR 上运行?我正在使用 emr-5.27.0。
【问题讨论】:
标签: amazon-emr
安装核心服务(Spark 等)后,有没有办法设置引导操作以在 EMR 上运行?我正在使用 emr-5.27.0。
【问题讨论】:
标签: amazon-emr
您可以提交一些脚本作为step,而不是引导程序。例如,我制作了一个 SSL 证书更新脚本,并通过一个步骤将其应用于 EMR。这是我用 Python 语言编写的 lambda 函数的一部分。但是你可以在控制台手动添加这一步,或者其他语言。
Steps=[{
'Name': 'PrestoCertificate',
'ActionOnFailure': 'CONTINUE',
'HadoopJarStep': {
'Jar': 's3://ap-northeast-2.elasticmapreduce/libs/script-runner/script-runner.jar',
'Args': ['s3://myS3/PrestoSteps_InstallCertificate.sh']
}
}]
关键点是亚马逊预建的script-runner.jar,您可以通过更改区域前缀为每个区域使用它。它接收一个 .sh 文件并运行它。
您应该知道的一件事是,脚本将在所有节点上运行,如果您只想在主实例上执行此操作,则必须使用 if-else 语句。
#!/bin/bash
BOOL=`cat /emr/instance-controller/lib/info/instance.json | jq .isMaster`
if [ $BOOL == "true" ]
then
<your code>
fi
【讨论】: