全部产品
Search
文档中心

开源大数据平台E-MapReduce:使用EMR-CLI自定义部署Gateway环境

更新时间:Jan 06, 2026

Gateway主要用于向计算集群提交任务和进行安全隔离。为了方便部署Gateway环境,E-MapReduce提供了名为EMR-CLI的工具,它基于阿里云ECS来创建实例并部署Gateway环境。当您创建了DataLake、DataFlow或OLAP类型的集群时,可以使用本文档来部署Gateway环境。

Gateway的三种部署形态与选型指南

Gateway 是 EMR 提供的作业提交隔离层,其核心价值在于:

  • 解耦客户端负载与集群核心服务

    将 spark-submithive -fyarn application 等客户端操作从 Master/Resource Manager 节点剥离。

  • 实现多租户环境隔离

    支持为不同用户/部门配置独立的运行时环境。

  • 提升集群稳定性与可维护性

    避免因高频提交、调试脚本、环境冲突或资源争抢影响 YARN ResourceManager、HDFS NameNode 等关键服务。

EMR 当前提供三种 Gateway 形态,适用于不同集群类型、版本及架构需求。

形态

支持的关联集群类型与版本要求

部署方式与关键特性

适用场景与选型建议

Gateway 节点组
(推荐首选)

仅支持以下集群:

  • DataLake和DataFlow集群:EMR-5.10.1及以上版本

  • Custom集群:EMR-5.17.1及以上版本

• 直接在现有集群内新增节点组,详情请参见管理节点组
• 自动同步集群主版本的客户端配置。

优先推荐:适用于需快速为已有 DataLake/DataFlow 集群扩展安全、隔离的提交入口,运维成本最低,配置一致性高。

Gateway 环境

支持DataLake、DataFlow、Custom、OLAP集群

• 基于ECS 实例手动部署详情请参见使用EMR-CLI自定义部署Gateway环境
• 完全独立的文件系统与运行环境,需手动同步集群主版本的客户端配置。

当集群不支持 Gateway 节点组时的标准化替代方案。

Gateway 集群

仅支持Hadoop、Kafka集群

  • 创建一个独立的、仅含 Gateway 节点的 EMR 集群,详情请参见创建Gateway集群

  • 自动同步集群主版本的客户端配置。

适用于Hadoop、Kafka集群。

前提条件

已经在E-MapReduce中创建了业务场景为数据湖(DataLake)、实时数据流(DataFlow)、数据分析(OLAP)或自定义(Custom)场景的计算集群,且计算集群状态为运行中。创建集群详情请参见创建集群

使用限制

  • 集群类型:本文方案仅适用于为数据湖(DataLake)、实时数据流集群(DataFlow)和数据分析集群(OLAP)或自定义(Custom)集群的Gateway环境部署。在集群类型与集群版本兼容的情况下,推荐使用Gateway 节点组。

    对于已存在的Hadoop集群和Kafka集群的Gateway环境部署,详情请参见创建Gateway集群

    说明

    只有在2022年12月19日17点(UTC+8)之前创建过Hadoop或Kafka集群的账号,之后才允许继续创建这两种类型的集群。若账号在2022年12月19日17点(UTC+8)之前未曾创建过这两种集群,之后也无法进行创建。

  • 覆盖式安装:EMR-CLI在部署Gateway客户端时采用覆盖安装模式。如果您已在ECS中部署了Gateway,则重新部署时会覆盖旧的客户端,并在同一目录下安装新的客户端。

  • 独立部署:请勿使用EMR集群中已有的ECS实例(例如Master、Core或Task节点)作为Gateway机器,以免客户端环境干扰集群服务的正常运行。

  • 支持的服务:目前支持通过此方式部署的服务客户端包括:HDFS、YARN、HBase、HIVE、SPARK2、SPARK3、JINDOSDK、FLINK、SQOOP、IMPALA、PRESTO、HUDI、ICEBERG、TEZ和DELTALAKE。

首次部署Gateway环境

  1. 在ECS控制台创建实例,详情请参见自定义购买实例

    说明

    创建的ECS实例可以不具备公网访问能力。

    相关参数推荐如下。

    参数

    说明

    地域及可用区

    必须与EMR集群所在地域和可用区一致。

    镜像

    必须与EMR实例的系统匹配。

    系统盘

    推荐使用ESSD云盘,不小于60 GiB。

    网络

    必须与EMR集群VPC一致。

    安全组

    必须与EMR集群的Master实例组安全组一致,保证ECS实例与EMR集群的网络互通。

  2. 构建EMR Gateway专用的ECS RAM角色。

    1. 使用RAM管理员登录RAM控制台

    2. 在左侧导航栏,选择身份管理 > 角色

    3. 角色页面,单击创建角色

    4. 创建角色面板中,选择信任实体类型云服务信任主体名称云服务器ECS,单击确定。

    5. 填写角色名称(例如ECSForEMRGatewayRole),然后单击确定

  3. 为RAM角色授权。

    1. 权限管理页签,单击新增授权

    2. 新增授权面板中,选择系统策略中的AliyunEMRFullAccess、AliyunOSSFullAccess和AliyunDLFFullAccess,单击确认新增授权

      image.png

    3. 单击关闭

  4. 授予ECS实例RAM角色。

    1. 登录ECS管理控制台

    2. 在左侧导航栏,选择实例与镜像 > 实例

    3. 在顶部菜单栏左上角处,选择地域。

    4. 找到新建的ECS实例,选择image > 实例设置 > 授予/收回RAM角色

    5. 在弹窗中,选择ECSForEMRGatewayRole角色,单击确定

  5. 连接ECS实例,详情请参见连接ECS实例

  6. 执行以下命令,安装EMR-CLI。

    regionId=`curl http://100.100.100.200/latest/meta-data/region-id`; curl https://ecm-repo-${regionId}.oss-${regionId}-internal.aliyuncs.com/emrcli/emrcli.sh -o /tmp/emrcli.sh; chmod 755 /tmp/emrcli.sh; sh /tmp/emrcli.sh install ${regionId}

    安装成功会返回以下信息。

    install emrcli success
  7. 执行以下命令,部署EMR Gateway客户端。

    emrcli gateway deploy \
      --clusterId <ClusterId> \
      --appNames <ApplicationName>

    您需要根据实际情况修改以下参数。

    参数

    是否必选

    描述

    clusterId

    在EMR上已创建集群的集群ID。

    appNames

    应用名称。有多个应用时,使用英文逗号(,)隔开,例如,HDFS,YARN

    未指定该参数时,默认为集群所有支持的客户端应用,例如Hive和HDFS。

    部署成功会返回以下信息。

    deployGateway success
    重要

    Gateway安装后,系统环境变量中的JAVA_HOME会调整为/usr/lib/jvm/java-1.8.0 。您可以在/etc/profile.d/emr_env.sh文件中修改,但修改后可能影响Gateway功能,因此请谨慎操作。

  8. 重新登录ECS实例,使得系统环境变量生效。

  9. 可选:配置Gateway节点的域名解析。

    重要

    Gateway包含Spark服务时须执行该步骤。

    1. 添加Zone,详情请参见添加内置权威域名

    2. 添加解析记录,详情请参见添加解析记录

      涉及参数如下表所示。

      参数

      说明

      记录类型

      使用默认的A

      主机记录

      填写Gateway机器的hostname。例如,iZ2zea8r0aht2vzbqci****。

      您可以通过命令hostname获取。

      记录值

      填写Gateway机器的内网IP地址。

      您可以在节点管理页面查看。

      TTL值

      使用默认值。

管理Gateway环境

Gateway创建完成后,如果Gateway关联的计算集群进行了服务的新增或服务配置的更改,您可以通过以下命令更新客户端组件或同步最新配置。

更新客户端组件

当EMR集群中新增了服务(例如新安装了Flink),您可以在Gateway节点上增量安装对应的客户端。deploy命令会覆盖已安装应用的配置,并增量安装新应用。

# 示例:在已有HDFS,YARN的基础上,新增FLINK客户端
emrcli gateway deploy \
  --clusterId <ClusterId> \
  --appNames HDFS,YARN,FLINK

更新成功后返回以下信息。

deployGateway success

同步EMR集群修改后的配置

如果EMR集群中服务的配置发生变更(例如通过EMR控制台修改了core-site.xml),您需要手动将新配置同步到Gateway节点。

重要

同步配置时会覆盖Gateway上的配置,因此请谨慎操作。

# 执行同步命令
emrcli gateway refreshConfigs \
  --clusterId <ClusterId> \
  --appNames <ApplicationName> # 可选,指定需要同步的应用

同步成功后返回以下信息。

refreshConfiguration success

管理EMR-CLI

查看EMR CLI版本

您可以通过以下命令来查看EMR CLI的版本信息。

emrcli version

返回以下类似信息。

2.0.0

升级EMR CLI

重新执行首次部署Gateway环境中安装EMR CLI的步骤,会自动升级至最新版本。

常见问题

Q:如何切换计算集群?

A:切换计算集群的步骤如下:

  1. 使用-mv命令手动备份旧集群(切换前集群)中的文件,包括/opt/apps目录、/etc/taihao-apps目录以及/etc/profile.d/yarn.sh文件,以防止数据丢失。

  2. 重新执行本文中的操作,进行计算集群的重新部署。