EMR元數(shù)據(jù)遷移DLF最佳實(shí)踐
本文主要為您介紹如何將已有EMR集群中存儲(chǔ)在RDS或內(nèi)置MySQL中的Hive Metastore元數(shù)據(jù)遷移到DLF,并說明如何在EMR集群中切換DLF作為統(tǒng)一元數(shù)據(jù),從而實(shí)現(xiàn)多種數(shù)據(jù)源入湖,搭建高效的數(shù)據(jù)湖解決方案。
適用場(chǎng)景
從其他大數(shù)據(jù)集群遷移到阿里云EMR新集群(DLF做元數(shù)據(jù))時(shí),元數(shù)據(jù)遷移到DLF中的具體操作,請(qǐng)參見元數(shù)據(jù)遷移。
從阿里云EMR集群(內(nèi)置MySQL或自建RDS做元數(shù)據(jù)),整體集群需要遷移到阿里云EMR新集群(DLF做元數(shù)據(jù))時(shí),元數(shù)據(jù)遷移到DLF中的具體操作,請(qǐng)參見元數(shù)據(jù)遷移。
阿里云EMR集群(內(nèi)置MySQL或自建RDS做元數(shù)據(jù)),僅元數(shù)據(jù)修改為DLF時(shí),可參考EMR集群引擎切換元數(shù)據(jù)。
重要EMR主版本需要3系列>=EMR 3.33,或 4系列>= EMR 4.6 ,或 5系列>=EMR 5.1 才能使用DLF。
其他更低版本需要遷移DLF,可加釘釘群:33719678。
元數(shù)據(jù)遷移
DLF提供了可視化的元數(shù)據(jù)遷移功能,可以快速地將Hive Metastore元數(shù)據(jù)遷移到DLF元數(shù)據(jù)中。
準(zhǔn)備工作
已創(chuàng)建元數(shù)據(jù)為自建RDS的EMR集群。如未創(chuàng)建,請(qǐng)參見配置自建RDS。本示例中元數(shù)據(jù)為自建RDS。
已在EMR集群中創(chuàng)建Hive數(shù)據(jù)庫。如未創(chuàng)建,請(qǐng)參見Hive基礎(chǔ)操作。本示例數(shù)據(jù)庫為
testdb2
。在元數(shù)據(jù)遷移之前,我們需要檢查數(shù)據(jù)庫遠(yuǎn)程訪問權(quán)限。
登錄RDS或MySQL數(shù)據(jù)庫,執(zhí)行如下語句進(jìn)行遠(yuǎn)程訪問授權(quán)(以root賬號(hào),testdb庫為例),其中
xxxx
為root用戶的密碼。CREATE USER 'root'@'%' IDENTIFIED BY 'xxxx'; GRANT ALL PRIVILEGES ON testdb.* TO 'root'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
如果是RDS數(shù)據(jù)庫,也可以在RDS控制臺(tái)上查看和修改訪問權(quán)限,詳情請(qǐng)參見修改賬號(hào)權(quán)限。
創(chuàng)建遷移任務(wù)
切換到EMR集群所屬的地域。
在左側(cè)菜單欄,單擊
。在遷移任務(wù)頁簽,單擊創(chuàng)建遷移任務(wù)。
配置源庫信息,如下圖。配置參數(shù)詳情,請(qǐng)參見創(chuàng)建元數(shù)據(jù)遷移任務(wù)。
配置遷移任務(wù),如下圖。本示例任務(wù)名稱為
test_rds
。確認(rèn)任務(wù)配置信息無誤,單擊確定,創(chuàng)建任務(wù)完成。
運(yùn)行遷移任務(wù)
在遷移任務(wù)列表中,可以查看剛剛創(chuàng)建的遷移任務(wù)test_rds
,單擊操作列的運(yùn)行,執(zhí)行任務(wù)。執(zhí)行成功后如下圖。
查看運(yùn)行記錄和日志
單擊操作列的運(yùn)行記錄,可查看任務(wù)的執(zhí)行歷史。如下圖:
單擊操作列的查看日志,可查看任務(wù)運(yùn)行的日志詳情。
確認(rèn)元數(shù)據(jù)遷移到DLF
在左側(cè)菜單欄,單擊
。單擊數(shù)據(jù)庫頁簽,選擇數(shù)據(jù)目錄,查詢目標(biāo)數(shù)據(jù)庫名稱。如下圖:
EMR集群引擎切換元數(shù)據(jù)
阿里云EMR集群(MySQL做元數(shù)據(jù)),僅元數(shù)據(jù)修改為DLF時(shí),需要將EMR集群切換使用DLF元數(shù)據(jù)。
Hive
在hive-site.xml中修改如下配置,開啟自動(dòng)配置更新,并保存,重啟Hive服務(wù)。詳情請(qǐng)參見修改配置項(xiàng)。
如需指定數(shù)據(jù)目錄,請(qǐng)配置 dlf.catalog.id
參數(shù),否則元數(shù)據(jù)將默認(rèn)創(chuàng)建在 default
數(shù)據(jù)目錄下。
<!-- 配置dlf 元數(shù)據(jù)服務(wù)地址,region替換為集群所在的region,比如cn-hangzhou -->
dlf.catalog.endpoint=dlf-vpc.{regionId}.aliyuncs.com
<!-- 注意:復(fù)制粘貼后檢查下,不要有空格?。?! -->
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中添加如下配置,開啟自動(dòng)配置更新,并保存,重啟Presto服務(wù)。詳情請(qǐng)參見添加配置項(xiàng)。
hive.metastore=dlf
<!-- 配置dlf 元數(shù)據(jù)服務(wù)地址,region替換為集群所在的region,比如cn-hangzhou -->
dlf.catalog.endpoint=dlf-vpc.{regionId}.aliyuncs.com
dlf.catalog.akMode=EMR_AUTO
dlf.catalog.proxyMode=DLF_ONLY
<!-- 請(qǐng)參考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服務(wù)。
Impala
在Impala配置頁面,單擊部署客戶端配置,然后重啟Impala服務(wù)。
驗(yàn)證是否切換成功
以Hive引擎為例,其他引擎也可進(jìn)行驗(yàn)證。
使用SSH方式登錄集群,詳情請(qǐng)參見登錄集群。
執(zhí)行以下命令,進(jìn)入Hive命令行。
hive
執(zhí)行以下命令,創(chuàng)建數(shù)據(jù)庫。本文示例中的數(shù)據(jù)庫以dlf_test_db為例介紹。
CREATE database if NOT EXISTS dlf_test_db;
當(dāng)返回信息包含OK時(shí),表示創(chuàng)建數(shù)據(jù)庫dlf_test_db成功。
在左側(cè)菜單欄,選擇。
單擊數(shù)據(jù)庫頁簽,選擇相應(yīng)的數(shù)據(jù)目錄,在數(shù)據(jù)庫名稱中查詢dlf_test_db是否存在。如下圖:
若存在,表示切換DLF元數(shù)據(jù)成功。否則,切換失敗。
常見問題
Q:如果同一個(gè)元數(shù)據(jù)遷移任務(wù),多次運(yùn)行是什么結(jié)果?
A:元數(shù)據(jù)遷移任務(wù)以RDS或MySQL元數(shù)據(jù)為基準(zhǔn),保證DLF元數(shù)據(jù)與源庫中元數(shù)據(jù)的最終一致性??稍谶w移任務(wù)配置中選擇沖突解決策略,詳情請(qǐng)參見配置遷移任務(wù)信息。
參考資料
最佳實(shí)踐詳細(xì)步驟(包括環(huán)境搭建),請(qǐng)參考EMR元數(shù)據(jù)遷移數(shù)據(jù)湖DLF最佳實(shí)踐。