在集群中运行脚本 - Amazon EMR
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

在集群中运行脚本

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

要在步骤处理开始前运行脚本,请使用引导操作。有关引导操作的更多信息,请参阅 https://docs.amazonaws.cn/emr/latest/ManagementGuide/emr-plan-bootstrap.html 中的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 S3bucket。当处理步骤时,集群会在主节点上运行脚本 my_script.sh

    aws emr create-cluster --name "Test cluster" --release-label emr-5.31.0 --applications Name=Hive Name=Pig --use-default-roles --ec2-attributes KeyName=myKey --instance-type m5.xlarge --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 命令的更多信息,请参阅 https://docs.amazonaws.cn/cli/latest/reference/emr