大數(shù)據(jù)系統(tǒng)數(shù)據(jù)采集產(chǎn)品的架構分析_第1頁
大數(shù)據(jù)系統(tǒng)數(shù)據(jù)采集產(chǎn)品的架構分析_第2頁
大數(shù)據(jù)系統(tǒng)數(shù)據(jù)采集產(chǎn)品的架構分析_第3頁
大數(shù)據(jù)系統(tǒng)數(shù)據(jù)采集產(chǎn)品的架構分析_第4頁
大數(shù)據(jù)系統(tǒng)數(shù)據(jù)采集產(chǎn)品的架構分析_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

大數(shù)據(jù)系統(tǒng)數(shù)據(jù)采集產(chǎn)品的架構分析任何完整的大數(shù)據(jù)平臺,普通涉及下列的幾個過程:數(shù)據(jù)采集數(shù)據(jù)存儲數(shù)據(jù)解決數(shù)據(jù)呈現(xiàn)(可視化,報表和監(jiān)控)其中,數(shù)據(jù)采集是全部數(shù)據(jù)系統(tǒng)必不可少的,隨著大數(shù)據(jù)越來越被重視,數(shù)據(jù)采集的挑戰(zhàn)也變的尤為突出。這其中涉及:數(shù)據(jù)源多個多樣數(shù)據(jù)量大,變化快如何確保數(shù)據(jù)采集的可靠性的性能如何避免重復數(shù)據(jù)如何確保數(shù)據(jù)的質(zhì)量我們今天就來看看現(xiàn)在可用的某些數(shù)據(jù)采集的產(chǎn)品,重點關注某些它們是如何做到高可靠,高性能和高擴展。ApacheFlumeFlume是Apache旗下,開源,高可靠,高擴展,容易管理,支持客戶擴展的數(shù)據(jù)采集系統(tǒng)。Flume使用JRuby來構建,因此依賴Java運行環(huán)境。Flume最初是由Cloudera的工程師設計用于合并日志數(shù)據(jù)的系統(tǒng),后來逐步發(fā)展用于解決流數(shù)據(jù)事件。Flume設計成一種分布式的管道架構,能夠看作在數(shù)據(jù)源和目的地之間有一種Agent的網(wǎng)絡,支持數(shù)據(jù)路由。每一種agent都由Source,Channel和Sink構成。SourceSource負責接受輸入數(shù)據(jù),并將數(shù)據(jù)寫入管道。Flume的Source支持HTTP,JMS,RPC,NetCat,Exec,SpoolingDirectory。其中Spooling支持監(jiān)視一種目錄或者文獻,解析其中新生成的事件。ChannelChannel存儲,緩存從source到Sink的中間數(shù)據(jù)??墒褂貌煌呐鋫鋪碜鯟hannel,例如內(nèi)存,文獻,JDBC等。使用內(nèi)存性能高但不持久,有可能丟數(shù)據(jù)。使用文獻更可靠,但性能不如內(nèi)存。SinkSink負責從管道中讀出數(shù)據(jù)并發(fā)給下一種Agent或者最后的目的地。Sink支持的不同目的地種類涉及:HDFS,HBASE,Solr,ElasticSearch,F(xiàn)ile,Logger或者其它的FlumeAgentFlume在source和sink端都使用了transaction機制確保在數(shù)據(jù)傳輸中沒有數(shù)據(jù)丟失。Source上的數(shù)據(jù)能夠復制到不同的通道上。每一種Channel也能夠連接不同數(shù)量的Sink。這樣連接不同配備的Agent就能夠構成一種復雜的數(shù)據(jù)收集網(wǎng)絡。通過對agent的配備,能夠構成一種路由復雜的數(shù)據(jù)傳輸網(wǎng)絡。配備如上圖所示的agent構造,F(xiàn)lume支持設立sink的Failover和LoadBalance,這樣就能夠確保即使有一種agent失效的狀況下,整個系統(tǒng)仍能正常收集數(shù)據(jù)。Flume中傳輸?shù)膬?nèi)容定義為事件(Event),事件由Headers(包含元數(shù)據(jù),MetaData)和Payload構成。Flume提供SDK,能夠支持顧客定制開發(fā):Flume客戶端負責在事件產(chǎn)生的源頭把事件發(fā)送給Flume的Agent。客戶端普通和產(chǎn)生數(shù)據(jù)源的應用在同一種進程空間。常見的Flume客戶端有Avro,log4J,syslog和HTTPPost。另外ExecSource支持指定一種本地進程的輸出作為Flume的輸入。固然很有可能,以上的這些客戶端都不能滿足需求,顧客能夠定制的客戶端,和已有的FLume的Source進行通信,或者定制實現(xiàn)一種新的Source類型。同時,顧客能夠使用Flume的SDK定制Source和Sink。似乎不支持定制的Channel。FluentdFluentd(Github地址)是另一種開源的數(shù)據(jù)收集框架。Fluentd使用C/Ruby開發(fā),使用JSON文獻來統(tǒng)一日志數(shù)據(jù)。它的可插拔架構,支持多個不同種類和格式的數(shù)據(jù)源和數(shù)據(jù)輸出。最后它也同時提供了高可靠和較好的擴展性。TreasureData,Inc對該產(chǎn)品提供支持和維護。Fluentd的布署和Flume非常相似:Fluentd的架構設計和Flume如出一轍:Fluentd的Input/Buffer/Output非常類似于Flume的Source/Channel/Sink。InputInput負責接受數(shù)據(jù)或者主動抓取數(shù)據(jù)。支持syslog,http,filetail等。BufferBuffer負責數(shù)據(jù)獲取的性能和可靠性,也有文獻或內(nèi)存等不同類型的Buffer能夠配備。OutputOutput負責輸出數(shù)據(jù)到目的地例如文獻,AWSS3或者其它的Fluentd。Fluentd的配備非常方便,以下圖:Fluentd的技術棧以下圖:FLuentd和其插件都是由Ruby開發(fā),MessgaePack提供了JSON的序列化和異步的并行通信RPC機制。Cool.io是基于libev的事件驅(qū)動框架。FLuentd的擴展性非常好,客戶能夠自己定制(Ruby)Input/Buffer/Output。Fluentd從各方面看都很像Flume,區(qū)別是使用Ruby開發(fā),F(xiàn)ootprint會小某些,但是也帶來了跨平臺的問題,并不能支持Windows平臺。另外采用JSON統(tǒng)一數(shù)據(jù)/日志格式是它的另一種特點。相對去Flumed,配備也相對簡樸某些。LogstashLogstash是出名的開源數(shù)據(jù)棧ELK(ElasticSearch,Logstash,Kibana)中的那個L。Logstash用JRuby開發(fā),全部運行時依賴JVM。Logstash的布署架構以下圖,固然這只是一種布署的選項。一種典型的Logstash的配備以下,涉及了Input,filter的Output的設立。1234567891011121314151617181920212223242526272829input

{

file

{

type

=>

"apache-access"

path

=>

"/var/log/apache2/other_vhosts_access.log"

}

file

{

type

=>

"apache-error"

path

=>

"/var/log/apache2/error.log"

}}

filter

{

grok

{

match

=>

{

"message"

=>

"%{COMBINEDAPACHELOG}"

}

}

date

{

match

=>

[

"timestamp"

,

"dd/MMM/yyyy:HH:mm:ssZ"

]

}}

output

{

stdout

{

}

redis

{

host

=>

"00"

data_type

=>

"list"

key

=>

"logstash"

}}幾乎在大部分的狀況下ELK作為一種棧是被同時使用的。全部當你的數(shù)據(jù)系統(tǒng)使用ElasticSearch的狀況下,logstash是首選。ChukwaApacheChukwa(github)是apache旗下另一種開源的數(shù)據(jù)收集平臺,它遠沒有其它幾個有名。Chukwa基于Hadoop的HDFS和MapReduce來構建(顯而易見,它用Java來實現(xiàn)),提供擴展性和可靠性。Chukwa同時提供對數(shù)據(jù)的展示,分析和監(jiān)視。很奇怪的是它的上一次github的更新事7年前??梢娫擁椖繎斠呀?jīng)不活躍了。Chukwa的布署架構以下。Chukwa的重要單元有:Agent,Collector,DataSink,ArchiveBuilder,Demux等等,看上去相稱復雜。由于該項目已經(jīng)不活躍,我們就不細看了。ScribeScribe是Facebook開發(fā)的數(shù)據(jù)(日志)收集系統(tǒng)。已經(jīng)數(shù)年不維護,同樣的,就不多說了。

SplunkForwarder以上的全部系統(tǒng)都是開源的,在商業(yè)化的大數(shù)據(jù)平臺產(chǎn)品中,Splunk提供完整的數(shù)據(jù)采金,數(shù)據(jù)存儲,數(shù)據(jù)分析和解決,以及數(shù)據(jù)呈現(xiàn)的能力。Splunk是一種分布式的機器數(shù)據(jù)平臺,重要有三個角色:SearchHead負責數(shù)據(jù)的搜索和解決,提供搜索時的信息抽取。Indexer負責數(shù)據(jù)的存儲和索引Forwarder,負責數(shù)據(jù)的收集,清洗,變形,并發(fā)送給IndexerSplunk內(nèi)置了對Syslog,TCP/UDP,Spooling的支持,同時,顧客能夠通過開發(fā)ScriptInput和ModularInput的方式來獲取特定的數(shù)據(jù)。在Splunk提供的軟件倉庫里有諸多成熟的數(shù)據(jù)采集應用,例如AWS,數(shù)據(jù)庫(DBConnect)等等,能夠方便的從云或者是數(shù)據(jù)庫中獲取數(shù)據(jù)進入Splunk的數(shù)據(jù)平臺做分析。這里要注意的是,SearchHead和Indexer都支持Cluster的配備,也就是高可用,高擴展的,但是Splunk現(xiàn)在還沒有針對Farwarder的Cluster的功效。也就是說如果有一臺Farwarder的機器出了故障,數(shù)據(jù)收集也會隨之中斷,并不能把正在運行的數(shù)據(jù)采集任務Failover到其它的Farwarder上??偨Y我們簡樸討論了幾個流行的數(shù)據(jù)收集平臺,它們大都提供高可靠和高擴展的數(shù)據(jù)收集。大多平臺都抽象出了輸入,輸出和中間的緩沖的架構。運用分布

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論