1. 程式人生 > 其它 >DataX學習指南(一)--基礎介紹

DataX學習指南(一)--基礎介紹

what IS DataX ?  

  DataX 是阿里巴巴集團內被廣泛使用的離線資料同步工具/平臺,實現包括 MySQL、SQL Server、Oracle、PostgreSQL、HDFS、Hive、HBase、OTS、ODPS 等各種異構資料來源之間高效的資料同步功能。

  DataX本身作為資料同步框架,將不同資料來源的同步抽象為從源頭資料來源讀取資料的Reader外掛,以及向目標端寫入資料的Writer外掛,理論上DataX框架可以支援任意資料來源型別的資料同步工作。同時DataX外掛體系作為一套生態系統, 每接入一套新資料來源該新加入的資料來源即可實現和現有的資料來源互通。

  

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

  該專案完全開源,目前最新的開源版本為DataX 3.0。Github主頁地址:https://github.com/alibaba/DataX

DataX3.0框架設計 

  (圖片來自GitHub)

  DataX本身作為離線資料同步框架,採用Framework + plugin架構構建。將資料來源讀取和寫入抽象成為Reader/Writer外掛,納入到整個同步框架中。

  核心介紹:

  • Reader:Reader為資料採集模組,負責採集資料來源的資料,將資料傳送給Framework。比如mysqlreader就是讀取mysql資料庫內的資料。
  • Writer: Writer為資料寫入模組,負責不斷向Framework取資料,並將資料寫入到目的端。比如hdfswriter則為將處理後的資料存入hdfs。
  • Framework:Framework用於連線reader和writer,作為兩者的資料傳輸通道,並處理緩衝,流控(路由策略),併發,資料轉換等核心技術問題。

DataX3.0核心架構

  

  核心模組介紹:

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

DataX 3.0幾大核心優勢

  • 簡單易用
  • 容錯機制健壯
  • 同步效能優越
  • 資料轉換型別豐富
  • 執行效率監控精準

  詳細介紹可以見:DataX 3.0優勢

DataX 效果展示

  這裡先貼一張本地執行結果的截圖吧,具體如何實現下文再講。

    

  執行結果包含了很多內容(截圖為執行成功後的最後兩部分),簡單介紹下這兩部分的意義吧。

  上面列印了系統整體CPU及GC資訊,最後面列印的是整個Job的生命週期--開始、結束、總耗時、同步資料量、失敗數。