簡介
數據集成模塊是在各個存儲單元之間執行數據交換的通道,具備分佈式底層架構,穩定高效、彈性伸縮的特點,致力於提供複雜網絡環境下、豐富的異構數據源之間數據高速穩定的數據移動及同步能力。爲了在DTinsightBatch進行大規模數據集的挖掘與計算,通常的做法是在任務執行前將數據傳輸至DTinsightBatch,並在任務執行結束後將計算結果傳輸至外部存儲單元(例如MySQL等應用數據庫)。數據集成的作用如下圖所示:
數據源類型
數據集成提供豐富的數據源支持,如下所示:
- 關係型數據庫(MySQL / Oracle / SQLServer / PostgreSQL等)
- NoSQL(Redis / MongoDB / HBase / ElasticSearch等)
- 大數據存儲(MaxCompute / HDFS / Hive等)
- 文本存儲(FTP)
注1:Redis不支持抽取
注2:Redis、MongoDB、ElasticSearch不支持嚮導
數據源管理
數據源管理是對外部存儲單元訪問參數的管理,數據集成模塊需要與數據開發配合起來才能發揮作用,實際是由定時任務來執行數據傳輸的。
在項目上方的數據集成菜單,進入數據數據源管理頁面,可看到目前已經集成的數據源列表,包括數據源名稱、類型、連接信息、描述、最近修改人、最近修改時間、狀態等信息,同時可執行編輯、刪除等操作。
在數據源列表右上角的新增數據源,選擇不同的數據源類型,需要填寫不同的配置信息。
具體配置信息:https://insight.dtstack.com/public/helpSite/dtinsight-batch/v3.0/DataIntegration/DataSourceManage.html#Hive
同步任務配置
數據同步任務的配置共分爲5個步驟:
- 選擇數據來源:選擇已配置的數據源,系統會讀取其中的數據;
- 選擇數據目標:選擇已配置的數據源,系統會向其寫入數據;
- 字段映射:配置數據來源與數據目標之間的字段映射關係,不同的數據類型在這步有不同的配置方法;
- 通道控制:控制數據同步的執行速度、錯誤數據的處理方式等;
- 預覽保存:再次確認已配置的規則並保存;
同步任務的創建
創建同步任務時,在數據開發頁面點擊新建任務,並選擇數據同步的任務類型,並進行嚮導/腳本模式的選擇,模式一旦選擇之後即不可修改。
如果選擇了腳本模式,可以在編輯區左上角點擊導入模板,並選擇數據源類型、數據庫等信息,確定後即可導入模板,只需編輯其中一部分信息。
注:導入模板後,之前填寫的信息會被清空並覆蓋
腳本模式的介紹
數據同步任務包括一個job元素,而這個元素包括setting和content兩部分。
{
"job": {
"setting": {...},
"content": [...]
}
}
content
content:用於配置具體任務信息,包括從哪裏來(Reader插件信息),到哪裏去(Writer插件信息)
reader: 用於讀取數據的插件的信息
writer: 用於寫入數據的插件的信息
reader和writer包括name和parameter,分別表示插件名稱和插件參數
插件配置樣例:https://insight.dtstack.com/public/helpSite/dtinsight-batch/v3.0/DataIntegration/JobConfig.html
"content": [
{
"reader": {
"name": "...",
"parameter": {
...
}
},
"writer": {
"name": "...",
"parameter": {
...
}
}
}
]
setting
setting包括speed、errorLimit和dirty三部分,分別描述限速、錯誤控制和髒數據管理的配置信息
"setting": {
"speed": {...},
"errorLimit": {...},
"dirty": {...}
}
speed
channel: 任務併發數
bytes: 每秒字節數,默認爲0(不限速)
"speed": {
"channel": 3,
"bytes": 0
}
errorLimit
record: 出錯記錄數超過record設置的條數時,任務標記爲失敗
percentage: 當出錯記錄數超過percentage百分數時,任務標記爲失敗
"errorLimit": {
"record": 10000,
"percentage": 100
}
dirty
path: 髒數據存放路徑
hadoopConfig: 髒數據存放路徑對應hdfs的配置信息(hdfs高可用配置)
"dirty": {
"path": "/tmp",
"hadoopConfig": {
"fs.default.name": "hdfs://ns1",
"dfs.nameservices": "ns1",
"dfs.ha.namenodes.ns1": "nn1,nn2",
"dfs.namenode.rpc-address.ns1.nn1": "node02:9000",
"dfs.namenode.rpc-address.ns1.nn2": "node03:9000",
"dfs.ha.automatic-failover.enabled": "true",
"dfs.client.failover.proxy.provider.ns1": "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider",
"fs.hdfs.impl.disable.cache": "true"
}
}
整庫遷移
整庫遷移是爲了提升用戶效率、降低用戶使用成本的一種快捷工具,它可以快速完成把MySQL數據庫內所有表一併上傳到DTinsightBatch(Hive)的工作。
操作步驟:
- 登錄到DTinsightBatch>數據集成,進入數據源管理頁面。
- 單擊右上角的新增數據源,添加一個面向整庫遷移的MySQL數據源(這裏假設爲MySQL_Migrate),單擊測試連通性驗證數據源訪問正確無誤後,確認並保存此數據源。
- 新增數據源成功後,即可在數據源列表中看到新增的MySQL數據源MySQL_Migrate。單擊整庫遷移,即可進入對應數據源的整庫遷移功能界面,整庫遷移界面主要分爲3塊功能區域:
a.待遷移表篩選區,此處將MySQL數據源MySQL_Migrate下的所有數據庫表以表格的形式展現出來,您可以根據實際需要批量選擇待遷移的數據庫表。
b.高級設置,此處提供了MySQL數據表和DTinsightBatch數據表的表名稱、列名稱、列類型的映射轉換規則。
c.遷移模式、併發控制區,此處可以控制整庫遷移的模式(全量、增量)、併發度配置(分批上次、整批上傳)、提交遷移任務進度狀態信息等。
d.單擊高級設置按鈕,您可以根據您具體需求選擇轉換規則。比如DTinsightBatch端建表時統一增加了ods_這一前綴。
e.在遷移模式、併發控制區中,選擇同步方式爲每日增量,並配置增量字段爲gmt_modified,數據集成默認會根據您選擇的增量字段生成具體每個任務的增量抽取where條件,並配合DTinsightBatch調度參數(例如:${bdp.system.bizdate})形成針對每天的數據抽取條件。
f.數據集成抽取MySQL庫表的數據是通過JDBC連接遠程MySQL數據庫,並執行相應的SQL語句,將數據從MySQL庫中select出來。由於是標準的SQL抽取語句,可以配置where子句控制數據範圍。爲了對源頭MySQL數據源進行保護,避免同一時間點啓動大量數據同步作業帶來數據庫壓力過大,可選擇分批上傳模式,並配置從每日0點開始,每1小時啓動3個數據庫表同步。 - 最後,單擊提交任務按鈕,這裏可以看到遷移進度信息,以及每一個表的遷移任務狀態。
- 單擊對應的遷移任務,會跳轉到數據集成的任務開發界面,在左側目錄樹clone_database目錄下,會有對應的所有整庫遷移任務,任務命名規則是:mysql2hive_源表名。
注:這些任務會根據配置的調度週期(默認天調度)被調度執行,也可以使用DTinsight調度補數據功能完成歷史數據的傳輸。通過整庫遷移功能可以極大減少您初始化的配置、遷移成本。
版本支持
DTinsightBatch數據集成模塊對不同數據庫的版本支持情況:
MySQL 5.0及以上
Oracle 11g、12c
SQL Server 2008及以上
Hive
HBase
HDFS
ElasticSearch