1. 程式人生 > 實用技巧 >DataX 3.0簡介 安裝及使用

DataX 3.0簡介 安裝及使用

DataX3.0離線同步工具介紹

一. DataX3.0概覽

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

(這是一個單機多工的ETL工具)


下載地址:http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz

設計理念

為了解決異構資料來源同步問題,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資料來源參考指南

四、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的執行緒來完成任務同步工作。
  • DataX作業執行起來之後, Job監控並等待多個TaskGroup模組任務完成,等待所有TaskGroup任務完成後Job成功退出。否則,異常退出,程序退出值非0

DataX排程流程:

舉例來說,使用者提交了一個DataX作業,並且配置了20個併發,目的是將一個100張分表的mysql資料同步到odps裡面。 DataX的排程決策思路是:

  • DataXJob根據分庫分表切分成了100個Task。
  • 根據20個併發,DataX計算共需要分配4個TaskGroup。
  • 4個TaskGroup平分切分好的100個Task,每一個TaskGroup負責以5個併發共計執行25個Task。

五、DataX 3.0六大核心優勢

可靠的資料質量監控

  1. 完美解決資料傳輸個別型別失真問題
    DataX舊版對於部分資料型別(比如時間戳)傳輸一直存在毫秒階段等資料失真情況,新版本DataX3.0已經做到支援所有的強資料型別,每一種外掛都有自己的資料型別轉換策略,讓資料可以完整無損的傳輸到目的端。
  2. 提供作業全鏈路的流量、資料量執行時監控
    DataX3.0執行過程中可以將作業本身狀態、資料流量、資料速度、執行進度等資訊進行全面的展示,讓使用者可以實時瞭解作業狀態。並可在作業執行過程中智慧判斷源端和目的端的速度對比情況,給予使用者更多效能排查資訊。
  3. 提供髒資料探測
    在大量資料的傳輸過程中,必定會由於各種原因導致很多資料傳輸報錯(比如型別轉換錯誤),這種資料DataX認為就是髒資料。DataX目前可以實現髒資料精確過濾、識別、採集、展示,為使用者提供多種的髒資料處理模式,讓使用者準確把控資料質量大關!

豐富的資料轉換功能

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

精準的速度控制

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

"speed": {
   "channel": 8,    ----併發數限速(根據自己CPU合理控制併發數)
   "byte": 524288,  ----位元組流限速(根據自己的磁碟和網絡合理控制位元組數)
   "record": 10000  ----記錄流限速(根據資料合理空行數)
}

強勁的同步效能

DataX3.0每一種讀外掛都有一種或多種切分策略,都能將作業合理切分成多個Task並行執行,單機多執行緒執行模型可以讓DataX速度隨併發成線性增長。在源端和目的端效能都足夠的情況下,單個作業一定可以打滿網絡卡。另外,DataX團隊對所有的已經接入的外掛都做了極致的效能優化,並且做了完整的效能測試。效能測試相關詳情可以參照每單個數據源的詳細介紹:DataX資料來源指南

健壯的容錯機制

DataX作業是極易受外部因素的干擾,網路閃斷、資料來源不穩定等因素很容易讓同步到一半的作業報錯停止。因此穩定性是DataX的基本要求,在DataX 3.0的設計中,重點完善了框架和外掛的穩定性。目前DataX3.0可以做到執行緒級別、程序級別(暫時未開放)、作業級別多層次區域性/全域性的重試,保證使用者的作業穩定執行。
執行緒內部重試

DataX的核心外掛都經過團隊的全盤review,不同的網路互動方式都有不同的重試策略。

執行緒級別重試

目前DataX已經可以實現TaskFailover,針對於中間失敗的Task,DataX框架可以做到整個Task級別的重新排程。

極簡的使用體驗

下載即可用,支援linux和windows,只需要按照模板填相應的引數即可

DataX3.0安裝過程:https://blog.csdn.net/u014646662/article/details/82748055

DataX3.0 Oracle匯入Oracle:https://blog.csdn.net/u014646662/article/details/82777966

DataX3.0 MySQL匯入MySQL:https://blog.csdn.net/u014646662/article/details/82778067