本文將介紹如何快速入門上手湖倉一站式遷移中心。
快速開始:建立遷移情境
通過探查Agent, 探知客戶源端有哪些巨量資料元件及叢集。
在“一站式遷移”菜單下新增遷移情境,配置好要遷移的源端資料來源,目標端資料來源以及源和目標的映射關係,一個遷移情境可以包含多組資料移轉+多組調度叢集遷移。
step1. 建立情境基礎資訊
step2.建立源端資料來源
建立資料來源: 建立源端待遷移的資料來源,資料來源類型分為資料集群資料來源和調度叢集資料來源。
hive資料來源配置(為例):
說明:
配置項名稱 | 子項名稱 | 說明 |
資料來源名稱 | 不能包含字元、數字、漢字之外的特殊字元, 編輯時不可修改; 全域唯一 | |
資料來源類型 | Hive | |
Hive JDBC URL | 訪問HiveServer2的Jdbc地址,例如:jdbc:hive2://ip:port/database; 注意,若開啟了Kerberos認證,jdbc連結串格式為: jdbc:hive2://ip:port/database;principal=your principal | |
資料庫名 | Hive database | |
Hive版本 | 1.x,2.x,3.x | |
Hive登入方式 | Hive Jdbc的登入方式,分為匿名、LDAP、Kerberos認證三種 | |
配置 | 配置選項 | 主要是配置需要的認證資料:如LDAP的使用者名稱密碼、Kerberos登入所需的認證檔案,本配置項是多選項
|
LDAP-使用者名稱 | LDAP使用者名稱 | |
LDAP-密碼 | LDAP密碼 | |
Kerberos 認證-keytab檔案 | 上傳keytab檔案 | |
Kerberos 認證-conf檔案 | 上傳conf檔案 | |
Kerberos 認證-principal | kerberos principal | |
中繼資料類型及訪問配置 | 1.Hive Metastore | |
中繼資料訪問是否需要kerberos認證 | 請檢查叢集配置上hive.metastore.sasl.enabled是否等於true, 如果是的話這裡需要勾選kerberos認證,並且在上述配置中配置對應的Kerberos認證檔案資訊。 | |
metastoreUris | hive metastore url 樣本:thrift://10.0.2.165:9083 | |
2.DLF | 通過DLF擷取Metastore串連 | |
Endpoint | 訪問DLF的endpoint, 要求工具所在機器能夠連通 | |
AccessKey ID | ⽤於訪問DLF的AccessKey ID | |
AccessKey Secret | ⽤於訪問DLF的AccessKey Secret | |
資料目錄 | 需要進行校正的資料所在的Catalog 註: CatalogId一定要與上述的JDBC URL對應上 | |
DLF Settings | 其他dlf配置資訊 | |
3.MySQL元倉 | ||
jdbcURL | 樣本:jdbc:mysql://rm-xxxx.mysql.rds.aliyuncs.com/hive_meta_db?createDatabaseIfNotExist=true&characterEncoding=UTF-8 | |
使用者名稱 | ||
密碼 | ||
4.PG元倉 | ||
jdbcURL | 樣本:jdbc:postgresql://rm-xxxx.mysql.rds.aliyuncs.com/hive_meta_db?createDatabaseIfNotExist=true&characterEncoding=UTF-8 | |
使用者名稱 | ||
密碼 | ||
5.AWS Glue | ||
AccessKey ID | ||
Access Secret | ||
Region |
MaxCompute資料來源配置:
配置項名稱 | 說明 |
資料來源名稱 | 不能包含英文字元、數字、漢字之外的特殊字元, 編輯時不可修改 |
資料來源類型 | MaxCompute |
ODPS Endpoint | 訪問MaxCompute的endpoint, 要求工具所在機器能夠連通 mc.endpoint 樣本:http://service.cn-shanghai.maxcompute.aliyun.com/api |
AccessKey ID | ⽤於訪問MaxCompute的AccessKey ID |
AccessKey Secret | ⽤於訪問MaxCompute的AccessKey Secret |
Default Project | MMA會使⽤這個項⽬的配額在MaxCompute上執⾏sql |
Tunnel Endpoint | 資料校正不依賴此項,隨便填 |
調度叢集資料來源以DolphinScheduler為例:
可以選擇直接上傳dolphin調度系統的源資訊zip包,也可以選擇串連api擷取相關待遷移資訊
配置項名稱 | 說明 |
資料來源名稱 | 不能包含英文字元、數字、漢字之外的特殊字元, 編輯時不可修改 |
資料來源類型 | DolphinScheduler |
版本 | DolphinScheduler版本選擇 |
串連地址 | DolphinScheduler系統服務訪問地址 |
令牌 | 訪問Token(AccessToken):在使用API介面擷取dolphin調度系統資料時,需要通過OAuth2.0等機制擷取的存取權杖。 |
專案名稱 | 訪問相關API, 需DolphinScheduler系統專案空間資訊 |
建立資料來源完成後,需測試連通性是否正常。
step3.建立目標端資料來源
建立方式同Step2
step4.關聯目標端
該列表以源端資料來源(叢集)為主視角,展示與目標端資料來源(叢集)的關聯關係,點擊操作欄下的“關聯目標端資料來源”可以選擇相應的目標端資料來源進行關聯,該映射關係將作為實際遷移時的源與目標應色號關係。
點擊“完成”進行儲存。
設定Pipeline(一站式遷移)
建立情境完成後,需要設定該遷移情境
我們會基於遷移情境,初始化遷移Pipeline的DSL,您只需在如下介面進行遷移偏好配置:
1.叢集探查設定
資料集群探查: 以hive至mc遷移舉例,支援配置定時調度的cron運算式
調度叢集探查:以dolphin至DataWorks遷移舉例,支援配置定時調度的cron運算式
2.中繼資料遷移&資料移轉設定
以hive2mc情境為例,中繼資料遷移和資料移轉設定複用。
1)填寫源端hive db->目標端MaxCompute Project的映射關係,支援“下載模板”維護資訊後上傳
2)黑名單: 遷移時忽略。 填寫方式dbname.tablename, dbname.*(代表該db下全部表)
3)選擇遷移方式
Hive UDTF(Tunnel):
1.通過Hive MetaStore擷取Hive中繼資料,包括所有表名、表Schema、分區資訊、資料量、更新時間等
2.在MaxCompute端根據擷取到的中繼資料資訊(以及工作台任務指令下發的遷移範圍)進行建表和分區
3.向源端Hive提交執行UDTF的SQL命令
4.UDTF調用MaxCompute的Tunnel SDK向目標端寫入資料
OSS中轉、MaxC外錶轉內表:
1.通過阿里雲OSS線上遷移服務將Hive資料(HDFS/S3/OBS等)遷移到阿里雲OSS
2.通過Hive MetaStore擷取Hive中繼資料,包括所有表名、表Schema、分區資訊、資料量、更新時間等
3.根據擷取到的Hive中繼資料以及OSS路徑資訊(和HDFS對應)在目標端MaxCompute建立OSS外表和外表對應的普通表
4.從外表查詢資料並插入普通表 :insert 普通表 from select oss外表,將資料從OSS匯入MaxCompute
4)進階設定
全域參數:
hive.task.partition.max.num=50 :單個任務處理的最多分區數量(可選)
hive.task.partition.max.size=5 : 單個任務處理的最巨量資料量(單位G)(可選)
自訂參數:
eg: mapreduce.map.speculative=false:是否啟動 map 階段的推測執行,預設為true
mapreduce.map.memory.mb=8192: 1個map任務可使用的資源上限
yarn.scheduler.maximum-allocation-mb=8192:yarn最大可申請記憶體量
hive.fetch.task.conversion=none:所有涉及hdfs的讀取查詢都走mapreduce任務
mapreduce.task.timeout=3600000 (單位ms)
mapreduce.job.running.map.limit=100:同時執行的 map 任務數量
mapreduce.max.split.size=512000000
mapreduce.map.maxattempts=0
hive.execution.engine=mr
3.資料校正設定
1)建立校正引擎
2)選擇校正規則:
左變數:表名,表中資料類型
邏輯條件:等於,包含,不包含
右變數:左變數為表名時, 填寫關鍵詞; 左變數為資料類型, 源端校正執行引擎、目標端校正引擎
校正模式:資料量(count)比對,指標比對,弱內容比對,自訂比對,全文比對,空值率比對
差異容忍率:支援填寫規則支援添加行和刪除已有行
4.SQL代碼轉換設定
上傳表對應檔,提供源端三元組和目標端三元組的映射關係,例如hive叢集的db.tablename與目標端MaxCompute叢集的project.tablename的映射關係
5.任務調度遷移設定
1)黑名單:支援設定workflow,tasknode等對象黑名單
2) 支援通過遷移助手提交,也支援通過DataWorks Openapi提交,推薦後者
3) 需要選擇目標端引擎資訊
4)編輯預設規則
{
"format": "SPEC",
"locale": "zh_CN",
"skipUnSupportType": true,
"transformContinueWithError": true,
"specContinueWithError": true,
"tempTaskTypes": [
"SPARK",
"HIVECLI"
],
"skipTaskCodes": [],
"settings": {
"workflow.converter.shellNodeType": "EMR_SHELL",
"workflow.converter.commandSqlAs": "EMR_SQL",
"workflow.converter.sparkSubmitAs": "EMR_SPARK",
"workflow.converter.target.unknownNodeTypeAs": "DIDE_SHELL",
"workflow.converter.mrNodeType": "EMR_MR",
"workflow.converter.target.engine.type": "EMR",
"workflow.converter.dolphinscheduler.sqlNodeTypeMapping": {
"POSTGRESQL": "EMR_HIVE",
"MYSQL": "EMR_HIVE",
"HIVE": "EMR_HIVE",
"CLICKHOUSE": "CLICK_SQL"
}
}
}tempTaskTypes內填需自訂處理的節點類型,不填以預設規則轉換(settings裡如果有相應節點轉換規則的話),填寫將以自訂規則為準,且保留原始內容;
5)自訂轉換外掛程式&規則
使用自訂轉換規則,需先下載轉換外掛程式自訂工程,進行上傳後方可使用
自訂轉換規則配置:
{
"if.use.migrationx.before": false,
"if.use.default.convert": true,
"conf": [
{
"rule": {
"settings": {
"workflow.converter.shellNodeType": "DIDE_SHELL",
"workflow.converter.commandSqlAs": "DIDE_SHELL",
"workflow.converter.sparkSubmitAs": "ODPS_SPARK",
"workflow.converter.target.unknownNodeTypeAs": "DIDE_SHELL",
"workflow.converter.mrNodeType": "ODPS_MR",
"workflow.converter.target.engine.type": "MaxCompute",
"workflow.converter.dolphinscheduler.sqlNodeTypeMapping": {
"POSTGRESQL": "ODPS_SQL",
"MYSQL": "ODPS_SQL",
"HIVE": "ODPS_SQL"
}
}
},
"nodes": "all, name, idsStr"
}
]
}專案中可自訂節點類型轉換規則,與預設規則衝突時以自訂為準。
可以配置多段json, 圈選nodes範圍所使用的轉換規則,即專案中源端不同類型的shell可通過圈選相應類型的nodes範圍轉換成目標端上不同的節點類型。
6)提交設定
提交至目標端DataWorks時對應元素的狀態偏好管理,以上配置完成好,點擊儲存。
運行Pipeline一站式遷移
1. 啟動
點擊“運行狀態”查看一站式遷移運行進展,下圖可看到探查任務批次,根據叢集探查任務設定的時間可以看到相應的探查任務,和每次探查到的結果。
2. 叢集探查
資料集群探查樣本:
探查結果詳情:
調度叢集探查樣本:
探查結果詳情:
3. 資料移轉
首次對源端叢集的資料探查,會自動產生存量資料移轉任務。後續每次探查均為與前一次叢集探查任務結果進行比對,判斷出增量部分,自動化產生增量資料移轉任務。原子級的對象(表或分區)會按照結構遷移-》資料移轉-〉資料校正的順序依次執行,三環任務均完成並通過校正,視為單個對象遷移成功。
可通過如下入口查看本次遷移任務詳情:
以資料移轉詳情介面為例:
支援單次任務的統計資訊展示,面向遷移失敗原子物件提供“重試”入口
4. 調度遷移
每次對源端叢集的調度探查均會自動產生相應批次的待遷移任務執行個體,需要手動執行轉換,和提交至目標端。
轉換報告: