數據同步工具DataX


1、DataX 基本介紹

  • DataX 是阿里巴巴集團內被廣泛使用的離線數據同步工具,致力於實現包括:關系型數據庫(MySQL、Oracle等)、HDFS、Hive、HBase、ODPS、FTP等各種異構數據源之間穩定高效的數據同步功能。

  • 設計理念

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

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

    • 此前已經開源DataX1.0版本,此次介紹為阿里雲開源全新版本DataX 3.0,有了更多更強大的功能和更好的使用體驗。

    • Github主頁地址:https://github.com/alibaba/DataX

2、DataX 3.0 框架設計

  • DataX 本身作為離線數據同步框架,采用Framework + plugin 架構構建。將數據源讀取和寫入抽象成為Reader/Writer插件,納入到整個同步框架中。
    • Reader
      • Reader 為數據采集模塊,負責采集數據源的數據,將數據發送給 Framework。
    • Writer
      • Writer 為數據寫入模塊,負責不斷向 Framework 取數據,並將數據寫入到目的端。
    • Framework
      • Framework 用於連接 Reader 和 Writer,作為兩者的數據傳輸通道,並處理緩沖,流控,並發,數據轉換等核心技術問題。

3、DataX 3.0 插件體系

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

    類型 數據源 Reader(讀) Writer(寫) 文檔
    RDBMS 關系型數據庫 MySQL
    Oracle
    SQLServer
    PostgreSQL
    DRDS
    達夢
    通用RDBMS(支持所有關系型數據庫)
    阿里雲數倉數據存儲 ODPS
    ADS
    OSS
    OCS
    NoSQL數據存儲 OTS
    Hbase0.94
    Hbase1.1
    MongoDB
    Hive
    無結構化數據存儲 TxtFile
    FTP
    HDFS
    Elasticsearch

4、DataX 3.0 核心架構

  • DataX 3.0 支持單機多線程模式完成 數據同步作業,本小節按一個DataX作業生命周期的時序圖,從整體架構設計簡要說明DataX各個模塊之間的相互關系。

  • 核心模塊介紹

      1. DataX完成單個數據同步的作業,我們稱之為Job,DataX接受到一個Job之后,將啟動一個進程來完成整個作業同步過程。DataX Job模塊是單個作業的中樞管理節點,承擔了數據清理、子任務切分(將單一作業計算轉化為多個子Task)、TaskGroup管理等功能。
      1. DataX Job啟動后,會根據不同的源端切分策略,將Job切分成多個小的Task(子任務),以便於並發執行。Task便是DataX作業的最小單元,每一個Task都會負責一部分數據的同步工作。
      1. 切分多個Task之后,DataX Job會調用 Scheduler 模塊,根據配置的並發數據量,將拆分成的Task重新組合,組裝成TaskGroup(任務組)。每一個TaskGroup負責以一定的並發運行完畢分配好的所有Task,默認單個任務組的並發數量為5。
      1. 每一個Task都由TaskGroup負責啟動,Task啟動后,會固定啟動Reader—>Channel—>Writer的線程來完成任務同步工作。
      1. DataX作業運行起來之后, Job監控並等待多個TaskGroup模塊任務完成,等待所有TaskGroup任務完成后Job成功退出。否則,異常退出,進程退出值非0。
  • DataX調度流程

    • 舉例來說,用戶提交了一個DataX作業,並且配置了20個並發,目的是將一個100張分表的mysql數據同步到odps里面。 DataX的調度決策思路是:
        1. DataXJob根據分庫分表切分成了100個Task。
        1. 根據20個並發,默認單個任務組的並發數量為5,DataX計算共需要分配4個TaskGroup。
        1. 這里4個TaskGroup平分切分好的100個Task,每一個TaskGroup負責以5個並發共計運行25個Task。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM