EMR中繼資料遷移DLF最佳實務
本文主要為您介紹如何將已有EMR叢集中儲存在RDS或內建MySQL中的Hive Metastore中繼資料遷移到DLF,並說明如何在EMR叢集中切換DLF作為統一中繼資料,從而實現多種資料來源入湖,搭建高效的資料湖解決方案。
適用情境
-
從其他巨量資料叢集遷移到阿里雲EMR新叢集(DLF做中繼資料)時,中繼資料遷移到DLF中的具體操作,請參見中繼資料遷移。
-
從阿里雲EMR叢集(內建MySQL或自建RDS做中繼資料),整體叢集需要遷移到阿里雲EMR新叢集(DLF做中繼資料)時,中繼資料遷移到DLF中的具體操作,請參見中繼資料遷移。
-
阿里雲EMR叢集(內建MySQL或自建RDS做中繼資料),僅中繼資料修改為DLF時,可參考EMR叢集引擎切換中繼資料。
-
EMR主要版本需要3系列>=EMR 3.33,或 4系列>= EMR 4.6 ,或 5系列>=EMR 5.1 才能使用DLF。
-
其他更低版本需要遷移DLF,可加DingTalk群:33719678。
中繼資料遷移
DLF提供了可視化的中繼資料遷移功能,可以快速地將Hive Metastore中繼資料遷移到DLF中繼資料中。
準備工作
-
已建立中繼資料為自建RDS的EMR叢集。如未建立,請參見配置自建RDS。本樣本中中繼資料為自建RDS。
-
已在EMR叢集中建立Hive資料庫。如未建立,請參見Hive基礎操作。本樣本資料庫為
testdb2。 -
在中繼資料遷移之前,我們需要檢查資料庫遠端存取許可權。
-
登入RDS或MySQL資料庫,執行如下語句進行遠端存取授權(以root帳號,testdb庫為例),其中
xxxx為root使用者的密碼。CREATE USER 'root'@'%' IDENTIFIED BY 'xxxx'; GRANT ALL PRIVILEGES ON testdb.* TO 'root'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; -
如果是RDS資料庫,也可以在RDS控制台上查看和修改存取權限,詳情請參見修改帳號許可權。
在RDS執行個體左側導覽列單擊帳號管理,可在使用者帳號頁簽查看已建立的帳號列表,包含帳號名稱、類型(高許可權帳號或普通帳號)、狀態、所屬資料庫及其許可權(如讀寫DDL+DML),並可執行重設密碼、修改許可權、刪除等操作。
-
建立遷移任務
-
登入資料湖構建控制台。
-
切換到EMR叢集所屬的地區。
-
在左側功能表列,單擊。
-
在遷移任務頁簽,單擊建立遷移任務。
-
配置源庫資訊。配置參數詳情,請參見建立中繼資料遷移任務。
在源庫配置頁面,資料庫類型選擇MySQL,類型選擇Aliyun RDS,選擇對應的RDS執行個體,填寫資料庫名稱(如
testdb2)、使用者名稱和密碼。網路連接方式選擇阿里雲VPC,並配置對應的Virtual Private Cloud、交換器VSwitch和安全性群組,然後單擊下一步。 -
配置遷移任務。本樣本任務名稱為
test_rds。在基礎設定地區,任務描述填寫
test。在遷移策略地區,資料目錄選擇rds,衝突解決方案策略選擇更新舊的中繼資料,日誌存放路徑設定為對應的OSS路徑,同步對象全選(包括database、function、table、partition)。配置完成後單擊下一步。 -
確認任務配置資訊無誤,單擊確定,建立任務完成。
運行遷移任務
在遷移工作清單中,可以查看剛剛建立的遷移任務test_rds,單擊操作列的運行,執行任務。執行成功後,任務狀態顯示為成功。
查看運行記錄和日誌
-
單擊操作列的運行記錄,可查看任務的執行歷史。
執行歷史頁面以表格形式展示各作業的作業ID/任務名稱、資料庫類型、最近執行狀態、成功數量/失敗數量、最近執行時間、完成時間/期間等資訊,單擊操作列的查看日誌可查看對應作業的執行日誌。
-
單擊操作列的查看日誌,可查看任務啟動並執行日誌詳情。
確認中繼資料遷移到DLF
-
在左側功能表列,單擊。
-
單擊資料庫頁簽,選擇資料目錄,查詢目標資料庫名稱。
查詢結果中顯示目標資料庫(如
testdb2)的記錄,包括庫名、位置、資料目錄ID及建立時間等資訊,表明中繼資料已成功遷移到DLF。
EMR叢集引擎切換中繼資料
阿里雲EMR叢集的中繼資料存放區從MySQL切換至DLF,需更新相關配置,以確保EMR能夠正確地與DLF整合並利用其提供的中繼資料管理功能。
Hive
在hive-site.xml中修改如下配置,儲存配置並使配置生效,具體操作請參見修改配置項。
如需指定資料目錄,請配置 dlf.catalog.id 參數,否則中繼資料將預設建立在 default 資料目錄下。
<!-- 配置dlf 中繼資料服務地址,region替換為叢集所在的region,比如cn-hangzhou -->
dlf.catalog.endpoint=dlf-vpc.{regionId}.aliyuncs.com
<!-- 注意:複製粘貼後檢查下,不要有空格!! -->
hive.imetastoreclient.factory.class=com.aliyun.datalake.metastore.hive2.DlfMetaStoreClientFactory
dlf.catalog.akMode=EMR_AUTO
dlf.catalog.proxyMode=DLF_ONLY
<!-- Hive3需要配置 -->
hive.notification.event.poll.interval=0s
<!--EMR-3.33版本之前和EMR-4.6.0之前,需要配置-->
dlf.catalog.sts.isNewMode=false
Presto
在hive.properties中添加如下配置,儲存配置並使配置生效,具體操作請參見添加配置項。
hive.metastore=dlf
<!-- 配置dlf 中繼資料服務地址,region替換為叢集所在的region,比如cn-hangzhou -->
dlf.catalog.endpoint=dlf-vpc.{regionId}.aliyuncs.com
dlf.catalog.akMode=EMR_AUTO
dlf.catalog.proxyMode=DLF_ONLY
<!-- 請參考hive組件hive-site.xml中配置的hive.metastore.warehouse.dir值 -->
dlf.catalog.default-warehouse-dir= <!-- 與hive.metastore.warehouse.dir值相同 -->
<!--EMR-3.33版本之前和EMR-4.6.0之前,需要配置-->
dlf.catalog.sts.isNewMode=false
Spark
在Spark配置頁面,單擊部署用戶端配置,然後重啟Spark服務。
Impala
在Impala配置頁面,單擊部署用戶端配置,然後重啟Impala服務。
驗證是否切換成功
以Hive引擎為例,其他引擎也可進行驗證。
常見問題
Q:如果同一個中繼資料遷移任務,多次運行是什麼結果?
A:同一個中繼資料遷移任務,多次運行結果一致。中繼資料遷移任務以RDS或MySQL中繼資料為基準,保證DLF中繼資料與源庫中中繼資料的最終一致性。可在遷移任務配置中選擇衝突解決方案策略,詳情請參見配置遷移任務資訊。