【轉】dataX簡介

本文爲轉載文,原文鏈接爲https://blog.csdn.net/u014646662/article/details/82792725

一. DataX3.0概覽

二、DataX3.0框架設計

三. DataX3.0插件體系

四、DataX3.0核心架構

五、DataX 3.0六大核心優勢

對人工智能感興趣的同學,可以點擊以下鏈接:

現在人工智能非常火爆,很多朋友都想學,但是一般的教程都是爲博碩生準備的,太難看懂了。最近發現了一個非常適合小白入門的教程,不僅通俗易懂而且還很風趣幽默。所以忍不住分享一下給大家。點這裏可以跳轉到教程。

https://www.cbedai.net/u014646662

一. 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各個模塊相互關係。

核心模塊介紹:

  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調度流程:

舉例來說,用戶提交了一個DataX作業,並且配置了20個併發,目的是將一個100張分表的mysql數據同步到odps裏面。 DataX的調度決策思路是:

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

五、DataX 3.0六大核心優勢

  • 可靠的數據質量監控

    <ul><li>完美解決數據傳輸個別類型失真問題</li>
    </ul><p>DataX舊版對於部分數據類型(比如時間戳)傳輸一直存在毫秒階段等數據失真情況,新版本DataX3.0已經做到支持所有的強數據類型,每一種插件都有自己的數據類型轉換策略,讓數據可以完整無損的傳輸到目的端。</p>
    
    <ul><li>提供作業全鏈路的流量、數據量運行時監控</li>
    </ul><p>DataX3.0運行過程中可以將作業本身狀態、數據流量、數據速度、執行進度等信息進行全面的展示,讓用戶可以實時瞭解作業狀態。並可在作業執行過程中智能判斷源端和目的端的速度對比情況,給予用戶更多性能排查信息。</p>
    
    <ul><li>提供髒數據探測</li>
    </ul><p>在大量數據的傳輸過程中,必定會由於各種原因導致很多數據傳輸報錯(比如類型轉換錯誤),這種數據DataX認爲就是髒數據。DataX目前可以實現髒數據精確過濾、識別、採集、展示,爲用戶提供多種的髒數據處理模式,讓用戶準確把控數據質量大關!</p>
    </li>
    <li>
    <h3><a name="t11"></a>豐富的數據轉換功能</h3>
    </li>
    

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

  • 精準的速度控制

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

  1. "speed": {
  2. "channel": 8, ----併發數限速(根據自己CPU合理控制併發數)
  3. "byte": 524288, ----字節流限速(根據自己的磁盤和網絡合理控制字節數)
  4. "record": 10000 ----記錄流限速(根據數據合理空行數)
  5. }
  • 強勁的同步性能

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

  • 健壯的容錯機制

DataX作業是極易受外部因素的干擾,網絡閃斷、數據源不穩定等因素很容易讓同步到一半的作業報錯停止。因此穩定性是DataX的基本要求,在DataX 3.0的設計中,重點完善了框架和插件的穩定性。目前DataX3.0可以做到線程級別、進程級別(暫時未開放)、作業級別多層次局部/全局的重試,保證用戶的作業穩定運行。

  • 線程內部重試

DataX的核心插件都經過團隊的全盤review,不同的網絡交互方式都有不同的重試策略。

  • 線程級別重試

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

  • 極簡的使用體驗

    <p>下載即可用,支持linux和windows,只需要按照模板填相應的參數即可</p>
    </li>
    <li>
    <p>DataX3.0安裝過程:<a href="https://blog.csdn.net/u014646662/article/details/82748055" rel="nofollow" data-token="60e3de4d8292be137adcdbd175f81488">https://blog.csdn.net/u014646662/article/details/82748055</a></p>
    </li>
    <li>
    <p>DataX3.0 Oracle導入Oracle:<a href="https://blog.csdn.net/u014646662/article/details/82777966" rel="nofollow" data-token="db4f447edd99814d4c9b6726f6466762">https://blog.csdn.net/u014646662/article/details/82777966</a></p>
    </li>
    <li>
    <p>DataX3.0 MySQL導入MySQL:<a href="https://blog.csdn.net/u014646662/article/details/82778067" rel="nofollow" data-token="ef16ce83573b88b20d8dc0a8a82b79b2">https://blog.csdn.net/u014646662/article/details/82778067</a></p>
    </li>
    

 

 

 

 

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