全面解析大數據同步工具DataX與Sqoop的區別

DataX是一個在異構的數據庫/文件系統之間高速交換數據的工具,實現了在任意的數據處理系統(RDBMS/Hdfs/Local filesystem)之間的數據交換,由淘寶數據平臺部門完成。Sqoop是一個用來將Hadoop和關係型數據庫中的數據相互轉移的工具,可以將一個關係型數據庫(例如 : MySQL ,Oracle ,Postgres等)中的數據導進到Hadoop的HDFS中,也可以將HDFS的數據導進到關係型數據庫中。同樣是大數據異構環境數據同步工具,二者有什麼差別呢?

從接觸DataX起就有一個疑問,它和Sqoop到底有什麼區別,昨天部署好了DataX和Sqoop,就可以對兩者進行更深入的瞭解了。

兩者從原理上看有點相似,都是解決異構環境的數據交換問題,都支持oracle,mysql,hdfs,hive的互相交換,對於不同數據庫的支持都是插件式的,對於新增的數據源類型,只要新開發一個插件就好了,但是隻細看兩者的架構圖,很快就會發現明顯的不同

DataX架構圖


全面解析大數據同步工具DataX與Sqoop的區別


Job: 一道數據同步作業

Splitter:作業切分模塊,將一個大任務與分解成多個可以併發的小任務.

Sub-job: 數據同步作業切分後的小任務

Reader(Loader):數據讀入模塊,負責運行切分後的小任務,將數據從源頭裝載入DataX

Storage:Reader和Writer通過Storage交換數據

Writer(Dumper):數據寫出模塊,負責將數據從DataX導入至目的數據地

Sqoop架構圖


全面解析大數據同步工具DataX與Sqoop的區別


DataX 直接在運行DataX的機器上進行數據的抽取及加載。

而Sqoop充分裡面了map-reduce的計算框架。Sqoop根據輸入條件,生成一個map-reduce的作業,在Hadoop的框架中運行。

從理論上講,用map-reduce框架同時在多個節點上進行import應該會比從單節點上運行多個並行導入效率高。而實際的測試中也是如此,測試一個Oracle to hdfs的作業,DataX上只能看到運行DataX上的機器的數據庫連接,而Sqoop運行時,4臺task-tracker全部產生一個數據庫連接。調起的Sqoop作業的機器也會產生一個數據庫連接,應為需要讀取數據表的一些元數據信息,數據量等,做分區。

Sqoop現在作為Apache的頂級項目,如果要我從DataX和Sqoop中間選擇的話,我想我還是會選擇Sqoop。而且Sqoop還有很多第三方的插件。早上使用了Quest開發的OraOop插件,確實像quest說的一樣,速度有著大幅的提升,Quest在數據庫方面的經驗,確實比旁人深厚。


全面解析大數據同步工具DataX與Sqoop的區別


在我的測試環境上,一臺只有700m內存的,IO低下的oracle數據庫,百兆的網絡,使用Quest的Sqoop插件在4個並行度的情況下,導出到HDFS速度有5MB/s ,這已經讓我很滿意了。相比使用原生Sqoop的2.8MB/s快了將近一倍,sqoop又比DataX的760KB/s快了兩倍。

另外一點Sqoop採用命令行的方式調用,比如容易與我們的現有的調度監控方案相結合,DataX採用xml配置文件的方式,在開發運維上還是有點不方便。

在此我向大家推薦一個大數據開發交流圈:658558542 (☛點擊即可加入群聊)裡面整理了一大份學習資料,全都是些乾貨,包括大數據技術入門,大數據離線處理、數據實時處理、Hadoop 、Spark、Flink、推薦系統算法以及源碼解析等,送給每一位大數據小夥伴,讓自學更輕鬆。這裡不止是小白聚集地,還有大牛在線解答!歡迎初學和進階中的小夥伴一起進群學習交流,共同進步!

附圖1.Sqoop with Quest oracle connector


全面解析大數據同步工具DataX與Sqoop的區別


感謝您的觀看,如有不足之處,歡迎批評指正。

對大數據感興趣的同學可以關注我,並在後臺私信發送關鍵字:“大數據”即可獲取免費的大數據學習資料。

知識體系已整理好(筆記,PPT,學習視頻),歡迎大家來領取!


分享到:


相關文章: