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

提交自定义 JAR 步骤

此部分介绍在 Amazon EMR 中提交自定义 JAR 步骤的基础知识。通过提交自定义 JAR 步骤,您可以使用 Java 编程语言编写用于处理数据的脚本。

使用控制台提交自定义 JAR 步骤

此示例介绍如何使用 Amazon EMR 控制台向正在运行的集群提交自定义 JAR 步骤。

使用控制台提交自定义 JAR 步骤

  1. Open the Amazon EMR console at https://console.amazonaws.cn/elasticmapreduce/.

  2. Cluster List 中,选择您的集群的名称。

  3. 滚动到 Steps 部分并展开它,然后选择 Add step

  4. Add step 对话框中:

    • 对于 Step type,选择 Custom JAR

    • 对于 Name,接受默认名称 (Custom JAR) 或键入新名称。

    • 对于 JAR S3 location,键入或浏览到 JAR 文件的位置。该值必须采用 s3://BucketName/path/JARfile 格式。

    • 对于 Arguments,以空格分隔的字符串形式键入任何所需参数,或将该字段保留为空白。

    • 对于 Action on failure,接受默认选项 (Continue)。

  5. 选择 Add。步骤会出现在控制台中,其状态为“Pending”。

  6. 步骤的状态会随着步骤的运行从“Pending”变为“Running”,再变为“Completed”。要更新状态,请选择“Actions”列上方的 Refresh 图标。

使用 AWS CLI 启动集群并提交自定义 JAR 步骤

使用 AWS CLI 启动集群并提交自定义 JAR 步骤

要使用 AWS CLI 启动集群并提交自定义 JAR 步骤,请键入带 --steps 参数的 create-cluster 子命令。

  • 要启动集群并提交自定义 JAR 步骤,请键入以下命令,并将 myKey 替换为您的 EC2 密钥对的名称,将 mybucket 替换为您的存储桶名称。

    aws emr create-cluster --name "Test cluster" --release-label emr-5.14.0 \ --applications Name=Hue Name=Hive Name=Pig --use-default-roles \ --ec2-attributes KeyName=myKey --instance-type m4.large --instance-count 3 \ --steps Type=CUSTOM_JAR,Name="Custom JAR Step",ActionOnFailure=CONTINUE,Jar=pathtojarfile,Args=["pathtoinputdata","pathtooutputbucket","arg1","arg2"]

    注意

    包含了 Linux 行继续符 (\) 以提高可读性。可以在 Linux 命令中删除或使用它们。对于 Windows,请删除它们或将其替换为脱字号 (^)。

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

    注意

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

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

第三方依赖项

有时,可能需要包含 MapReduce 类路径 JAR 以与您的程序结合使用。您有两个选项来执行此操作:

  • --libjars s3://URI_to_JAR 包含在使用 AWS CLI 启动集群并提交自定义 JAR 步骤中的过程的步骤选项中。

  • 使用 mapreduce.application.classpath 配置分类来启动 mapred-site.xml 中带已修改的 mapred-site 设置的集群。要通过使用 AWS CLI 的步骤创建集群,内容如下所示:

    aws emr create-cluster --release-label emr-5.14.0 \ --applications Name=Hue Name=Hive Name=Pig --use-default-roles \ --instance-type m4.large --instance-count 2 --ec2-attributes KeyName=myKey \ --steps Type=CUSTOM_JAR,Name="Custom JAR Step",ActionOnFailure=CONTINUE,Jar=pathtojarfile,Args=["pathtoinputdata","pathtooutputbucket","arg1","arg2"] \ --configurations https://s3.amazonaws.com/mybucket/myfolder/myConfig.json

    myConfig.json

    [ { "Classification": "mapred-site", "Properties": { "mapreduce.application.classpath": "path1,path2" } } ]

    路径的逗号分隔的列表应追加到每个任务的 JVM 的类路径。