Amazon EMR
Amazon EMR 版本指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

在集群中运行脚本

Amazon EMR 可让您在集群的步骤处理期间随时运行脚本。您可以在创建集群时指定运行脚本的步骤,或者在集群处于 WAITING 状态时添加步骤。有关添加步骤的更多信息,请参阅 Amazon EMR 管理指南 中的向集群提交工作

要在步骤处理开始前运行脚本,请使用引导操作。有关引导操作的更多信息,请参阅 Amazon EMR 管理指南 中的创建引导操作以安装其他软件

使用 AWS CLI 提交自定义 JAR 步骤

注意

在许多情况下,您现在可以使用 command-runner.jar 而非 script-runner.jar。command-runner.jar 不需要具有 JAR 的完整路径。有关更多信息,请参阅 Command Runner

本节介绍如何添加步骤以运行脚本。script-runner.jar 接受脚本路径的参数以及脚本的任何额外参数。JAR 文件运行带有传递参数的脚本。

重要

script-runner.jar 位于 s3://region.elasticmapreduce/libs/script-runner/script-runner.jar,其中 region 是您的 EMR 集群所在的区域。

包含运行脚本的步骤的集群看上去类似以下示例。

使用 AWS CLI 添加步骤以运行脚本

  • 要使用 AWS CLI 运行脚本,请键入以下命令,将 myKey 替换为您 EC2 密钥对的名称,并将 mybucket 替换为您的 S3 存储桶。当处理步骤时,集群会在主节点上运行脚本 my_script.sh

    aws emr create-cluster --name "Test cluster" –-release-label emr-5.14.0 --applications Name=Hive Name=Pig --use-default-roles --ec2-attributes KeyName=myKey --instance-type m4.large --instance-count 3 --steps Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,Jar=s3://region.elasticmapreduce/libs/script-runner/script-runner.jar,Args=["s3://mybucket/script-path/my_script.sh"]

    如果不使用 --instance-groups 参数指定实例计数,则将启动单个主节点,其余实例将作为核心节点启动。所有节点都使用该命令中指定的实例类型。

    注意

    如果您之前未创建默认 Amazon EMR 服务角色和 EC2 实例配置文件,请先键入 aws emr create-default-roles 创建它们,然后再键入 create-cluster 子命令。

    有关如何在 AWS CLI 中使用 Amazon EMR 命令的更多信息,请参阅 http://docs.amazonaws.cn/cli/latest/reference/emr