软件配置

最近更新时间:2019-08-14 15:52:25

功能说明

软件配置支持您创建集群时自定义 hdfs、yarn、hive 等组件的配置。

自定义软件配置

Hadoop、Hive 等软件含有大量配置,通过软件配置功能您可以在新建集群的过程中自主配置组件参数。配置过程需要您按要求提供相应的 json 文件,文件可以由您自定义,也可以将存量集群的软件配置参数导出,然后快速新建一个集群。导出软件配置参数,详情请参见 导出软件配置

说明:

目前仅以下文件中的参数支持自定义配置:
HDFS:core-site.xml、hdfs-site.xml、hadoop-env.sh、log4j.properties
YARN:yarn-site.xml、mapred-site.xml、fair-scheduler.xml、capacity-scheduler.xml、yarn-env.sh、mapred-env.sh
Hive:hive-site.xml、hive-env.sh、hive-log4j2.properties

json 文件示例及说明:

[
    {
        "serviceName": "HDFS",
        "classification": "hdfs-site.xml",
        "serviceVersion": "2.8.4",
        "properties": {
            "dfs.blocksize": "67108864",
            "dfs.client.slow.io.warning.threshold.ms": "900000",
            "output.replace-datanode-on-failure": "false"
        }
    },
    {
        "serviceName": "YARN",
        "classification": "yarn-site.xml",
        "serviceVersion": "2.8.4",
        "properties": {
            "yarn.app.mapreduce.am.staging-dir": "/emr/hadoop-yarn/staging",
            "yarn.log-aggregation.retain-check-interval-seconds": "604800",
            "yarn.scheduler.minimum-allocation-vcores": "1"
        }
    },
    {
        "serviceName": "YARN",
        "classification": "capacity-scheduler.xml",
        "serviceVersion": "2.8.4",
        "properties": {
            "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<?xml-stylesheet type=\"text/xsl\" href=\"configuration.xsl\"?>\n<configuration><property>\n        <name>yarn.scheduler.capacity.maximum-am-resource-percent</name>\n        <value>0.8</value>\n</property>\n<property>\n        <name>yarn.scheduler.capacity.maximum-applications</name>\n        <value>1000</value>\n</property>\n<property>\n        <name>yarn.scheduler.capacity.root.default.capacity</name>\n        <value>100</value>\n</property>\n<property>\n        <name>yarn.scheduler.capacity.root.default.maximum-capacity</name>\n        <value>100</value>\n</property>\n<property>\n        <name>yarn.scheduler.capacity.root.default.user-limit-factor</name>\n        <value>1</value>\n</property>\n<property>\n        <name>yarn.scheduler.capacity.root.queues</name>\n        <value>default</value>\n</property>\n</configuration>"
        }
    }
]

配置参数说明:

  • serviceName 组件名,必须大写。
  • classification 文件名,必须使用全称,包含后缀。
  • serviceVersion 版本名,为组件版本,该版本必须与 EMR 产品版本中对应的组件版本一致。
  • properties 中填写需要自行配置的参数。
  • 如需修改 capacity-scheduler.xml、fair-scheduler.xml 中配置参数,properties 中的属性 key 需指定为 content,value 为整个文件的内容。

如果您需要调整存量集群的组件配置,您可以进行 组件参数配置

访问外部集群

配置外部集群 HDFS 的访问地址信息后,可以读取外部集群的数据。

购买时配置

EMR 支持新建集群时,配置访问外部集群,只需在 购买页 的软件配置处输入符合要求的 json 文件进行配置即可。下面以假设条件为例进行说明:

假设条件
假设需要访问外部集群的 nameservice 为 HDFS8088,其访问方式为:

<property>
    <name>dfs.ha.namenodes.HDFS8088</name>
    <value>nn1,nn2</value>
</property>
<property>
    <name>dfs.namenode.http-address.HDFS8088.nn1</name>
    <value>172.21.16.11:4008</value>
</property>
<property>
    <name>dfs.namenode.https-address.HDFS8088.nn1</name>
    <value>172.21.16.11:4009</value>
</property>
    <name>dfs.namenode.rpc-address.HDFS8088.nn1</name>
    <value>172.21.16.11:4007</value>
<property>
    <name>dfs.namenode.http-address.HDFS8088.nn2</name>
    <value>172.21.16.40:4008</value>
</property>
<property>
    <name>dfs.namenode.https-address.HDFS8088.nn2</name>
    <value>172.21.16.40:4009</value>
</property>
<property>
    <name>dfs.namenode.rpc-address.HDFS8088.nn2</name>
    <value>172.21.16.40:4007</value>
<property>

如需在新建集群中就可访问外部集群,进入 购买页 后,打开高级设置。

json 文件及说明:
以假设条件为例,框内应该填入 json 文件(json 内容要求同自定义软件配置)。

[
    {
        "serviceName": "HDFS",
        "classification": "hdfs-site.xml",
        "serviceVersion": "2.7.3",
        "properties": {
            "newNameServiceName": "newEmrCluster",
            "dfs.ha.namenodes.HDFS8088": "nn1,nn2",
            "dfs.namenode.http-address.HDFS8088.nn1": "172.21.16.11:4008",
            "dfs.namenode.https-address.HDFS8088.nn1": "172.21.16.11:4009",
            "dfs.namenode.rpc-address.HDFS8088.nn1": "172.21.16.11:4007",
            "dfs.namenode.http-address.HDFS8088.nn2": "172.21.16.40:4008",
            "dfs.namenode.https-address.HDFS8088.nn2": "172.21.16.40:4009",
            "dfs.namenode.rpc-address.HDFS8088.nn2": "172.21.16.40:4007"
        }
}
]

配置参数说明:

  • serviceName 组件名,必须为“HDFS”。
  • classification 文件名,必须为“hdfs-site.xml”。
  • serviceVersion 版本名,为组件版本,该版本必须与 EMR 产品版本中对应的组件版本一致。
  • properties 中填写的内容与假设条件一致。
  • newNameServiceName(选填)表示当前新建集群 nameservice。如为空,则由系统生产;如非空,只能由字符串 + 数字 + 中划线组成。
注意:

访问的外部集群只支持高可用集群。
访问的外部集群只支持未开启 kerberos 的集群。

购买后配置

EMR 在集群创建后,支持通过 EMR 的 配置下发 功能来访问外部集群。
假设条件如下:
假设本集群 nameservcie 为 HDFS80238(如果是非高可用集群,一般是 masterIp:rpcport,例如172.21.0.11:4007)。
需要访问外部集群的 nameservice 为 HDFS8088,其访问方式为:

<property>
    <name>dfs.ha.namenodes.HDFS8088</name>
    <value>nn1,nn2</value>
</property>
<property>
        <name>dfs.namenode.http-address.HDFS8088.nn1</name>
        <value>172.21.16.11:4008</value>
</property>
<property>
        <name>dfs.namenode.https-address.HDFS8088.nn1</name>
        <value>172.21.16.11:4009</value>
</property>
 <name>dfs.namenode.rpc-address.HDFS8088.nn1</name>
        <value>172.21.16.11:4007</value>

        <property>
        <name>dfs.namenode.http-address.HDFS8088.nn2</name>
        <value>172.21.16.40:4008</value>
</property>
<property>
        <name>dfs.namenode.https-address.HDFS8088.nn2</name>
        <value>172.21.16.40:4009</value>
</property>
<property>
        <name>dfs.namenode.rpc-address.HDFS8088.nn2</name>
        <value>172.21.16.40:4007</value>
<property>

如果这些信息是 EMR 集群中的,可在 配置下发 管理页查看,或者登录到机器查看 /usr/local/service/hadoop/etc/hadoop/hdfs-site.xml文件。

  1. 进入 配置下发 页面,选择 hdfs 组件的hdfs-site.xml文件。

  2. 修改配置项 dfs.nameservices 为HDFS80238,HDFS8088

  3. 增加配置项及值

    配置项 配置值
    dfs.ha.namenodes.HDFS8088 nn1,nn2
    fs.namenode.http-address.HDFS8088.nn1 172.21.16.11:4008
    dfs.namenode.https-address.HDFS8088.nn1 172.21.16.11:4009
    dfs.namenode.rpc-address.HDFS8088.nn1 172.21.16.11:4007
    fs.namenode.http-address.HDFS8088.nn2 172.21.16.40:4008
    dfs.namenode.https-address.HDFS8088.nn2 172.21.16.40:4009
    dfs.namenode.rpc-address.HDFS8088.nn2 172.21.16.40:4007
    dfs.client.failover.proxy.provider.HDFS8088 org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
    dfs.internal.nameservices HDFS80238
    >! dfs.internal.nameservice 需要新增,否则扩容集群后可能导致 datanode 上报异常而被 namenode 标记为 dead。
  4. 下发配置,使用 配置下发 功能下发配置。

更多相关配置详情及原理,请参考 社区文档