HData是一個異構的ETL數據導入/導出工具,致力於使用一個工具解決不一樣數據源(JDBC、Hive、HDFS、HBase、MongoDB、FTP、Http、CSV、Excel、Kafka等)之間數據交換的問題。HData在設計上同時參考了開源的Sqoop、DataX,卻與之有不一樣的實現。HData採用「框架+插件」的結構,具備較好的擴展性,框架至關於數據緩衝區,插件則爲訪問不一樣的數據源提供實現。git
一、異構數據源之間高速數據傳輸;github
二、跨平臺獨立運行;數據庫
三、數據傳輸過程全內存操做,不讀寫磁盤;緩存
四、插件式擴展。框架
配置文件:XML格式,配置Reader、Writer的參數(如:並行度、數據庫鏈接地址、帳號、密碼等);異步
Reader:數據讀取模塊,負責從數據源讀取數據並寫入RingBuffer;工具
Splitter:根據配置文件中Reader的並行度構造相應數據的ReaderConfig對象供Reader使用,以實現數據的並行讀取;oop
RingBugffer:來自Disruptor的高性能環形數據緩衝區,基於事件監聽模式的異步實現,採用無鎖方式針對CPU緩存優化,在此用於Reader和Writer的數據交換;性能
Writer:數據寫入模塊,負責從RingBuffer中讀取數據並寫入目標數據源。優化
HData框架經過配置讀取解析、RingBugffer 緩衝區、線程池封裝等技術,統一處理了數據傳輸中的基本問題,並提供Reader、Splitter、Writer插件接口,基於此能夠方便地開發出各類插件,以知足各類數據源訪問的需求。