如何执行从 s3 加载更多脚本的 EMR 步骤?

How to execute EMR step that loads more scripts from s3?

我想在 EMR 上执行一个 shell 脚本作为加载 tarball、解压缩并 运行 将脚本放入其中的步骤。我选择此设置是为了尽可能与供应商无关。 我的剧本是

#!/bin/sh
aws s3 cp s3://path_to_my_bucket/name_of.tar.gz .
tar -xzf name_of.tar.gz
. main_script.sh

其中 main_script.sh 是 tarball 的一部分,还有许多其他包、脚本和配置文件。

如果我 运行 这个脚本作为主节点上的 Hadoop 用户,一切都会按预期进行。通过 command-runner.jar 作为一个步骤添加,无论我尝试什么,我都会出错。

到目前为止我尝试了什么(以及错误):

将bash脚本加载到主节点并执行它的正确方法是什么?

作为奖励,我想知道为什么 command-runner.jar 与 spark 步骤的设置如此不同,后者 运行 作为 Hadoop 用户目录中的 Hadoop 用户。

您可以将脚本-runner.jar与区域

一起使用

JAR 位置:s3://us-east-1.elasticmapreduce/libs/script-runner/script-runner.jar

参数:s3://your_bucket/your_shell_script.sh

有关详细信息,请参阅下文 link https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-hadoop-script.html