DataX 是阿里巴巴集團內被廣泛使用的離線數據同步工具/平臺
開源地址:https://github.com/alibaba/DataX
設計思想
為了解決異構數據源同步問題,DataX將複雜的網狀的同步鏈路變成了星型數據鏈路,DataX作為中間傳輸載體負責連接各種數據源。當需要接入一個新的數據源的時候,只需要將此數據源對接到DataX,便能跟已有的數據源做到無縫數據同步。
數據交換通過DataX進行中轉,任何數據源只要和DataX連接上即可以和已實現的任意數據源同步
核心組件:
Reader:數據採集模塊,負責從源採集數據以上只需要重寫Reader與Writer插件,即可實現新數據源支持d支持主流數據源,詳見:https://github.com/alibaba/DataX/blob/master/introduction.md
核心架構
DataX 3.0 開源版本支持單機多線程模式完成同步作業運行,本小節按一個DataX作業生命週期的時序圖,從整體架構設計非常簡要說明DataX各個模塊相互關係。
從一個JOB來理解datax的核心模塊組件:
datax完成單個數據同步的作業,稱為Job,job會負責數據清理、任務切分等工作;任務啟動後,Job會根據不同源的切分策略,切分成多個Task併發執行,Task就是執行作業的最小單元;切分完成後,根據Scheduler模塊,將Task組合成TaskGroup,每個group負責一定的併發和分配Task;入門
環境要求
LinuxJDK(1.6以上,推薦1.6.x)Python(推薦Python2.6.X)Apache Maven 3.x (若不編譯DataX源碼,則不需要)工具部署
方法一:安裝包安裝
直接下載DataX工具包:DataX,下載後解壓至本地某個目錄,進入bin目錄,即可運行同步作業
$ cd {YOUR_DATAX_HOME}/bin
$ python datax.py {YOUR_JOB.json}
同步作業配置模板,請參考DataX各個插件配置模板和參數說明
方法二:編譯安裝
下載DataX源碼,自己編譯:DataX源碼
下載DataX源碼:$ git clone git@github.com:alibaba/DataX.git
通過maven打包:
$ cd {DataX_source_code_home}
$ mvn -U clean package assembly:assembly -Dmaven.test.skip=true
打包成功,日誌顯示如下:
[INFO] BUILD SUCCESS
[INFO] ————————————————————————————————-
[INFO] Total time: 08:12 min
[INFO] Finished at: 2015-12-13T16:26:48+08:00
[INFO] Final Memory: 133M/960M
[INFO] ————————————————————————————————-
打包成功後的DataX包位於 {DataX_source_code_home}/target/datax/datax/ ,結構如下:
$ cd {DataX_source_code_home}
$ ls ./target/datax/datax/
bin conf job lib log log_perf plugin/>
配置示例
示例:從stream讀取數據並打印到控制檯
第一步、創建創業的配置文件(json格式)
#stream2stream.json
{
"job": {
"setting": {
"speed": {
"channel": 5
}
},
"content": [
{
"reader": {
"name": "streamreader",
"parameter": {
"sliceRecordCount": 10,
"column": [
{
"type": "long",
"value": "10"
},
{
"type": "string",
"value": "hello,你好,世界-DataX"
},
{
"type": "double",
"value": "3.141592653"
},
{
"type": "bytes",
"value": "image"
},
{
"type": "bool",
"value": "true"
},
{
"type": "bool",
"value": "5678true"
},
{
"type": "date",
"value": "2014-10-10",
"dateFormat": "yyyy-MM-dd"
}
]
}
},
"writer": {
"name": "streamwriter",
"parameter": {
"encoding": "UTF-8",
"print": true
}
}
}
]
}
}
第二步:啟動DataX
$ cd {YOUR_DATAX_DIR_BIN}
$ python datax.py ./stream2stream.json
同步結束,顯示日誌如下:
2015-12-17 11:20:25.263 [job-0] INFO JobContainer -
任務啟動時刻 : 2015-12-17 11:20:15
任務結束時刻 : 2015-12-17 11:20:25
任務總計耗時 : 10s
任務平均流量 : 205B/s
記錄寫入速度 : 5rec/s
讀出記錄總數 : 50
讀寫失敗總數 : 0
其他reader與writer插件的配置文檔直接點擊對應的文件夾進入doc即可。