使用Apache Flume抓取數(shù)據(jù)(1)
使用Apache Flume抓取數(shù)據(jù),怎么來抓取呢?不過,在了解這個問題之前,我們必須明確ApacheFlume是什么?
一、什么是Apache Flume
Apache Flume是用于數(shù)據(jù)采集的高性能系統(tǒng) ,名字來源于原始的近乎實時的日志數(shù)據(jù)采集工具,現(xiàn)在廣泛用于任何流事件數(shù)據(jù)的采集,支持從很多數(shù)據(jù)源聚合數(shù)據(jù)到HDFS。
最初由Cloudera開發(fā) ,在2011年貢獻給了Apache基金會 ,在2012年變成了Apache的***項目,F(xiàn)lume OG升級換代成了Flume NG。
Flume具有橫向擴展、延展性、可靠性的優(yōu)勢
二、Flume 體系結(jié)構(gòu)
Source:接受外部系統(tǒng)生成event
Sink:發(fā)送event到指定的目的地
Channel:從Source緩存event,直到Sink把event取走
Agent:一個獨立的Flume進程,包含了source,channel和sink組件
三、Flume設(shè)計目標(biāo):可靠性
Channels提供了Flume可靠性保障 ,那么它通過什么樣的方式來保障呢?默認(rèn)的模式就是Memory Channel,Memory Channel就是內(nèi)存,所有的數(shù)據(jù)存放在內(nèi)存當(dāng)中。那么,這里就會存在一個問題?如果Channel的節(jié)點出現(xiàn)斷電,數(shù)據(jù)就會丟失。為解決這一問題,這里有另外一種模式,就是基于磁盤的Channel,基于磁盤的隊列確保出現(xiàn)斷電時數(shù)據(jù)不丟失 。
另外,Agent和Channel之間的數(shù)據(jù)傳輸是事務(wù)性的 ,傳輸給下游agent失敗的數(shù)據(jù)會回滾和重試 。相同的任務(wù)可以配置多個Agent,
比如,兩個agent完成一個數(shù)據(jù)采集作業(yè),如果一個agent失敗,則上游的agent會失敗切換到另一個。
四、Flume設(shè)計目標(biāo):擴展性
當(dāng)我們采集的數(shù)據(jù)特別多的時候,可以通過添加更多的系統(tǒng)資源從而線性地增加系統(tǒng)性能。而且Flume可橫向的擴展規(guī)模 ,隨著復(fù)雜增加,可以添加更多的機器到配置當(dāng)中 。
五、Flume設(shè)計目標(biāo):延展性
延展性就是能夠添加新的功能到系統(tǒng)中。Flume通過添加Sources和Sinks到現(xiàn)有的存儲層或數(shù)據(jù)平臺,常見的Sources包括files、syslog和任何linux進程的標(biāo)準(zhǔn)輸出的數(shù)據(jù);常用Sinks包括本地文件系統(tǒng)或HDFS,開發(fā)員可以寫自己的Sources或Sinks。
六、常見的Flume數(shù)據(jù)源
七、大規(guī)模部署實例
Flume使用agents收集數(shù)據(jù) ,Agents可以從很多源接收數(shù)據(jù),包括其他agents。大規(guī)模的部署使用多層來實現(xiàn)擴展性和可靠,F(xiàn)lume支持傳輸中數(shù)據(jù)的檢查和修改。
以上就是關(guān)于Apache Flume的部分詳情介紹,后續(xù)將會繼續(xù)分享。大數(shù)據(jù)將會是未來的風(fēng)口,要想很好的站在風(fēng)口上,就要持續(xù)不斷地學(xué)習(xí)和努力,這里推薦大家關(guān)注一個微信公眾號“大數(shù)據(jù)cn ”,里面有很多關(guān)于大數(shù)據(jù)知識的介紹,對于想要了解和學(xué)習(xí)大數(shù)據(jù)的人是一個很好的平臺。