本文介绍如何通过EMR OpenAPI修改集群的配置。

前提条件

修改集群配置

通过ModifyClusterServiceConfig修改集群配置,包括修改已有配置和新增参数。

  • 修改已有配置
    参数 类型 是否必选 示例值 描述
    RegionId String cn-hangzhou 地域ID。
    ClusterId String C-C0D50B0FA24A**** 集群ID。
    ServiceName String HDFS 服务名称。可参见服务详细信息
    ConfigParams String {"hdfs-site":{"dfs.namenode.resource.check.interval":"6000"}} 本次修改的具体内容,JSON格式的字符串。
    Comment String modify hdfs config 本次修改的备注信息。

    代码示例如下。

    #!/usr/bin/env python
    #coding=utf-8
    
    from aliyunsdkcore.client import AcsClient
    from aliyunsdkcore.acs_exception.exceptions import ClientException
    from aliyunsdkcore.acs_exception.exceptions import ServerException
    from aliyunsdkemr.request.v20160408.ModifyClusterServiceConfigRequest import ModifyClusterServiceConfigRequest
    
    client = AcsClient('<accessKeyId>', '<accessSecret>', 'cn-hangzhou')
    
    request = ModifyClusterServiceConfigRequest()
    request.set_accept_format('json')
    
    request.set_ClusterId("C-C0D50B0FA24A****")
    request.set_ServiceName("HDFS")
    request.set_ConfigParams("{\"hdfs-site\":{\"dfs.namenode.resource.check.interval\":\"6000\"}}")
    request.set_Comment("modify hdfs config")
    
    response = client.do_action_with_exception(request)
    # python2:  print(response) 
    print(str(response, encoding='utf-8'))
  • 新增参数

    在一个集群内指定的机器节点上新增参数。

    参数 类型 是否必选 示例值 描述
    RegionId String cn-hangzhou 地域ID。
    ClusterId String C-2FD9050E78C8**** 集群ID。
    ServiceName String HDFS 服务名称。可参见服务详细信息
    ConfigParams String {} 表示新增。
    Comment String add new config 本次新增的备注信息。
    CustomConfigParams String {"hdfs-site":{"newkey":{"Value":"customValue"}}} 自定义配置项的新增改内容。
    HostInstanceId String i-bp146tnrkq4tcso2**** 主机实例ID,一般是ECS实例的ID。

    代码示例如下。

    #!/usr/bin/env python
    #coding=utf-8
    
    from aliyunsdkcore.client import AcsClient
    from aliyunsdkcore.acs_exception.exceptions import ClientException
    from aliyunsdkcore.acs_exception.exceptions import ServerException
    from aliyunsdkemr.request.v20160408.ModifyClusterServiceConfigRequest import ModifyClusterServiceConfigRequest
    
    client = AcsClient('<accessKeyId>', '<accessSecret>', 'cn-hangzhou')
    
    request = ModifyClusterServiceConfigRequest()
    request.set_accept_format('json')
    
    request.set_ClusterId("C-2FD9050E78C8****")
    request.set_ServiceName("HDFS")
    request.set_ConfigParams("{}")
    request.set_Comment("add new config")
    request.set_CustomConfigParams("{\"hdfs-site\":{\"newkey\":{\"Value\":\"customValue\"}}}")
    request.set_HostInstanceId("i-bp146tnrkq4tcso2****")
    
    response = client.do_action_with_exception(request)
    # python2:  print(response) 
    print(str(response, encoding='utf-8'))

使集群配置生效

  • 服务参数

    如果修改的是服务参数,需要重启服务才能生效,可以调用RunClusterServiceAction进行服务的重启,也可以通过界面来进行重启。

    参数 类型 是否必选 示例值 描述
    RegionId String cn-hangzhou 地域ID。
    ClusterId String C-C0D50B0FA24A**** 集群ID。
    ServiceName String HDFS 服务名称。可参见服务详细信息
    ServiceActionName String RESTART Action名。 取值:
    • START:启动组件。
    • RESTART:重启组件。
    • STOP:停止组件。
    • CONFIGURE:发送配置并更新到指定的节点上。

    代码示例如下。

    #!/usr/bin/env python
    #coding=utf-8
    
    from aliyunsdkcore.client import AcsClient
    from aliyunsdkcore.acs_exception.exceptions import ClientException
    from aliyunsdkcore.acs_exception.exceptions import ServerException
    from aliyunsdkemr.request.v20160408.RunClusterServiceActionRequest import RunClusterServiceActionRequest
    
    client = AcsClient('<accessKeyId>', '<accessSecret>', 'cn-hangzhou')
    
    request = RunClusterServiceActionRequest()
    request.set_accept_format('json')
    
    request.set_ClusterId("C-C0D50B0FA24A****")
    request.set_ServiceName("HDFS")
    request.set_ServiceActionName("RESTART")
    
    response = client.do_action_with_exception(request)
    # python2:  print(response) 
    print(str(response, encoding='utf-8'))
  • 客户端参数

    如果修改的是客户端参数,将更新后的配置调用RunClusterServiceAction推送到集群上,直接部署就可生效。

    参数 类型 是否必选 示例值 描述
    RegionId String cn-hangzhou 地域ID。
    ClusterId String C-ADB1FDB7AA82**** 集群ID。
    ServiceName String HDFS 服务名称。可参见服务详细信息
    ServiceActionName String CONFIGURE Action名。 取值:
    • START:启动组件。
    • RESTART:重启组件。
    • STOP:停止组件。
    • CONFIGURE:发送配置并更新到指定的节点上。

    代码示例如下。

    #!/usr/bin/env python
    #coding=utf-8
    
    from aliyunsdkcore.client import AcsClient
    from aliyunsdkcore.acs_exception.exceptions import ClientException
    from aliyunsdkcore.acs_exception.exceptions import ServerException
    from aliyunsdkemr.request.v20160408.RunClusterServiceActionRequest import RunClusterServiceActionRequest
    
    client = AcsClient('<accessKeyId>', '<accessSecret>', 'cn-hangzhou')
    
    request = RunClusterServiceActionRequest()
    request.set_accept_format('json')
    
    request.set_ClusterId("C-ADB1FDB7AA82A****")
    request.set_ServiceName("HDFS")
    request.set_ServiceActionName("CONFIGURE")
    
    response = client.do_action_with_exception(request)
    # python2:  print(response) 
    print(str(response, encoding='utf-8'))

接口修改

ConfigType可以删除。

参考OpenAPI

服务详细信息

  • 服务列表
    SPARK
    KAFKA
    HIVE
    TEZ
    STORM
    ZEPPELIN
    HBASE
    YARN
    HDFS
    PRESTO
    IMPALA
    DRUID
    KNOX
    KAFKA-MANAGER
    GANGLIA
    HUE
    PHOENIX
    FLINK
    RANGER
    APACHEDS
    HAS
    SQOOP
    PIG
    ZOOKEEPER
    OOZIE
    TENSORFLOW
    SUPERSET
    TENSORFLOW-ON-YARN
    LIVY
    JUPYTER
    ANALYTICS-ZOO
    FLUME
    SMARTDATA
    BIGBOOT
    HIVE-CDH
    KUDU
    OPENLDAP
    TENSORFLOW-ON-SPARK
    GRAFANA
    PROMETHEUS
    ALERTMANAGER
    CLICKHOUSE
  • 服务组件列表
    
    ANALYTICS-ZOO
            AnalyticsZooPython
            AnalyticsZooScala
    GANGLIA
            GMETAD
            GMOND
    HBASE
            HMaster
            HRegionServer
            ThriftServer
    HDFS
            KMS
            HttpFS
            NameNode
            DataNode
            SecondaryNameNode
    HIVE
            HiveServer
            HiveMetaStore
    IMPALA
            ImpalaRuntime
            ImpalaCatalogd
            ImpalaStatestored
            Impalad
    KUDU
            KuduMaster
            KuduTserver
    PRESTO
            PrestoMaster
            PrestoWorker
    RANGER
            RangerAdmin
            RangerUserSync
            RangerPlugin
    SPARK
            SparkHistory
    YARN
            ResourceManager
            JobHistory
            TimeLineServer
            WebAppProxyServer
            NodeManager