本文主要為您介紹如何將已有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中修改如下配置,開啟自動設定更新,並儲存,重啟Hive服務。詳情請參見修改配置項。
如需指定資料目錄,請配置 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中添加如下配置,開啟自動設定更新,並儲存,重啟Presto服務。詳情請參見添加配置項。
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中繼資料與源庫中中繼資料的最終一致性。可在遷移任務配置中選擇衝突解決方案策略,詳情請參見配置遷移任務資訊。