DataX介紹

一. DataX3.0概覽

DataX 是一個異構數據源離線同步工具,致力於實現包括關係型數據庫(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各種異構數據源之間穩定高效的數據同步功能。

設計理念

爲了解決異構數據源同步問題,DataX將複雜的網狀的同步鏈路變成了星型數據鏈路,DataX作爲中間傳輸載體負責連接各種數據源。當需要接入一個新的數據源的時候,只需要將此數據源對接到DataX,便能跟已有的數據源做到無縫數據同步。

當前使用現狀

DataX在阿里巴巴集團內被廣泛使用,承擔了所有大數據的離線同步業務,並已持續穩定運行了6年之久。目前每天完成同步8w多道作業,每日傳輸數據量超過300TB。

此前已經開源DataX1.0版本,此次介紹爲阿里巴巴開源全新版本DataX3.0,有了更多更強大的功能和更好的使用體驗。Github主頁地址:https://github.com/alibaba/DataX

二、DataX3.0框架設計

DataX本身作爲離線數據同步框架,採用Framework + plugin架構構建。將數據源讀取和寫入抽象成爲Reader/Writer插件,納入到整個同步框架中。

Reader:Reader爲數據採集模塊,負責採集數據源的數據,將數據發送給Framework。

Writer: Writer爲數據寫入模塊,負責不斷向Framework取數據,並將數據寫入到目的端。

Framework:Framework用於連接reader和writer,作爲兩者的數據傳輸通道,並處理緩衝,流控,併發,數據轉換等核心技術問題。

三. DataX3.0插件體系

經過幾年積累,DataX目前已經有了比較全面的插件體系,主流的RDBMS數據庫、NOSQL、大數據計算系統都已經接入。DataX目前支持數據如下:

DataX Framework提供了簡單的接口與插件交互,提供簡單的插件接入機制,只需要任意加上一種插件,就能無縫對接其他數據源。詳情請看:DataX數據源指南

四、DataX3.0核心架構

DataX 3.0 開源版本支持單機多線程模式完成同步作業運行,本小節按一個DataX作業生命週期的時序圖,從整體架構設計非常簡要說明DataX各個模塊相互關係。

核心模塊介紹:

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的線程來完成任務

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章