DataX簡介

轉自:http://code.taobao.org/p/datax/wiki/DataX%E4%BA%A7%E5%93%81%E8%AF%B4%E6%98%8E/


1、DataX是什麼?

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



2、DataX用來解決什麼?

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

 

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




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

DataX特點?


  • 在異構的數據庫/文件系統之間高速交換數據
  • 採用Framework + plugin架構構建,Framework處理了緩衝,流控,併發,上下文加載等高速數據交換的大部分技術問題,提供了簡單的接口與插件交互,插件僅需實現對數據處理系統的訪問
  • 運行模式:stand-alone
  • 數據傳輸過程在單進程內完成,全內存操作,不讀寫磁盤,也沒有IPC
  • 開放式的框架,開發者可以在極短的時間開發一個新插件以快速支持新的數據庫/文件系統。(具體參見《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在淘寶數據平臺數據已經廣泛地被用於數據同步作業,每天共計有4000+道DataX數據同步作業分佈在全天各個時段運行。 
DataX/DbSync/TT已經構成了淘寶數據平臺數據提供的三大支柱: 

 



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


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