六個(gè)大數(shù)據(jù)采集工具架構(gòu)分析
隨著大數(shù)據(jù)越來越被重視,數(shù)據(jù)采集的挑戰(zhàn)變的尤為突出。今天為大家介紹幾款數(shù)據(jù)采集平臺(tái):Apache Flume、Fluentd、Logstash、Chukwa、Scribe、Splunk Forwarder。
大數(shù)據(jù)平臺(tái)與數(shù)據(jù)采集
任何完整的大數(shù)據(jù)平臺(tái),一般包括以下的幾個(gè)過程:
- 數(shù)據(jù)采集
- 數(shù)據(jù)存儲(chǔ)
- 數(shù)據(jù)處理
- 數(shù)據(jù)展現(xiàn)(可視化,報(bào)表和監(jiān)控)
其中,數(shù)據(jù)采集是所有數(shù)據(jù)系統(tǒng)必不可少的,隨著大數(shù)據(jù)越來越被重視,數(shù)據(jù)采集的挑戰(zhàn)也變的尤為突出。這其中包括:
- 數(shù)據(jù)源多種多樣
- 數(shù)據(jù)量大,變化快
- 如何保證數(shù)據(jù)采集的可靠性的性能
- 如何避免重復(fù)數(shù)據(jù)
- 如何保證數(shù)據(jù)的質(zhì)量
我們今天就來看看當(dāng)前可用的六款數(shù)據(jù)采集的產(chǎn)品,重點(diǎn)關(guān)注它們是如何做到高可靠,高性能和高擴(kuò)展。
01、Apache Flume
Flume 是Apache旗下的一款開源、高可靠、高擴(kuò)展、容易管理、支持客戶擴(kuò)展的數(shù)據(jù)采集系統(tǒng)。
Flume使用JRuby來構(gòu)建,所以依賴Java運(yùn)行環(huán)境。
Flume最初是由Cloudera的工程師設(shè)計(jì)用于合并日志數(shù)據(jù)的系統(tǒng),后來逐漸發(fā)展用于處理流數(shù)據(jù)事件。
幾乎在大部分的情況下ELK作為一個(gè)棧是被同時(shí)使用的。所有當(dāng)你的數(shù)據(jù)系統(tǒng)使用ElasticSearch的情況下,logstash是首選。
02、Chukwa
Apache Chukwa是apache旗下另一個(gè)開源的數(shù)據(jù)收集平臺(tái),它遠(yuǎn)沒有其他幾個(gè)有名。Chukwa基于Hadoop的HDFS和MapReduce來構(gòu)建(顯而易見,它用Java來實(shí)現(xiàn)),提供擴(kuò)展性和可靠性。Chukwa同時(shí)提供對(duì)數(shù)據(jù)的展示,分析和監(jiān)視。很奇怪的是它的上一次github的更新事7年前。可見該項(xiàng)目應(yīng)該已經(jīng)不活躍了。
Chukwa的部署架構(gòu)如下:
Chukwa的主要單元有:Agent,Collector,DataSink,ArchiveBuilder,Demux等等,看上去相當(dāng)復(fù)雜。由于該項(xiàng)目已經(jīng)不活躍,我們就不細(xì)看了。
03、Scribe
Scribe是Facebook開發(fā)的數(shù)據(jù)(日志)收集系統(tǒng)。已經(jīng)多年不維護(hù),同樣的,就不多說了。
04、Splunk Forwarder
以上的所有系統(tǒng)都是開源的。在商業(yè)化的大數(shù)據(jù)平臺(tái)產(chǎn)品中,Splunk提供完整的數(shù)據(jù)采金,數(shù)據(jù)存儲(chǔ),數(shù)據(jù)分析和處理,以及數(shù)據(jù)展現(xiàn)的能力。
Splunk是一個(gè)分布式的機(jī)器數(shù)據(jù)平臺(tái),主要有三個(gè)角色:
- Search Head負(fù)責(zé)數(shù)據(jù)的搜索和處理,提供搜索時(shí)的信息抽取。
- Indexer負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)和索引
- Forwarder,負(fù)責(zé)數(shù)據(jù)的收集,清洗,變形,并發(fā)送給Indexer
Splunk內(nèi)置了對(duì)Syslog,TCP/UDP,Spooling的支持,同時(shí),用戶可以通過開發(fā)Script Input和Modular Input的方式來獲取特定的數(shù)據(jù)。在Splunk提供的軟件倉庫里有很多成熟的數(shù)據(jù)采集應(yīng)用,例如AWS,數(shù)據(jù)庫(DBConnect)等等,可以方便的從云或者是數(shù)據(jù)庫中獲取數(shù)據(jù)進(jìn)入Splunk的數(shù)據(jù)平臺(tái)做分析。
這里要注意的是,Search Head和Indexer都支持Cluster的配置,也就是高可用,高擴(kuò)展的,但是Splunk現(xiàn)在還沒有針對(duì)Farwarder的Cluster的功能。也就是說如果有一臺(tái)Farwarder的機(jī)器出了故障,數(shù)據(jù)收集也會(huì)隨之中斷,并不能把正在運(yùn)行的數(shù)據(jù)采集任務(wù)Failover到其它的Farwarder上。
總結(jié)
我們簡(jiǎn)單討論了幾種流行的數(shù)據(jù)收集平臺(tái),它們大都提供高可靠和高擴(kuò)展的數(shù)據(jù)收集。大多平臺(tái)都抽象出了輸入,輸出和中間的緩沖的架構(gòu)。利用分布式的網(wǎng)絡(luò)連接,大多數(shù)平臺(tái)都能實(shí)現(xiàn)一定程度的擴(kuò)展性和高可靠性。
其中Flume,F(xiàn)luentd是兩個(gè)被使用較多的產(chǎn)品。如果你用ElasticSearch,Logstash也許是首選,因?yàn)镋LK棧提供了很好的集成。Chukwa和Scribe由于項(xiàng)目的不活躍,不推薦使用。
Splunk作為一個(gè)優(yōu)秀的商業(yè)產(chǎn)品,它的數(shù)據(jù)采集還存在一定的限制,相信Splunk很快會(huì)開發(fā)出更好的數(shù)據(jù)收集的解決方案。