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控制台。
-
在左側導覽列,選擇。
-
在角色頁面,單擊创建角色。
-
在创建角色面板中,選擇信任實體類型為雲端服務,信任主體名稱為雲端服務器 ECS,單擊確定。
-
填寫角色名称(例如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角色