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

使用适用于 Java 的 AWS 开发工具包创建 Amazon EMR 集群

适用于 Java 的 AWS 开发工具包提供具有 Amazon EMR 功能的三个包:

有关这些包的更多信息,请参阅 AWS SDK for Java API Reference

以下示例说明了开发工具包如何借助 Amazon EMR 简化编程。以下代码示例使用 StepFactory 对象 (创建常见 Amazon EMR 步骤类型的一个帮助程序类) 在启用调试的情况下创建交互式 Hive 集群。

注意

如果向新集群添加 IAM 用户可见性,请调用 RunJobFlow 并设置 VisibleToAllUsers=true,否则 IAM 用户无法查看该集群。

AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey); AmazonElasticMapReduceClient emr = new AmazonElasticMapReduceClient(credentials); String COMMAND_RUNNER = "command-runner.jar"; String DEBUGGING_COMMAND = "state-pusher-script"; String DEBUGGING_NAME = "Setup Hadoop Debugging"; StepFactory stepFactory = new StepFactory(); StepConfig enabledebugging = new StepConfig() .withName(DEBUGGING_NAME) .withActionOnFailure(ActionOnFailure.TERMINATE_CLUSTER) .withHadoopJarStep(new HadoopJarStepConfig() .withJar(COMMAND_RUNNER) .withArgs(DEBUGGING_COMMAND)); RunJobFlowRequest request = new RunJobFlowRequest() .withName("Hive Interactive") .withReleaseLabel("emr-4.1.0") .withSteps(enabledebugging) .withApplications(myApp) .withLogUri("s3://myawsbucket/") .withServiceRole("service_role") .withJobFlowRole("jobflow_role") .withInstances(new JobFlowInstancesConfig() .withEc2KeyName("keypair") .withInstanceCount(5) .withKeepJobFlowAliveWhenNoSteps(true) .withMasterInstanceType("m4.large") .withSlaveInstanceType("m4.large")); RunJobFlowResult result = emr.runJobFlow(request);

至少,您必须传递分别对应于 EMR_DefaultRole 和 EMR_EC2_DefaultRole 的服务角色和任务流角色。可以通过为同一个账户调用此 AWS CLI 命令来实现此目的。首先,查看这两个角色是否已存在:

aws iam list-roles | grep EMR

将显示实例配置文件 (EMR_EC2_DefaultRole) 和服务角色 (EMR_DefaultRole) (如果存在) :

"RoleName": "EMR_DefaultRole", "Arn": "arn:aws:iam::AccountID:role/EMR_DefaultRole" "RoleName": "EMR_EC2_DefaultRole", "Arn": "arn:aws:iam::AccountID:role/EMR_EC2_DefaultRole"

如果默认角色不存在,则可以使用以下 AWS CLI 命令创建它们:

aws emr create-default-roles