EMR中繼資料遷移DLF最佳實務

更新時間:
Copy as MD

本文主要為您介紹如何將已有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. 已建立中繼資料為自建RDSEMR叢集。如未建立,請參見配置自建RDS。本樣本中中繼資料為自建RDS。

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

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

    • 登入RDSMySQL資料庫,執行如下語句進行遠端存取授權(以root帳號,testdb庫為例),其中xxxxroot使用者的密碼。

      CREATE USER 'root'@'%' IDENTIFIED BY 'xxxx';
      GRANT ALL PRIVILEGES ON testdb.* TO 'root'@'%' WITH GRANT OPTION;
      FLUSH PRIVILEGES;
    • 如果是RDS資料庫,也可以在RDS控制台上查看和修改存取權限,詳情請參見修改帳號許可權

      RDS執行個體左側導覽列單擊帳號管理,可在使用者帳號頁簽查看已建立的帳號列表,包含帳號名稱、類型(高許可權帳號或普通帳號)、狀態、所屬資料庫及其許可權(如讀寫DDL+DML),並可執行重設密碼修改許可權刪除等操作。

建立遷移任務

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

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

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

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

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

    在源庫配置頁面,資料庫類型選擇MySQL,類型選擇Aliyun RDS,選擇對應的RDS執行個體,填寫資料庫名稱(如testdb2)、使用者名稱密碼網路連接方式選擇阿里雲VPC,並配置對應的Virtual Private Cloud交換器VSwitch安全性群組,然後單擊下一步

  6. 配置遷移任務。本樣本任務名稱為test_rds

    基礎設定地區,任務描述填寫test。在遷移策略地區,資料目錄選擇rds衝突解決方案策略選擇更新舊的中繼資料日誌存放路徑設定為對應的OSS路徑,同步對象全選(包括database、function、table、partition)。配置完成後單擊下一步

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

運行遷移任務

在遷移工作清單中,可以查看剛剛建立的遷移任務test_rds,單擊操作列的運行,執行任務。執行成功後,任務狀態顯示為成功。

查看運行記錄和日誌

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

    執行歷史頁面以表格形式展示各作業的作業ID/任務名稱資料庫類型最近執行狀態成功數量/失敗數量最近執行時間完成時間/期間等資訊,單擊操作列的查看日誌可查看對應作業的執行日誌。

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

確認中繼資料遷移到DLF

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

  2. 單擊資料庫頁簽,選擇資料目錄,查詢目標資料庫名稱

    查詢結果中顯示目標資料庫(如testdb2)的記錄,包括庫名、位置、資料目錄ID及建立時間等資訊,表明中繼資料已成功遷移到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=false

Presto

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=false

Spark

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

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是否存在。

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

常見問題

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

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