HDataETL 數(shù)據(jù)導(dǎo)入/導(dǎo)出工具
HData是一個異構(gòu)的ETL數(shù)據(jù)導(dǎo)入/導(dǎo)出工具,致力于使用一個工具解決不同數(shù)據(jù)源(JDBC、Hive、HDFS、HBase、MongoDB、FTP、Http、CSV、Excel、Kafka等)之間數(shù)據(jù)交換的問題。HData在設(shè)計上同時參考了開源的Sqoop、DataX,卻與之有不同的實現(xiàn)。HData采用“框架+插件”的結(jié)構(gòu),具有較好的擴展性,框架相當(dāng)于數(shù)據(jù)緩沖區(qū),插件則為訪問不同的數(shù)據(jù)源提供實現(xiàn)。
【HData特性】
1、異構(gòu)數(shù)據(jù)源之間高速數(shù)據(jù)傳輸;
2、跨平臺獨立運行;
3、數(shù)據(jù)傳輸過程全內(nèi)存操作,不讀寫磁盤;
4、插件式擴展。
【HData設(shè)計】
-
配置文件:XML格式,配置Reader、Writer的參數(shù)(如:并行度、數(shù)據(jù)庫連接地址、賬號、密碼等);
-
Reader:數(shù)據(jù)讀取模塊,負責(zé)從數(shù)據(jù)源讀取數(shù)據(jù)并寫入RingBuffer;
-
Splitter:根據(jù)配置文件中Reader的并行度構(gòu)造相應(yīng)數(shù)據(jù)的ReaderConfig對象供Reader使用,以實現(xiàn)數(shù)據(jù)的并行讀??;
-
RingBugffer:來自Disruptor的高性能環(huán)形數(shù)據(jù)緩沖區(qū),基于事件監(jiān)聽模式的異步實現(xiàn),采用無鎖方式針對CPU緩存優(yōu)化,在此用于Reader和Writer的數(shù)據(jù)交換;
-
Writer:數(shù)據(jù)寫入模塊,負責(zé)從RingBuffer中讀取數(shù)據(jù)并寫入目標數(shù)據(jù)源。
HData框架通過配置讀取解析、RingBugffer 緩沖區(qū)、線程池封裝等技術(shù),統(tǒng)一處理了數(shù)據(jù)傳輸中的基本問題,并提供Reader、Splitter、Writer插件接口,基于此可以方便地開發(fā)出各種插件,以滿足各種數(shù)據(jù)源訪問的需求。
【編譯&運行】
-
編譯
執(zhí)行 ./bin/package-hdata.sh 命令,執(zhí)行成功后將會生成壓縮包 ./buildhdata.tar.gz ,然后解壓即可。
-
運行
./bin/hdata --reader READER_NAME -Rk1=v1 -Rk2=v2 --writer WRITER_NAME -Wk1=v1 -Wk2=v2
READER_NAME、WRITER_NAME分別為讀/寫插件的名稱,例如:jdbc、hive Reader插件的參數(shù)配置以-R為前綴,Writer插件的參數(shù)配置以-W為前綴。
