全部產品
Search
文件中心

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

更新時間:Dec 19, 2024

本文主要為您介紹如何將已有EMR叢集中儲存在RDS或內建MySQL中的Hive Metastore中繼資料遷移到DLF,並說明如何在EMR叢集中切換DLF作為統一中繼資料,從而實現多種資料來源入湖,搭建高效的資料湖解決方案。

適用情境

  1. 從其他巨量資料叢集遷移到阿里雲EMR新叢集(DLF做中繼資料)時,中繼資料遷移到DLF中的具體操作,請參見中繼資料遷移

  2. 從阿里雲EMR叢集(內建MySQL或自建RDS做中繼資料),整體叢集需要遷移到阿里雲EMR新叢集(DLF做中繼資料)時,中繼資料遷移到DLF中的具體操作,請參見中繼資料遷移

  3. 阿里雲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中繼資料中。

準備工作

  1. 已建立中繼資料為自建RDS的EMR叢集。如未建立,請參見配置自建RDS。本樣本中中繼資料為自建RDS。

  2. 已在EMR叢集中建立Hive資料庫。如未建立,請參見Hive基礎操作。本樣本資料庫為testdb2

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

    • 登入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控制台上查看和修改存取權限,詳情請參見修改帳號許可權

      image

建立遷移任務

  1. 登入資料湖構建控制台

  2. 切換到EMR叢集所屬的地區。

  3. 在左側功能表列,單擊中繼資料 > 中繼資料遷移

  4. 遷移任務頁簽,單擊建立遷移任務

  5. 配置源庫資訊,如下圖。配置參數詳情,請參見建立中繼資料遷移任務

    image

  6. 配置遷移任務,如下圖。本樣本任務名稱為test_rds

    image

  7. 確認任務配置資訊無誤,單擊確定,建立任務完成。

運行遷移任務

在遷移工作清單中,可以查看剛剛建立的遷移任務test_rds,單擊操作列的運行,執行任務。執行成功後如下圖。

image

查看運行記錄和日誌

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

    image

  2. 單擊操作列的查看日誌,可查看任務啟動並執行日誌詳情。

確認中繼資料遷移到DLF

  1. 在左側功能表列,單擊中繼資料 > 中繼資料管理

  2. 單擊資料庫頁簽,選擇資料目錄,查詢目標資料庫名稱。如下圖:

    image

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服務。

image

Impala

在Impala配置頁面,單擊部署用戶端配置,然後重啟Impala服務。

驗證是否切換成功

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

  1. 使用SSH方式登入叢集,詳情請參見登入叢集

  2. 執行以下命令,進入Hive命令列。

    hive
  3. 執行以下命令,建立資料庫。本文樣本中的資料庫以dlf_test_db為例介紹。

    CREATE database if NOT EXISTS dlf_test_db;

    當返回資訊包含OK時,表示建立資料庫dlf_test_db成功。

  4. 登入資料湖構建控制台

  5. 在左側功能表列,選擇中繼資料 > 中繼資料管理

  6. 單擊資料庫頁簽,選擇相應的資料目錄,在資料庫名稱中查詢dlf_test_db是否存在。如下圖:

    image

    若存在,表示切換DLF中繼資料成功。否則,切換失敗。

常見問題

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

A:中繼資料遷移任務以RDS或MySQL中繼資料為基準,保證DLF中繼資料與源庫中中繼資料的最終一致性。可在遷移任務配置中選擇衝突解決方案策略,詳情請參見配置遷移任務資訊