淘寶異構數據源數據交換工具 DataX


淘寶異構數據源數據交換工具 DataX

DataX是什么?


DataX是一個在異構的數據庫/文件系統之間高速交換數據的工具,實現了在任意的數據處理系統(RDBMS/Hdfs/Local filesystem)之間的數據交換,由淘寶數據平台部門完成。

異構數據源數據交換工具 DataX

 

DataX用來解決什么?


目前成熟的數據導入導出工具比較多,但是一般都只能用於數據導入或者導出,並且只能支持一個或者幾個特定類型的數據庫。這樣帶來的一個問題是,如果我們擁 有很多不同類型的數據庫/文件系統(Mysql/Oracle/Rac/Hive/Other…),並且經常需要在它們之間導入導出數據,那么我們可能需 要開發/維護/學習使用一批這樣的工具(jdbcdump/dbloader/multithread/getmerge+sqlloader /mysqldumper…)。而且以后每增加一種庫類型,我們需要的工具數目將線性增長。(當我們需要將mysql的數據導入oracle的時候,有沒 有過想從jdbcdump和dbloader上各掰下來一半拼在一起到沖動?) 這些工具有些使用文件中轉數據,有些使用管道,不同程度的為數據中轉帶來額外開銷,效率差別很非常大。很多工具也無法滿足ETL任務中常見的需求,比如日 期格式轉化,特性字符的轉化,編碼轉換。另外,有些時候,我們希望在一個很短的時間窗口內,將一份數據從一個數據庫同時導出到多個不同類型的數據庫。 DataX正是為了解決這些問題而生。

異構數據源數據交換工具 DataX

(問題: 新增第n+1個數據源,是不是要新開發n個數據同步工具 ?)




異構數據源數據交換工具 DataX 
我們只需要針對新增的數據源開發的一套Reader/Writer插件,即可實現任意數據的互導 

DataX特點?

 

  • 在異構的數據庫/文件系統之間高速交換數據
  • 采用Framework + plugin架構構建,Framework處理了緩沖,流控,並發,上下文加載等高速數據交換的大部分技術問題,提供了簡單的接口與插件交互,插件僅需實現對數據處理系統的訪問
  • 運行模式:stand-alone
  • 數據傳輸過程在單進程內完成,全內存操作,不讀寫磁盤,也沒有IPC
  • 開放式的框架,開發者可以在極短的時間開發一個新插件以快速支持新的數據庫/文件系統。(具體參見《DataX插件開發指南》)

 

DataX結構模式(框架+插件)



異構數據源數據交換工具 DataX

  • Job: 一道數據同步作業
  • Splitter: 作業切分模塊,將一個大任務與分解成多個可以並發的小任務.
  • Sub-job: 數據同步作業切分后的小任務
  • Reader(Loader): 數據讀入模塊,負責運行切分后的小任務,將數據從源頭裝載入DataX
  • Storage: Reader和Writer通過Storage交換數據
  • Writer(Dumper): 數據寫出模塊,負責將數據從DataX導入至目的數據地


DataX框架內部通過雙緩沖隊列、線程池封裝等技術,集中處理了高速數據交換遇到的問題,提供簡單的接口與插件交互,插件分為Reader和 Writer兩類,基於框架提供的插件接口,可以十分便捷的開發出需要的插件。比如想要從oracle導出數據到mysql,那么需要做的就是開發出 OracleReader和MysqlWriter插件,裝配到框架上即可。並且這樣的插件一般情況下在其他數據交換場合是可以通用的。更大的驚喜是我們 已經開發了如下插件:


Reader插件

  • hdfsreader : 支持從hdfs文件系統獲取數據。
  • mysqlreader: 支持從mysql數據庫獲取數據。
  • sqlserverreader: 支持從sqlserver數據庫獲取數據。
  • oraclereader : 支持從oracle數據庫獲取數據。
  • streamreader: 支持從stream流獲取數據(常用於測試)
  • httpreader : 支持從http URL獲取數據。


Writer插件

  • hdfswriter:支持向hdbf寫入數據。
  • mysqlwriter:支持向mysql寫入數據。
  • oraclewriter:支持向oracle寫入數據。
  • streamwriter:支持向stream流寫入數據。(常用於測試)


您可以按需選擇使用或者獨立開發您自己的插件 (具體參見《DataX插件開發指南》)



DataX在淘寶的運用


DataX上線后,我們對淘寶數據平台原有作業進行了逐步批量迭代替換。數據同步工具歸一化為DataX后,大大提高了用戶拖表數據速度和內存利用率, 同時針對歸一化后的DataX工具,我們能夠做到更好應對mysql切庫、數據同步監控等以前零散工具下很難完成的運維任務。 
下面是部分工具替換后的比對情況: 

異構數據源數據交換工具 DataX 

目前DataX在淘寶數據平台數據已經廣泛地被用於數據同步作業,每天共計有 4000+道DataX數據同步作業分布在全天各個時段運行。 
DataX/DbSync/TT已經構成了淘寶數據平台數據提供的三大支柱: 

異構數據源數據交換工具 DataX 



其中DataX每天為淘寶貢獻 2.5T數據量,占淘寶數據平台總體數據同步的 23%,占數據庫數據同步的 96%。 


異構數據源數據交換工具 DataX 

項目主頁:http://www.open-open.com/lib/view/home/1325771223625


免責聲明!

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



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