大資料採集工具
大資料是當下最火熱的話題,對於一個公司來講,如果要搭建自己的大資料平臺,至少需要了解這個平臺包含哪些過程:
1.資料採集(collect)
2.資料儲存(store)
3.資料處理(process)
4.資料展現(視覺化(visualize),報表(reporting)和監控(monitoring))
其中,資料採集又是必不可少的,因為當下資料來源量大,複雜,所以如何保證資料採集的可靠性,準確性和質量就顯得尤為珍貴,
現在的大資料採集平臺有很多,它們大多都提供了高可靠和高擴充套件的資料採集,都抽象出了輸入、輸出和中間的緩衝的架構。
這裡我主要介紹其中的兩款,也是用的最多的兩款:Flume和Logstash
Apache Flume
flume依賴java執行環境,它以agent為處理單位,每個agent中包含source,channel和sink元件,其中source負責接收資料,並將資料寫入channel;channel負責儲存資料,這裡儲存的型別有記憶體,檔案,jdbc等;sink負責將channel中的資料傳送給下一個處理節點,sink支援的不同目的地種類包括HDFS,HBASE,Solr,Elasticsearch,File,Logger或者其他的Flume Agent。
source上的資料可以複製到不同的channel上,而每一個channel可以連線不同數量的sink。這樣連線不同配置的agent就可以組成一個複雜的資料收集網路。通過對agent的配置,可以組成一個路由複雜的資料傳輸網路。
當然flume還有較好的課擴充套件性,它支援使用者可以使用flume的sdk來定製source和sink。
Logstash
相信大家都聽過ELK,所謂ELK,指的是ElasticSearch家族中的elasticsearch(資料儲存和資料處理),logstash(資料採集)和kibana(資料展示)。logstash同樣也依賴於JVM,主要元件有input,output和filter,配置比較簡單,通常作為ELK棧被同時使用,所以,如果的資料系統採用ElasticSearch的情況下,logstash是首選。