阿里DataX概述

2021-08-27 17:16:25 字數 2653 閱讀 1268

datax 是一款支援任意異構資料系統離線資料交換的工具、框架、平台,實現了在任意的資料處理系統(rdbms/hdfs/local filesystem)之間的資料交換。目前datax支援數十種各類資料儲存、計算系統,每天為阿里集團傳輸資料高達數十t。datax服務的客戶不僅僅侷限於三淘、支付寶、阿里巴巴b2b,阿里集團外部客戶有大眾點評、蘑菇街等也在採用datax建設海量資料同步中心。未來datax將實現阿里集團資料同步匯流排,實現阿里集團資料無阻礙的流動。 新版datax 2.0 (分布式版本) 內部已經上線,預計今年正式提交開源社群。

datax解決的問題

實現跨平台的、跨資料庫、不同系統之間的資料同步及互動。

如果我們擁有很多不同型別的資料庫/檔案系統(mysql/oracle/rac/hive/other…),並且經常需要在它們之間匯入匯出資料,那麼我們可能需要開發/維護/學習使用一批這樣的工具(jdbcdump/dbloader/multithread/getmerge+sqlloader/mysqldumper…)。而且以後每增加一種庫型別,我們需要的工具數目將線性增長。(當我們需要將mysql的資料匯入oracle的時候,有沒有過想從jdbcdump和dbloader上各掰下來一半拼在一起到衝動?) 這些工具有些使用檔案中轉資料,有些使用管道,不同程度的為資料中轉帶來額外開銷,效率差別很非常大。很多任務具也無法滿足etl任務中常見的需求,比如日期格式轉化,特性字元的轉化,編碼轉換。另外,有些時候,我們希望在乙個很短的時間視窗內,將乙份資料從乙個資料庫同時匯出到多個不同型別的資料庫。 datax正是為了解決這些問題而生。

以往,增加一型別的資料對接,我們可能為此增加乙個介面或者是特意開發相容資料的系統,如下圖:

倘若我們需要增加乙個資料來源和目標源,那我們不得不重新開發一套新的同步工具

阿里的datax統一了這規範並提供簡單的資料來源介面方便使用者自定義需要的同步工具,如下圖

datax結構模式(框架+外掛程式)

job: 一道資料同步作業

splitter: 作業切分模組,將乙個大任務與分解成多個可以併發的小任務.

sub-job: 資料同步作業切分後的小任務

reader(loader): 資料讀入模組,負責執行切分後的小任務,將資料從源頭裝載入datax

storage: reader和writer通過storage交換資料

writer(dumper): 資料寫出模組,負責將資料從datax匯入至目的資料地

datax框架內部通過雙緩衝佇列、執行緒池封裝等技術,集中處理了高速資料交換遇到的問題,提供簡單的介面與外掛程式互動,外掛程式分為reader和writer兩類,基於框架提供的外掛程式介面,可以十分便捷的開發出需要的外掛程式。比如想要從oracle匯出資料到mysql,那麼需要做的就是開發出oraclereader和mysqlwriter外掛程式,裝配到框架上即可。並且這樣的外掛程式一般情況下在其他資料交換場合是可以通用的。更大的驚喜是我們已經開發了如下外掛程式:

reader外掛程式

hdfsreader : 支援從hdfs檔案系統獲取資料。

mysqlreader: 支援從mysql資料庫獲取資料。

sqlserverreader: 支援從sqlserver資料庫獲取資料。

oraclereader : 支援從oracle資料庫獲取資料。

streamreader: 支援從stream流獲取資料(常用於測試)

httpreader : 支援從http url獲取資料。

writer外掛程式

hdfswriter:支援向hdbf寫入資料。

mysqlwriter:支援向mysql寫入資料。

oraclewriter:支援向oracle寫入資料。

streamwriter:支援向stream流寫入資料。(常用於測試)

datax在阿里應用原工具新工具

速度提公升

記憶體利用提公升

mysql-hdfs

jdbcdump

datax

116%

114%

oracle-hdfs

jdbcdump

datax

87%67%

hdfs-oracle

getmerge+sqlloader

datax

103%

42%

這是阿里11年的值

阿里資料同步平台

參考:

阿里開源DataX

datax是 阿里巴巴開源的乙個異構資料來源離線同步工具,致力於實現包括關係型資料庫 mysql,oracle等 hdfs hive odps hbase ftp等各種異構資料來源之間穩定高效的資料同步功能。三大功能 reader 資料採集模組,負責採集資料來源的資料,將資料傳送給framework...

阿里 DataX原始碼解讀彙總

將自己datax的系列文章進行彙總形成目錄 datax 1 編譯打包使用 datax 2 通過idea搭建原始碼閱讀 除錯環境 datax 3 win環境cmd亂碼 datax 4 datax.py解讀 datax 5 改造公升級 自動識別py環境,執行datax任務 datax 6 啟動步驟解析 ...

datax 如何使用datax

content fielddelimiter writer 在當前目錄下執行python datax.py test.json命令,即可將datax執行起來 三 引數說明 1 datax使用json作為配置檔案,檔案可以是本地的也可以是遠端http伺服器上面 2 json配置檔案最外層是乙個job,...