【问题标题】:EMR cluster created with CloudFormation not shown未显示使用 CloudFormation 创建的 EMR 集群
【发布时间】:2019-05-13 09:25:46
【问题描述】:

我已将 EMR 集群添加到堆栈中。成功更新堆栈(CloudFormation)后,我可以在 EC2 控制台中看到主节点和从节点,并且可以通过 SSH 连接到主节点。但是 AWS 控制台没有显示新集群。即使aws emr list-clusters 也没有显示集群。我已经对该地区进行了三次检查,并且确定我正在查看正确的地区。

相关 CloudFormation JSON:

"Spark01EmrCluster": {
  "Type": "AWS::EMR::Cluster",
  "Properties": {
    "Name": "Spark01EmrCluster",
    "Applications": [
      {
        "Name": "Spark"
      },
      {
        "Name": "Ganglia"
      },
      {
        "Name": "Zeppelin"
      }
    ],
    "Instances": {
      "Ec2KeyName": {"Ref": "KeyName"},
      "Ec2SubnetId": {"Ref": "PublicSubnetId"},
      "MasterInstanceGroup": {
        "InstanceCount": 1,
        "InstanceType": "m4.large",
        "Name": "Master"
      },
      "CoreInstanceGroup": {
        "InstanceCount": 1,
        "InstanceType": "m4.large",
        "Name": "Core"
      }
    },
    "Configurations": [
      {
        "Classification": "spark-env",
        "Configurations": [
          {
            "Classification": "export",
            "ConfigurationProperties": {
              "PYSPARK_PYTHON": "/usr/bin/python3"
            }
          }
        ]
      }
    ],
    "BootstrapActions": [
      {
        "Name": "InstallPipPackages",
        "ScriptBootstrapAction": {
          "Path": "[S3 PATH]"
        }
      }
    ],
    "JobFlowRole": {"Ref": "Spark01InstanceProfile"},
    "ServiceRole": "MyStackEmrDefaultRole",
    "ReleaseLabel": "emr-5.13.0"
  }
}

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation emr amazon-emr


    【解决方案1】:

    原因是缺少VisibleToAllUsers 属性,默认为false。由于我使用的是 AWS Vault(即使用 STS AssumeRole API 进行身份验证),所以我基本上每次都是不同的用户,所以我看不到集群。当我得到Job flow ID does not exist 时,我也无法更新堆栈以添加VisibleToAllUsers

    解决方案是以 root 用户身份登录并从那里修复问题(我必须手动删除集群,但如果我没有把事情搞砸的话,从堆栈模板 JSON 中删除它并更新堆栈可能会奏效)。

    然后我将集群添加回模板(VisibleToAllUsers 设置为 true)并照常更新堆栈(AWS Vault)。

    【讨论】:

    • 我认为他们现在已将默认设置更改为 true。不知道为什么仍然需要该属性
    • 不,我默认使用 Cloudformation 的 false。调用 API SetVisibleToAllUsers 时,默认值为 true,不过(这有点道理)
    • 我认为他们应该弃用整个事情。对我来说似乎毫无意义。另外,为什么终止的集群会永远挂起并使集群列表变得混乱?
    猜你喜欢
    • 2020-12-28
    • 1970-01-01
    • 2015-03-21
    • 2015-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-23
    相关资源
    最近更新 更多