大數(shù)據(jù)同步工具DataX與Sqoop之比較
DataX是一個(gè)在異構(gòu)的數(shù)據(jù)庫(kù)/文件系統(tǒng)之間高速交換數(shù)據(jù)的工具,實(shí)現(xiàn)了在任意的數(shù)據(jù)處理系統(tǒng)(RDBMS/Hdfs/Local filesystem)之間的數(shù)據(jù)交換,由淘寶數(shù)據(jù)平臺(tái)部門完成。Sqoop是一個(gè)用來將Hadoop和關(guān)系型數(shù)據(jù)庫(kù)中的數(shù)據(jù)相互轉(zhuǎn)移的工具,可以將一個(gè)關(guān)系型數(shù)據(jù)庫(kù)(例如 : MySQL ,Oracle ,Postgres等)中的數(shù)據(jù)導(dǎo)進(jìn)到Hadoop的HDFS中,也可以將HDFS的數(shù)據(jù)導(dǎo)進(jìn)到關(guān)系型數(shù)據(jù)庫(kù)中。同樣是大數(shù)據(jù)異構(gòu)環(huán)境數(shù)據(jù)同步工具,二者有什么差別呢?本文轉(zhuǎn)自Dean的博客。
從接觸DataX起就有一個(gè)疑問,它和Sqoop到底有什么區(qū)別,昨天部署好了DataX和Sqoop,就可以對(duì)兩者進(jìn)行更深入的了解了。
兩者從原理上看有點(diǎn)相似,都是解決異構(gòu)環(huán)境的數(shù)據(jù)交換問題,都支持oracle,mysql,hdfs,hive的互相交換,對(duì)于不同數(shù)據(jù)庫(kù)的支持都是插件式的,對(duì)于新增的數(shù)據(jù)源類型,只要新開發(fā)一個(gè)插件就好了,但是只細(xì)看兩者的架構(gòu)圖,很快就會(huì)發(fā)現(xiàn)明顯的不同。
DataX架構(gòu)圖

Job: 一道數(shù)據(jù)同步作業(yè)
Splitter: 作業(yè)切分模塊,將一個(gè)大任務(wù)與分解成多個(gè)可以并發(fā)的小任務(wù).
Sub-job: 數(shù)據(jù)同步作業(yè)切分后的小任務(wù)
Reader(Loader): 數(shù)據(jù)讀入模塊,負(fù)責(zé)運(yùn)行切分后的小任務(wù),將數(shù)據(jù)從源頭裝載入DataX
Storage: Reader和Writer通過Storage交換數(shù)據(jù)
Writer(Dumper): 數(shù)據(jù)寫出模塊,負(fù)責(zé)將數(shù)據(jù)從DataX導(dǎo)入至目的數(shù)據(jù)地
Sqoop架構(gòu)圖
大數(shù)據(jù)同步工具DataX與Sqoop之比較
DataX 直接在運(yùn)行DataX的機(jī)器上進(jìn)行數(shù)據(jù)的抽取及加載。
而Sqoop充分里面了map-reduce的計(jì)算框架。Sqoop根據(jù)輸入條件,生成一個(gè)map-reduce的作業(yè),在Hadoop的框架中運(yùn)行。
從理論上講,用map-reduce框架同時(shí)在多個(gè)節(jié)點(diǎn)上進(jìn)行import應(yīng)該會(huì)比從單節(jié)點(diǎn)上運(yùn)行多個(gè)并行導(dǎo)入效率高。而實(shí)際的測(cè)試中也是如此,測(cè)試一個(gè)Oracle to hdfs的作業(yè),DataX上只能看到運(yùn)行DataX上的機(jī)器的數(shù)據(jù)庫(kù)連接,而Sqoop運(yùn)行時(shí),4臺(tái)task-tracker全部產(chǎn)生一個(gè)數(shù)據(jù)庫(kù)連接。調(diào)起的Sqoop作業(yè)的機(jī)器也會(huì)產(chǎn)生一個(gè)數(shù)據(jù)庫(kù)連接,應(yīng)為需要讀取數(shù)據(jù)表的一些元數(shù)據(jù)信息,數(shù)據(jù)量等,做分區(qū)。
Sqoop現(xiàn)在作為Apache的***項(xiàng)目,如果要我從DataX和Sqoop中間選擇的話,我想我還是會(huì)選擇Sqoop。而且Sqoop還有很多第三方的插件。早上使用了Quest開發(fā)的OraOop插件,確實(shí)像quest說的一樣,速度有著大幅的提升,Quest在數(shù)據(jù)庫(kù)方面的經(jīng)驗(yàn),確實(shí)比旁人深厚。

在我的測(cè)試環(huán)境上,一臺(tái)只有700m內(nèi)存的,IO低下的oracle數(shù)據(jù)庫(kù),百兆的網(wǎng)絡(luò),使用Quest的Sqoop插件在4個(gè)并行度的情況下,導(dǎo)出到HDFS速度有5MB/s ,這已經(jīng)讓我很滿意了。相比使用原生Sqoop的2.8MB/s快了將近一倍,sqoop又比DataX的760KB/s快了兩倍。
另外一點(diǎn)Sqoop采用命令行的方式調(diào)用,比如容易與我們的現(xiàn)有的調(diào)度監(jiān)控方案相結(jié)合,DataX采用xml 配置文件的方式,在開發(fā)運(yùn)維上還是有點(diǎn)不方便。
附圖1.Sqoop with Quest oracle connector
大數(shù)據(jù)同步工具DataX與Sqoop之比較