Gateway主要用於向計算叢集提交任務和進行安全隔離。為了方便部署Gateway環境,E-MapReduce提供了名為EMR-CLI的工具,它基於阿里雲ECS來建立執行個體並部署Gateway環境。當您建立了DataLake、DataFlow或OLAP類型的叢集時,可以使用本文檔來部署Gateway環境。
Gateway的三種部署形態與選型指南
Gateway 是 EMR 提供的作業提交隔離層,其核心價值在於:
解耦用戶端負載與叢集核心服務
將
spark-submit、hive -f、yarn application等用戶端操作從 Master/Resource Manager 節點剝離。實現多租戶環境隔離
支援為不同使用者/部門配置獨立的運行時環境。
提升叢集穩定性與可維護性
避免因高頻提交、調試指令碼、環境衝突或資源爭搶影響 YARN ResourceManager、HDFS NameNode 等關鍵服務。
EMR 當前提供三種 Gateway 形態,適用於不同叢集類型、版本及架構需求。
形態 | 支援的關聯集群類型與版本要求 | 部署方式與關鍵特性 | 適用情境與選型建議 |
Gateway 節點群組 | 僅支援以下叢集:
| • 直接在現有叢集內新增節點群組,詳情請參見管理節點群組。 | 優先推薦:適用於需快速為已有 DataLake/DataFlow 叢集擴充安全、隔離的提交入口,營運成本最低,配置一致性高。 |
Gateway 環境 | 支援DataLake、DataFlow、Custom、OLAP叢集 | • 基於ECS 執行個體手動部署,詳情請參見使用EMR-CLI自訂部署Gateway環境。 | 當叢集不支援 Gateway 節點群組時的標準化替代方案。 |
Gateway 叢集 | 僅支援Hadoop、Kafka叢集 |
| 適用於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環境
在ECS控制台建立執行個體,詳情請參見自訂購買執行個體。
說明建立的ECS執行個體可以不具備公網訪問能力。
相關參數推薦如下。
參數
說明
地區及可用性區域
必須與EMR叢集所在地區和可用性區域一致。
鏡像
必須與EMR執行個體的系統匹配。
系統硬碟
推薦使用ESSD雲端硬碟,不小於60 GiB。
網路
必須與EMR叢集VPC一致。
安全性群組
必須與EMR叢集的Master執行個體組安全性群組一致,保證ECS執行個體與EMR叢集的網路互連。
構建EMR Gateway專用的ECS RAM角色。
使用Resource Access Management員登入RAM控制台。
在左側導覽列,選擇。
在角色頁面,單擊建立角色。
在建立角色面板中,選擇信任實體類型為雲端服務,信任主體名稱為Elastic Compute Service,單擊確定。
填寫角色名稱(例如ECSForEMRGatewayRole),然後單擊確定。
為RAM角色授權。
在許可權管理頁簽,單擊新增授權。
在新增授權面板中,選擇系統策略中的AliyunEMRFullAccess、AliyunOSSFullAccess和AliyunDLFFullAccess,單擊確認新增授權。

單擊關閉。
授予ECS執行個體RAM角色。
登入ECS管理主控台。
在左側導覽列,選擇。
在頂部功能表列左上方處,選擇地區。
找到建立的ECS執行個體,選擇。
在彈窗中,選擇ECSForEMRGatewayRole角色,單擊確定。
串連ECS執行個體,詳情請參見串連ECS執行個體。
執行以下命令,安裝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執行以下命令,部署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功能,因此請謹慎操作。重新登入ECS執行個體,使得系統內容變數生效。
可選:配置Gateway節點的網域名稱解析。
重要Gateway包含Spark服務時須執行該步驟。
添加Zone,詳情請參見添加內建權威網域名稱。
添加解析記錄,詳情請參見添加解析記錄。
涉及參數如下表所示。
參數
說明
記錄類型
使用預設的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:切換計算叢集的步驟如下:
使用
-mv命令手動備份舊叢集(切換前叢集)中的檔案,包括/opt/apps目錄、/etc/taihao-apps目錄以及/etc/profile.d/yarn.sh檔案,以防止資料丟失。重新執行本文中的操作,進行計算叢集的重新部署。
> 執行個體設定 > 授予/收回RAM角色