全部產品
Search
文件中心

E-MapReduce:使用EMR-CLI自訂部署Gateway環境

更新時間:Jan 07, 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. 使用Resource Access Management員登入RAM控制台

    2. 在左側導覽列,選擇身份管理 > 角色

    3. 角色頁面,單擊建立角色

    4. 建立角色面板中,選擇信任實體類型雲端服務信任主體名稱Elastic Compute Service,單擊確定。

    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. 重新執行本文中的操作,進行計算叢集的重新部署。