选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

在 Amazon EMR 集群上运行命令和脚本 - Amazon EMR

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 Amazon EMR 集群上运行命令和脚本

本主题介绍如何作为步骤在集群上运行命令或脚本。作为步骤运行命令或脚本是将工作提交到集群的其中一种方式,在以下情况下非常有用:

  • 当您未允许 SSH 访问您的 Amazon EMR 集群时

  • 当你想运行 bash 或 shell 命令来排除集群故障时

您可以在创建集群时或者在集群处于 WAITING 状态时运行脚本。要在步骤处理开始前运行脚本,您可使用引导操作。有关引导操作更多信息,请参阅《Amazon EMR 管理指南》中的创建引导操作以安装其它软件

Amazon EMR 提供以下工具来帮助您运行脚本、命令和其他集群上的程序。您可以使用 Amazon EMR 管理控制台或 AWS CLI调用所有工具。

command-runner.jar

位于集群的 Amazon EMR AMI 上。您可以使用 command-runner.jar 在集群上运行命令。你没有使用其完整路径指定 command-runner.jar

script-runner.jar

Amazon S3 托管在 s3://<region>.elasticmapreduce/libs/script-runner/script-runner.jar,其中 <region> 是 Amazon EMR 集群所在的区域。您可以使用 script-runner.jar 以在集群上运行本地或 Amazon S3 上保存的脚本。当您提交步骤时,您必须指定 script-runner.jar 的完整 URI。

提交自定义 JAR 步骤以运行脚本或命令

以下 AWS CLI 示例说明了 Amazon EMR script-runner.jarcommand-runner.jar和上的一些常见用例。

例 :使用 command-runner.jar 在集群上运行命令

当您使用 command-runner.jar时,您可以在步骤的参数列表中指定命令、选项和值。

以下 AWS CLI 示例向正在调用的command-runner.jar正在运行的集群提交一个步骤。Args列表中的指定命令将my-script.sh从 Amazon S3 调用的脚本下载到 hadoop 用户主目录中。然后,该命令修改脚本的权限并运行my-script.sh

使用时 AWS CLI,Args列表中的项目应以逗号分隔,列表元素之间不应有空格。例如,使用 Args=[example-command,example-option,"example option value"] 而不是 Args=[example-command, example-option, "example option value"]

aws emr add-steps \ --cluster-id j-2AXXXXXXGAPLF \ --steps Type=CUSTOM_JAR,Name="Download a script from S3, change its permissions, and run it",ActionOnFailure=CONTINUE,Jar=command-runner.jar,Args=[bash,-c,"aws s3 cp s3://amzn-s3-demo-bucket/my-script.sh /home/hadoop; chmod u+x /home/hadoop/my-script.sh; cd /home/hadoop; ./my-script.sh"]
例 :使用 script-runner.jar在集群上运行脚本

当您使用 script-runner.jar时,在步骤的参数列表中指定想要运行的脚本。

以下 AWS CLI 示例向正在调用的script-runner.jar正在运行的集群提交一个步骤。在本例中,调用的脚本存储在 my-script.sh Amazon S3 上。您还可以指定存储在集群主节点 (master node) 的本地脚本。

aws emr add-steps \ --cluster-id j-2AXXXXXXGAPLF \ --steps Type=CUSTOM_JAR,Name="Run a script from S3 with script-runner.jar",ActionOnFailure=CONTINUE,Jar=s3://us-west-2.elasticmapreduce/libs/script-runner/script-runner.jar,Args=[s3://amzn-s3-demo-bucket/my-script.sh]

其他使用 command-runner.jar 的方法

您还可以借助类似于 spark-submithadoop-streaming 的工具,使用 command-runner.jar 将工作提交至集群。当您使用 command-runner.jar 启动应用程序时,您指定 CUSTOM_JAR 作为步骤类型而不是使用类似于 SPARKSTREAMING 或者 PIG 的值。工具可用性取决于您在集群上安装的应用程序。

以下示例命令借助 spark-submit 使用command-runner.jar 提交步骤。该Args列表指定spark-submit为命令,然后是my-app.py带有参数和值的 Spark 应用程序的 Amazon S3 URI。

aws emr add-steps \ --cluster-id j-2AXXXXXXGAPLF \ --steps Type=CUSTOM_JAR,Name="Run spark-submit using command-runner.jar",ActionOnFailure=CONTINUE,Jar=command-runner.jar,Args=[spark-submit,S3://amzn-s3-demo-bucket/my-app.py,ArgName1,ArgValue1,ArgName2,ArgValue2]

下表列出了通过 command-runner.jar 您可以使用的其他工具。

工具名称 描述
hadoop-streaming 提交 Hadoop 流式处理程序。在控制台和某些游戏中 SDKs,这是一个直播步骤。
hive-script 运行 Hive 脚本。在控制台中 SDKs,这是 Hive 的一步。
pig-script 运行 Pig 脚本。在控制台中 SDKs,这是 Pig 的步骤。
spark-submit

运行 Spark 应用程序。在控制台中,这是 Spark 步骤。

hadoop-lzo 在目录上运行 Hadoop LZO 索引器
s3-dist-cp 将大量数据从 Amazon S3 分布式复制到 HDFS。有关更多信息,请参阅S3 DistCp (s3-dist-cp)
隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。