天天看點

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

一. datax3.0概覽

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

阿裡巴巴開源離線同步工具 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,作為兩者的資料傳輸通道,并處理緩沖,流控,并發,資料轉換等核心技術問題。

三. datax3.0插件體系

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

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

datax framework提供了簡單的接口與插件互動,提供簡單的插件接入機制,隻需要任意加上一種插件,就能無縫對接其他資料源。詳情請看:datax資料源指南

四、datax3.0核心架構

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

阿裡巴巴開源離線同步工具 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的線程來完成任務