問題導讀:
Hadoop數據採集框架都有哪些?
Hadoop數據採集框架異同及適用場景?java
Hadoop提供了一個高度容錯的分佈式存儲系統,幫助咱們實現集中式的數據分析和數據共享。在平常應用中咱們好比要將各類數據採集到HDFS存儲服務中去,說到將數據採集到HDFS,咱們熟知的框架包括:mysql
以及其餘不少針對特定數據源的採集工具:好比針對Cassandra數據源的Aegisthus,針對mongodb的mongo-hadoop等等。sql
本文就對以上常見的數據採集服務進行簡單的介紹,幫助咱們瞭解各個項目的特色以及適用場景。mongodb
Sqoop : SQL-to-Had oop,用於在關係型數據庫(RDBMS)和HDFS之間互相傳輸數據。數據庫
Sqoop 啓用了一個MapReduce任務來執行數據採集任務,傳輸大量結構化或半結構化數據的過程是徹底自動化的。其主要經過JDBC和關係數據庫進行交互,理論上支持JDBC的Database均可以使用Sqoop和HDFS進行數據交互。apache
Sqoop目前分爲兩個版本Sqoop1和Sqoop2。這是兩個徹底不一樣的版本,徹底不兼容。Sqoop1瞭解的朋友都知道它就是一個命令行腳本,而Sqoop2相比Sqoop1引入了sqoop server,集中化的管理Connector,引入基於角色的安全機制,並且支持多種訪問方式:cli客戶端,Web ui和Rest API。安全
Sqoop不支持文件解析入庫,適用於關係型數據庫與HDFS/Hive/HBase之間互相傳輸數據。它支持多種關係型數據庫如mysql、oracle、postgresql。能夠高效可控的進行數據導入導出。架構
Github Star 462, Fork 362oracle
Apache Flume是一個分佈式、可靠、高可用的日誌收集系統,支持各類各樣的數據來源,如http,log文件,監聽端口數據等等,將這些數據源的海量日誌數據進行高效收集、聚合、移動,最後存儲到指定存儲系統中(可擴展),如kafka、HDFS分佈式文件系統、Solr,HBase等。框架
Flume基於流式數據,適用於日誌和事件類型的數據收集,重構後的Flume-NG版本中一個agent(數據傳輸流程)中的source(源)和sink(目標)之間經過channel進行連接,同一個源能夠配置多個channel。多個agent還能夠進行連接組合共同完成數據收集任務,使用起來很是靈活。
Github Star 1418, Fork 1092
Gobblin是用來整合各類數據源的通用型ETL框架,在某種意義上,各類數據均可以在這裏「一站式」的解決ETL整個過程,專爲大數據採集而生。
做爲一個通用框架,Gobblin的接口封裝和概念抽象作的很好,做爲一個ETL框架使用者,咱們只須要實現咱們本身的Source,Extractor,Conventer類,再加上一些數據源和目的地址之類的配置文件提交給Gobblin就好了。Gobblin相對於其餘解決方案具備廣泛性、高度可擴展性、可操做性。
Github Star 1381, Fork 540
DataX 是一個異構數據源離線同步工具,致力於實現包括關係型數據庫(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各類異構數據源之間穩定高效的數據同步功能。
被阿里開源以後的DataX社區並不活躍,可是好在程序的架構設計的好,大部分用戶都會選擇fork以後基於其進行二次開發。DataX自己由阿里開發對於阿里自身的數據庫好比ODPS、ADS等支持更好。
Github Star 1128, Fork 478
Kettle是一款開源的ETL工具,純java編寫,能夠在Window、Linux、Unix上運行,綠色無需安裝,數據抽取高效穩定。它容許你管理來自不一樣數據庫的數據,經過提供一個圖形化的用戶環境來描述你想作什麼,而不是你想怎麼作。
Kettle 中文名稱叫水壺,寓意就是但願把各類數據放到一個壺裏,而後以一種指定的格式流出。
Kettle是CS架構,擁有本身的管理控制檯,一樣也能夠經過Java代碼與咱們的工程進行集成,在程序中完成kettle的轉換、執行等操做。
Github Star 1956, Fork 1476
本文簡單介紹了上面幾種數據採集框架,當咱們使用的時候須要考慮到業務場景,關係庫相關採集的能夠首選sqoop。日誌文件等實時採集錄入則選擇Flume,文件和數據庫都要兼顧則選擇Gobblin。後續會對這三類進行詳細介紹。至於DataX能夠看看其架構,設計思想很是不錯。
歡迎關注我:叄金大數據(不穩定持續更新~~~)