创建EMR集群时,"EMR服务角色无效"

Kev*_*ith 10 hive amazon-s3 amazon-web-services

在创建Amazon S3 Bucket之后my_bucket,我通过cli创建了一个Elastic Map Reduce集群:

aws emr create-cluster --name"Hive testing"--ami-version 3.3 --applications Name = Hive --use-default-roles --instance-type m3.xlarge --instance-count 3 --steps Type = Hive,Name ="Hive Program",Args = [-d,INPUT = s3://my_bucket/input,-d.OUTPUT=s3:// my_bucket/input,-d-LIBS = s3:// my_bucket/serde_libs ]

请注意,我没有指定hive *.q文件.制作S3和EMR群集后,我将登录EMR框,然后以hive交互方式运行.

注意 - 我假设有一个可以记录的EMR盒子.

但是,当我运行时aws emr describe-cluster --cluster-id XYZ,我在输出中看到了这个错误:

   "State": "TERMINATED_WITH_ERRORS", 
        "StateChangeReason": {
            "Message": "EMR service role arn:aws:iam::xyz:role/EMR_DefaultRole 
                         is invalid", 
            "Code": "VALIDATION_ERROR"
        }
Run Code Online (Sandbox Code Playgroud)

什么会导致这个错误?我是否需要在S3存储桶上打开权限才能让EMR集群访问它?

Chr*_*erB 19

问题不在于存储桶,而是缺少预期的IAM角色.

请参阅http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-iam-roles-creatingroles.html#emr-iam-roles-createdefaultwithcli

发出AWS CLI命令:

aws emr create-default-roles 
Run Code Online (Sandbox Code Playgroud)

然后再次创建群集.这是创建默认角色所需的一次性步骤.

  • 注意:小心使用最新版本的aws cli,我遇到了1.4(debian jessie包)的问题

  • 注2:取自mrjob代码和amazon annoucments:

    2015年4月6日之后创建的帐户需要实例配置文件和服务角色,并且最终将需要所有帐户