本文主要為您介紹如何將已有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控制台上查看和修改存取權限,詳情請參見修改帳號許可權。

建立遷移任務
登入資料湖構建控制台。
切換到EMR叢集所屬的地區。
在左側功能表列,單擊。
在遷移任務頁簽,單擊建立遷移任務。
配置源庫資訊,如下圖。配置參數詳情,請參見建立中繼資料遷移任務。

配置遷移任務,如下圖。本樣本任務名稱為
test_rds。
確認任務配置資訊無誤,單擊確定,建立任務完成。
運行遷移任務
在遷移工作清單中,可以查看剛剛建立的遷移任務test_rds,單擊操作列的運行,執行任務。執行成功後如下圖。

查看運行記錄和日誌
單擊操作列的運行記錄,可查看任務的執行歷史。如下圖:

單擊操作列的查看日誌,可查看任務啟動並執行日誌詳情。
確認中繼資料遷移到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=falsePresto
在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=falseSpark
在Spark配置頁面,單擊部署用戶端配置,然後重啟Spark服務。

Impala
在Impala配置頁面,單擊部署用戶端配置,然後重啟Impala服務。
驗證是否切換成功
以Hive引擎為例,其他引擎也可進行驗證。
常見問題
Q:如果同一個中繼資料遷移任務,多次運行是什麼結果?
A:同一個中繼資料遷移任務,多次運行結果一致。中繼資料遷移任務以RDS或MySQL中繼資料為基準,保證DLF中繼資料與源庫中中繼資料的最終一致性。可在遷移任務配置中選擇衝突解決方案策略,詳情請參見配置遷移任務資訊。
