天天看點

阿裡雲開源離線同步工具DataX3.0介紹阿裡雲開源離線同步工具DataX3.0介紹

​ datax 是一個異構資料源離線同步工具,緻力于實作包括關系型資料庫(mysql、oracle等)、hdfs、hive、odps、hbase、ftp等各種異構資料源之間穩定高效的資料同步功能。

阿裡雲開源離線同步工具DataX3.0介紹阿裡雲開源離線同步工具DataX3.0介紹

為了解決異構資料源同步問題,datax将複雜的網狀的同步鍊路變成了星型資料鍊路,datax作為中間傳輸載體負責連接配接各種資料源。當需要接入一個新的資料源的時候,隻需要将此資料源對接到datax,便能跟已有的資料源做到無縫資料同步。

datax在阿裡巴巴集團内被廣泛使用,承擔了所有大資料的離線同步業務,并已持續穩定運作了6年之久。目前每天完成同步8w多道作業,每日傳輸資料量超過300tb。

阿裡雲開源離線同步工具DataX3.0介紹阿裡雲開源離線同步工具DataX3.0介紹

datax本身作為離線資料同步架構,采用framework + plugin架構建構。将資料源讀取和寫入抽象成為reader/writer插件,納入到整個同步架構中。

reader:reader為資料采集子產品,負責采集資料源的資料,将資料發送給framework。

writer: writer為資料寫入子產品,負責不斷向framework取資料,并将資料寫入到目的端。

framework:framework用于連接配接reader和writer,作為兩者的資料傳輸通道,并處理緩沖,流控,并發,資料轉換等核心技術問題。

​ 經過幾年積累,datax目前已經有了比較全面的插件體系,主流的rdbms資料庫、nosql、大資料計算系統都已經接入。datax目前支援資料如下:

類型

資料源

reader(讀)

writer(寫)

rdbms 關系型資料庫

mysql

oracle

sqlserver

postgresql

達夢

通用rdbms(支援所有關系型資料庫)

阿裡雲數倉資料存儲

odps

ads

oss

ocs

nosql資料存儲

ots

hbase0.94

hbase1.1

mongodb

無結構化資料存儲

txtfile

ftp

hdfs

datax 3.0 開源版本支援單機多線程模式完成同步作業運作,本小節按一個datax作業生命周期的時序圖,從整體架構設計非常簡要說明datax各個子產品互相關系。

阿裡雲開源離線同步工具DataX3.0介紹阿裡雲開源離線同步工具DataX3.0介紹

datax完成單個資料同步的作業,我們稱之為job,datax接受到一個job之後,将啟動一個程序來完成整個作業同步過程。datax job子產品是單個作業的中樞管理節點,承擔了資料清理、子任務切分(将單一作業計算轉化為多個子task)、taskgroup管理等功能。

dataxjob啟動後,會根據不同的源端切分政策,将job切分成多個小的task(子任務),以便于并發執行。task便是datax作業的最小單元,每一個task都會負責一部分資料的同步工作。

切分多個task之後,datax job會調用scheduler子產品,根據配置的并發資料量,将拆分成的task重新組合,組裝成taskgroup(任務組)。每一個taskgroup負責以一定的并發運作完畢配置設定好的所有task,預設單個任務組的并發數量為5。

每一個task都由taskgroup負責啟動,task啟動後,會固定啟動reader—>channel—>writer的線程來完成任務同步工作。

datax作業運作起來之後, job監控并等待多個taskgroup子產品任務完成,等待所有taskgroup任務完成後job成功退出。否則,異常退出,程序退出值非0

舉例來說,使用者送出了一個datax作業,并且配置了20個并發,目的是将一個100張分表的mysql資料同步到odps裡面。 datax的排程決策思路是:

dataxjob根據分庫分表切分成了100個task。

根據20個并發,datax計算共需要配置設定4個taskgroup。

4個taskgroup平分切分好的100個task,每一個taskgroup負責以5個并發共計運作25個task。

完美解決資料傳輸個别類型失真問題

datax舊版對于部分資料類型(比如時間戳)傳輸一直存在毫秒階段等資料失真情況,新版本datax3.0已經做到支援所有的強資料類型,每一種插件都有自己的資料類型轉換政策,讓資料可以完整無損的傳輸到目的端。

提供作業全鍊路的流量、資料量運作時監控

datax3.0運作過程中可以将作業本身狀态、資料流量、資料速度、執行進度等資訊進行全面的展示,讓使用者可以實時了解作業狀态。并可在作業執行過程中智能判斷源端和目的端的速度對比情況,給予使用者更多性能排查資訊。

提供髒資料探測

在大量資料的傳輸過程中,必定會由于各種原因導緻很多資料傳輸報錯(比如類型轉換錯誤),這種資料datax認為就是髒資料。datax目前可以實作髒資料精确過濾、識别、采集、展示,為使用者提供多種的髒資料處理模式,讓使用者準确把控資料品質大關!

datax作為一個服務于大資料的etl工具,除了提供資料快照搬遷功能之外,還提供了豐富資料轉換的功能,讓資料在傳輸過程中可以輕松完成資料脫敏,補全,過濾等資料轉換功能,另外還提供了自動groovy函數,讓使用者自定義轉換函數。詳情請看datax3的transformer詳細介紹。

還在為同步過程對線上存儲壓力影響而擔心嗎?新版本datax3.0提供了包括通道(并發)、記錄流、位元組流三種流控模式,可以随意控制你的作業速度,讓你的作業在庫可以承受的範圍内達到最佳的同步速度。

datax作業是極易受外部因素的幹擾,網絡閃斷、資料源不穩定等因素很容易讓同步到一半的作業報錯停止。是以穩定性是datax的基本要求,在datax 3.0的設計中,重點完善了架構和插件的穩定性。目前datax3.0可以做到線程級别、程序級别(暫時未開放)、作業級别多層次局部/全局的重試,保證使用者的作業穩定運作。

線程内部重試

datax的核心插件都經過團隊的全盤review,不同的網絡互動方式都有不同的重試政策。

線程級别重試

目前datax已經可以實作taskfailover,針對于中間失敗的task,datax架構可以做到整個task級别的重新排程。

易用

詳細

datax在運作日志中列印了大量資訊,其中包括傳輸速度,reader、writer性能,程序cpu,jvm和gc情況等等。

傳輸過程中列印傳輸速度、進度等

阿裡雲開源離線同步工具DataX3.0介紹阿裡雲開源離線同步工具DataX3.0介紹

傳輸過程中會列印程序相關的cpu、jvm等

阿裡雲開源離線同步工具DataX3.0介紹阿裡雲開源離線同步工具DataX3.0介紹

在任務結束之後,列印總體運作情況

阿裡雲開源離線同步工具DataX3.0介紹阿裡雲開源離線同步工具DataX3.0介紹