全部產品
Search
文件中心

Data Lake Formation:EMR中繼資料遷移DLF最佳實務

更新時間:Jul 13, 2024

通過EMR+DLF資料湖方案,可以為企業提供資料湖內的統一的中繼資料管理,統一的許可權管理,支援多來源資料入湖以及一站式資料探索的能力。本方案支援已有EMR叢集中繼資料庫使用RDS或內建MySQL資料庫遷移DLF,通過統一的中繼資料管理,多種資料來源入湖,搭建高效的資料湖解決方案。

本文主要介紹如何將Hive Metasstore儲存在MySQL/RDS中的中繼資料遷移到DLF中,並介紹如何在EMR叢集中配置使用DLF作為資料湖統一中繼資料。

適用情境

  1. 從其他巨量資料叢集遷移到阿里雲E-MapReduce產品時,中繼資料遷移可以參考該文檔。

  2. 從阿里雲EMR老叢集(MySQL做中繼資料),整體叢集需要遷移到阿里雲EMR新叢集(DLF做中繼資料)時,中繼資料遷移可參考該文檔。

  3. 從阿里雲EMR老叢集(MySQL做中繼資料),僅中繼資料修改為DLF時,可以參考該文檔。

    1. 注意版本:EMR主要版本需要3系列>=EMR 3.33,或 4系列>= EMR 4.6 ,或 5系列>=EMR 5.1 才能使用DLF,其他更低版本需要遷移DLF,可加DingTalk群:33719678

中繼資料遷移

準備工作

在中繼資料遷移之前,我們需要檢查中繼資料庫遠端存取許可權

  • 登入RDS或MySQL中繼資料庫,執行如下語句進行遠端存取授權(以root帳號,hivemeta庫為例)

GRANT ALL PRIVILEGES ON hivemeta.* TO 'root'@'%' IDENTIFIED BY 'xxxx' WITH GRANT OPTION;
FLUSH PRIVILEGES;
  • 如果是RDS資料庫,也可以在RDS控制台上查看和修改存取權限

開始遷移

DLF提供了可視化的中繼資料遷移產品功能,可以快速的將Hive Metastore中繼資料遷移到DLF中繼資料中。

建立遷移任務

進入資料湖構建控制台,切換到EMR叢集所屬的地區,選擇左側菜單“中繼資料管理-中繼資料遷移”,並單擊“建立遷移任務”進行配置遷移任務,如下圖

image.png

源庫配置

  1. 中繼資料庫類型:選擇MySQL類型即可。

  2. MySQL類型:根據Hive中繼資料類型選擇。

    1. 叢集內建MySQL,請選擇“其他MySQL”。需要填寫JDBC URL、使用者名稱與密碼。(建議JDBC URL填寫內網ip,並通過阿里雲VPC串連方式訪問;如果選擇公網串連,則填寫公網ip)

    2. 獨立RDS中繼資料,請選擇“Aliyun RDS”。需要選擇RDS執行個體,填寫中繼資料庫名稱、使用者名稱與密碼(RDS中繼資料僅支援阿里雲VPC串連方式訪問)。

  3. 網路連接:當前支援“阿里雲VPC”,“公網串連”兩種方式。請根據上一步MySQL類型進行配置。

    1. 阿里雲VPC即EMR叢集或RDS的VPC資訊

    2. 公網串連:當選擇公網串連時,在EMR控制台上添加規則,使EMR叢集3306連接埠(預設)對DLFElastic IP Address 開放。如下圖所示(以杭州Elastic IP Address 121.41.166.235為例 )

各region DLFElastic IP Address:

region

Elastic IP Address

杭州

121.41.166.235

上海

47.103.63.0

北京

47.94.234.203

深圳

39.108.114.206

新加坡

161.117.233.48

法蘭克福

8.211.38.47

張家口

8.142.121.7

香港

8.218.148.213

遷移任務配置

  1. 任務名稱:輸入中繼資料遷移任務的名稱。

  2. 任務描述(可選):輸入您的一些任務備忘資訊。

  3. 衝突解決方案策略(建議選擇更新舊的中繼資料):

    1. 更新舊的中繼資料:在原有DLF中繼資料基礎上更新中繼資料。

    2. 重建中繼資料,即先刪除舊的DLF中繼資料後再建立。

  4. 日誌存放路徑:遷移任務會將每個中繼資料對象、遷移狀態、錯誤記錄檔(如有)記錄到該OSS路徑下。

  5. 同步對象:包括Database、Function、Table、Partition 四種對象,一般為全選。

  6. Location替換:適用於遷移過程中需要對table/database的location進行替換修改的情況。

運行遷移任務

在遷移工作清單中可以查看剛剛建立的遷移任務,點擊右側“運行”操作按鈕執行任務,如下圖。

查看運行記錄和日誌

單擊右側操作 “運行記錄”,可以查看啟動並執行詳情資訊

單擊查看日誌,可以查看運行中的日誌資訊,如下

確認中繼資料遷移到DLF

在中繼資料管理-中繼資料庫/中繼資料表中,可以查詢到期望同步的中繼資料庫表資訊。如下

EMR叢集切換中繼資料

如果是上文第2種情境,需要將EMR叢集切換使用DLF中繼資料。

引擎切換中繼資料

Hive

hive-site.xml添加如下配置,開啟“自動設定更新”並儲存,重啟Hive服務。

<!-- 配置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服務。

Impala

點擊“部署用戶端配置”,然後重啟Impala。

驗證切換成功

以Hive引擎為例,其他引擎也可進行驗證。

1. 進入叢集,執行hive命令

2. create database dlf_test_db;

3. 登入dlf頁面,查看是否存在該db

4. drop database dlf_test_db;

常見問題

  1. 如果同一個中繼資料遷移任務,多次運行是什麼結果?

中繼資料遷移任務以RDS或MySQL中繼資料為基準,保證DLF中繼資料與源庫中中繼資料的最終一致性。

參考資料

最佳實務詳細步驟(包括環境搭建),參考:EMR中繼資料遷移資料湖DLF最佳實務