通過EMR+DLF資料湖方案,可以為企業提供資料湖內的統一的中繼資料管理,統一的許可權管理,支援多來源資料入湖以及一站式資料探索的能力。本方案支援已有EMR叢集中繼資料庫使用RDS或內建MySQL資料庫遷移DLF,通過統一的中繼資料管理,多種資料來源入湖,搭建高效的資料湖解決方案。
本文主要介紹如何將Hive Metasstore儲存在MySQL/RDS中的中繼資料遷移到DLF中,並介紹如何在EMR叢集中配置使用DLF作為資料湖統一中繼資料。
適用情境
從其他巨量資料叢集遷移到阿里雲E-MapReduce產品時,中繼資料遷移可以參考該文檔。
從阿里雲EMR老叢集(MySQL做中繼資料),整體叢集需要遷移到阿里雲EMR新叢集(DLF做中繼資料)時,中繼資料遷移可參考該文檔。
從阿里雲EMR老叢集(MySQL做中繼資料),僅中繼資料修改為DLF時,可以參考該文檔。
注意版本: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叢集所屬的地區,選擇左側菜單“中繼資料管理-中繼資料遷移”,並單擊“建立遷移任務”進行配置遷移任務,如下圖
源庫配置
中繼資料庫類型:選擇MySQL類型即可。
MySQL類型:根據Hive中繼資料類型選擇。
叢集內建MySQL,請選擇“其他MySQL”。需要填寫JDBC URL、使用者名稱與密碼。(建議JDBC URL填寫內網ip,並通過阿里雲VPC串連方式訪問;如果選擇公網串連,則填寫公網ip)
獨立RDS中繼資料,請選擇“Aliyun RDS”。需要選擇RDS執行個體,填寫中繼資料庫名稱、使用者名稱與密碼(RDS中繼資料僅支援阿里雲VPC串連方式訪問)。
網路連接:當前支援“阿里雲VPC”,“公網串連”兩種方式。請根據上一步MySQL類型進行配置。
阿里雲VPC:即EMR叢集或RDS的VPC資訊
公網串連:當選擇公網串連時,在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 |
遷移任務配置
任務名稱:輸入中繼資料遷移任務的名稱。
任務描述(可選):輸入您的一些任務備忘資訊。
衝突解決方案策略(建議選擇更新舊的中繼資料):
更新舊的中繼資料:在原有DLF中繼資料基礎上更新中繼資料。
重建中繼資料,即先刪除舊的DLF中繼資料後再建立。
日誌存放路徑:遷移任務會將每個中繼資料對象、遷移狀態、錯誤記錄檔(如有)記錄到該OSS路徑下。
同步對象:包括Database、Function、Table、Partition 四種對象,一般為全選。
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;
常見問題
如果同一個中繼資料遷移任務,多次運行是什麼結果?
中繼資料遷移任務以RDS或MySQL中繼資料為基準,保證DLF中繼資料與源庫中中繼資料的最終一致性。
參考資料
最佳實務詳細步驟(包括環境搭建),參考:EMR中繼資料遷移資料湖DLF最佳實務