Flume日志收集工具_(dá)第1頁(yè)
Flume日志收集工具_(dá)第2頁(yè)
Flume日志收集工具_(dá)第3頁(yè)
Flume日志收集工具_(dá)第4頁(yè)
Flume日志收集工具_(dá)第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Flume日志收集工具提綱2Flume架構(gòu)3Flume實(shí)驗(yàn)1Flume簡(jiǎn)介 Flume是由Cloudera軟件公司提供的一個(gè)高可用的,高可靠的,分布式的海量日志采集、聚合和傳輸?shù)南到y(tǒng),后與2009年被捐贈(zèng)了apache軟件基金會(huì),為hadoop相關(guān)組件之一。尤其近幾年隨著flume的不斷被完善以及升級(jí)版本的逐一推出,特別是flume-ng;同時(shí)flume內(nèi)部的各種組件不斷豐富,用戶在開發(fā)的過程中使用的便利性得到很大的改善,現(xiàn)已成為apachetop項(xiàng)目之一 apacheFlume是一個(gè)從可以收集例如日志,事件等數(shù)據(jù)資源,并將這些數(shù)量龐大的數(shù)據(jù)從各項(xiàng)數(shù)據(jù)資源中集中起來(lái)存儲(chǔ)的工具/服務(wù)。flume具有高可用,分布式,配置工具,其設(shè)計(jì)的原理也是基于將數(shù)據(jù)流,如日志數(shù)據(jù)從各種網(wǎng)站服務(wù)器上匯集起來(lái)存儲(chǔ)到HDFS,HBase等集中存儲(chǔ)器中Flume是什么

當(dāng)節(jié)點(diǎn)出現(xiàn)故障時(shí),日志能夠被傳送到其他節(jié)點(diǎn)上而不會(huì)丟失。Flume提供了三種級(jí)別的可靠性保障,從強(qiáng)到弱依次分別為:end-to-end(收到數(shù)據(jù)agent首先將event寫到磁盤上,當(dāng)數(shù)據(jù)傳送成功后,再刪除;如果數(shù)據(jù)發(fā)送失敗,可以重新發(fā)送。),Storeonfailure(這也是scribe采用的策略,當(dāng)數(shù)據(jù)接收方crash時(shí),將數(shù)據(jù)寫到本地,待恢復(fù)后,繼續(xù)發(fā)送),Besteffort(數(shù)據(jù)發(fā)送到接收方后,不會(huì)進(jìn)行確認(rèn))。Flume可靠性Flume版本區(qū)別 Flume初始的發(fā)行版本目前被統(tǒng)稱為FlumeOG(originalgeneration),屬于cloudera。但隨著Flume功能的擴(kuò)展,F(xiàn)lumeOG代碼工程臃腫、核心組件設(shè)計(jì)不合理、核心配置不標(biāo)準(zhǔn)等缺點(diǎn)暴露出來(lái),尤其是在FlumeOG的最后一個(gè)發(fā)行版本0.94.0中,日志傳輸不穩(wěn)定的現(xiàn)象尤為嚴(yán)重。為了解決這些問題,2011年10月22號(hào),cloudera完成了Flume-728,對(duì)Flume進(jìn)行了里程碑式的改動(dòng):重構(gòu)核心組件、核心配置以及代碼架構(gòu),重構(gòu)后的版本統(tǒng)稱為FlumeNG(nextgeneration);改動(dòng)的另一原因是將Flume納入apache旗下,clouderaFlume改名為ApacheFlume。IBM的這篇文章:FlumeNG:Flume發(fā)展史上的第一次革命,從基本組件以及用戶體驗(yàn)的角度闡述FlumeOG到FlumeNG發(fā)生的革命性變化。Flume用途

比如我們?cè)谧鲆粋€(gè)電子商務(wù)網(wǎng)站,然后我們想從消費(fèi)用戶中訪問點(diǎn)特定的節(jié)點(diǎn)區(qū)域來(lái)分析消費(fèi)者的行為或者購(gòu)買意圖.這樣我們就可以更加快速的將他想要的推送到界面上。實(shí)現(xiàn)這一點(diǎn),我們需要將獲取到的她訪問的頁(yè)面以及點(diǎn)擊的產(chǎn)品數(shù)據(jù)等日志數(shù)據(jù)信息收集并移交給Hadoop平臺(tái)上去分析.而Flume正是幫我們做到這一點(diǎn)?,F(xiàn)在流行的內(nèi)容推送,比如廣告定點(diǎn)投放以及新聞私人定制也是基于次,不過不一定是使用FLume,畢竟優(yōu)秀的產(chǎn)品很多,比如facebook的Scribe,還有Apache新出的另一個(gè)明星項(xiàng)目chukwa,還有淘寶TimeTunnel。提綱1Flume簡(jiǎn)介3Flume實(shí)驗(yàn)2Flume架構(gòu)FlumeNG構(gòu)成 FlumeNG

以agent為最小的獨(dú)立運(yùn)行單位。一個(gè)agent就是一個(gè)JVM。單agent由Source、Sink和Channel三大組件構(gòu)成。

Flume的數(shù)據(jù)流由事件(Event)貫穿始終。事件是Flume的基本數(shù)據(jù)單位,它攜帶日志數(shù)據(jù)(字節(jié)數(shù)組形式)并且攜帶有頭信息,這些Event由Agent外部的Source,比如上圖中的WebServer生成。當(dāng)Source捕獲事件后會(huì)進(jìn)行特定的格式化,然后Source會(huì)把事件推入(單個(gè)或多個(gè))Channel中。可以把Channel看作是一個(gè)緩沖區(qū),它將保存事件直到Sink處理完該事件。Sink負(fù)責(zé)持久化日志或者把事件推向另一個(gè)Source。值得注意的是,F(xiàn)lume提供了大量?jī)?nèi)置的Source、Channel和Sink類型。不同類型的Source、Channel和Sink可以自由組合。組合方式基于用戶設(shè)置的配置文件,非常靈活。比如:Channel可以把事件暫存在內(nèi)存里,也可以持久化到本地硬盤上。Sink可以把日志寫入HDFS,HBase,甚至是另外一個(gè)Source等等。如下圖Flume構(gòu)成核心組件Flume構(gòu)成核心組件-Source

從數(shù)據(jù)發(fā)生器接收數(shù)據(jù),并將接收的數(shù)據(jù)以Flume的event格式傳遞給一個(gè)或者多個(gè)通道channal。Flume

支持

Avro,log4j,syslog

httppost(body為json格式)??梢宰寫?yīng)用程序同已有的Source直接打交道,如AvroSource,SyslogTcpSource。也可以寫一個(gè)

Source,以

IPC

RPC

的方式接入自己的應(yīng)用,Avro和

Thrift

都可以(分別有

NettyAvroRpcClient

ThriftRpcClient

實(shí)現(xiàn)了

RpcClient接口),其中

Avro

是默認(rèn)的

RPC

協(xié)議。具體代碼級(jí)別的

Client

端數(shù)據(jù)接入,可以參考官方手冊(cè)。對(duì)現(xiàn)有程序改動(dòng)最小的使用方式是使用是直接讀取程序原來(lái)記錄的日志文件,基本可以實(shí)現(xiàn)無(wú)縫接入,不需要對(duì)現(xiàn)有程序進(jìn)行任何改動(dòng)。對(duì)于直接讀取文件

Source,有兩種方式: ExecSource:

以運(yùn)行

Linux

命令的方式,持續(xù)的輸出最新的數(shù)據(jù),如

tail-F

文件名

指令,在這種方式下,取的文件名必須是指定的。

ExecSource

可以實(shí)現(xiàn)對(duì)日志的實(shí)時(shí)收集,但是存在Flume不運(yùn)行或者指令執(zhí)行出錯(cuò)時(shí),將無(wú)法收集到日志數(shù)據(jù),無(wú)法保證日志數(shù)據(jù)的完整性。

Flume構(gòu)成核心組件Flume構(gòu)成核心組件-Source SpoolSource:

監(jiān)測(cè)配置的目錄下新增的文件,并將文件中的數(shù)據(jù)讀取出來(lái)。需要注意兩點(diǎn):拷貝到

spool

目錄下的文件不可以再打開編輯;spool

目錄下不可包含相應(yīng)的子目錄。SpoolSource

雖然無(wú)法實(shí)現(xiàn)實(shí)時(shí)的收集數(shù)據(jù),但是可以使用以分鐘的方式分割文件,趨近于實(shí)時(shí)。如果應(yīng)用無(wú)法實(shí)現(xiàn)以分鐘切割日志文件的話,可以兩種收集方式結(jié)合使用。在實(shí)際使用的過程中,可以結(jié)合

log4j

使用,使用

log4j的時(shí)候,將

log4j

的文件分割機(jī)制設(shè)為1分鐘一次,將文件拷貝到spool的監(jiān)控目錄。log4j

有一個(gè)

TimeRolling

的插件,可以把

log4j

分割文件到

spool

目錄?;緦?shí)現(xiàn)了實(shí)時(shí)的監(jiān)控。Flume

在傳完文件之后,將會(huì)修改文件的后綴,變?yōu)?/p>

.COMPLETED(后綴也可以在配置文件中靈活指定)Flume構(gòu)成核心組件Flume構(gòu)成核心組件-channal channal是一種短暫的存儲(chǔ)容器,它將從source處接收到的event格式的數(shù)據(jù)緩存起來(lái),直到它們被sinks消費(fèi)掉,它在source和sink間起著一共橋梁的作用。

當(dāng)前有幾個(gè)

channel

可供選擇,分別是

MemoryChannel,JDBCChannel,FileChannel,PsuedoTransactionChannel。比較常見的是前三種

channel。 MemoryChannel

可以實(shí)現(xiàn)高速的吞吐,但是無(wú)法保證數(shù)據(jù)的完整性。 MemoryRecoverChannel

在官方文檔的建議上已經(jīng)建義使用FileChannel來(lái)替換。 FileChannel保證數(shù)據(jù)的完整性與一致性。在具體配置FileChannel時(shí),建議FileChannel設(shè)置的目錄和程序日志文件保存的目錄設(shè)成不同的磁盤,以便提高效率。 FileChannel

是一個(gè)持久化的隧道(channel),它持久化所有的事件,并將其存儲(chǔ)到磁盤中。因此,即使

Java

虛擬機(jī)當(dāng)?shù)?,或者操作系統(tǒng)崩潰或重啟,再或者事件沒有在管道中成功地傳遞到下一個(gè)代理(agent),這一切都不會(huì)造成數(shù)據(jù)丟失。MemoryChannel

是一個(gè)不穩(wěn)定的隧道,其原因是由于它在內(nèi)存中存儲(chǔ)所有事件。如果

java

進(jìn)程死掉,任何存儲(chǔ)在內(nèi)存的事件將會(huì)丟失。另外,內(nèi)存的空間收到

RAM大小的限制,而

FileChannel

這方面是它的優(yōu)勢(shì),只要磁盤空間足夠,它就可以將所有事件數(shù)據(jù)存儲(chǔ)到磁盤上。Flume構(gòu)成核心組件Flume構(gòu)成核心組件-Sink Sink在設(shè)置存儲(chǔ)數(shù)據(jù)時(shí),可以向文件系統(tǒng)、數(shù)據(jù)庫(kù)、hadoop存數(shù)據(jù),在日志數(shù)據(jù)較少時(shí),可以將數(shù)據(jù)存儲(chǔ)在文件系中,并且設(shè)定一定的時(shí)間間隔保存數(shù)據(jù)。在日志數(shù)據(jù)較多時(shí),可以將相應(yīng)的日志數(shù)據(jù)存儲(chǔ)到Hadoop中,便于日后進(jìn)行相應(yīng)的數(shù)據(jù)分析。Flume

NG多節(jié)點(diǎn)連接提綱1Flume簡(jiǎn)介2Flume架構(gòu)3Flume實(shí)驗(yàn)

在日志服務(wù)器上,web端訪問的日志數(shù)據(jù)會(huì)存放在指定的目錄下,F(xiàn)lume可以監(jiān)聽日志目錄,一旦有新日志數(shù)據(jù),F(xiàn)lum就可以動(dòng)態(tài)采集日志數(shù)據(jù)到大數(shù)據(jù)處理平臺(tái)hadoop,F(xiàn)lume當(dāng)然有多種數(shù)據(jù)源的采集方式,采集完后也可以輸出到多個(gè)目的地。在下面這個(gè)實(shí)驗(yàn)中,我們監(jiān)聽虛擬機(jī)下面的/home/hadoop/log/test.log文件,然后將數(shù)據(jù)采集到我們的hdfs文件系統(tǒng)中。按照以下步驟進(jìn)行實(shí)驗(yàn):

準(zhǔn)備安裝環(huán)境

1:centos6.8虛擬機(jī) 2:Flume安裝包

下載地址:/download.htmFlume實(shí)驗(yàn)Flume安裝

1、進(jìn)入存放flume-1.8.0-bin.tar.gz安裝的目錄執(zhí)行下面的命令tar-xzfflume-1.8.0-bin.tar.gzmvapache-flume-1.8.0-bin/app/flume-1.8.0 2、編輯/etc/profile文件,聲明flume的home路徑和在path加入bin的路徑:exportFLUME_HOME=/app/flume-1.8.0exportFLUME_CONF_DIR=$FLUME_HOME/confexportPATH=$PATH:$FLUME_HOME/bin

編譯配置文件/etc/profile,并確認(rèn)生效source/etc/profileecho$PATH

Flume實(shí)驗(yàn)

3、設(shè)置flume-env.sh配置文件

在$FLUME_HOME/conf下復(fù)制改名flume-env.sh.template為flume-env.sh,修改conf/flume-env.sh配置文件cd/app/flume-1.8.0/confcpflume-env.sh.templateflume-env.shsudoviflume-env.sh

修改配置文件內(nèi)容:JAVA_HOME=

/usr/lib/jdk1.8JAVA_OPTS="-Xms100m-Xmx200m-Dcom.sun.management.jmxremote"

Flume實(shí)驗(yàn)以下進(jìn)行我們數(shù)據(jù)采集實(shí)驗(yàn)的具體配置

1、修改flume-conf配置文件

在$FLUME_HOME/conf目錄下修改perties.template文件,復(fù)制并改名為perties.cd/app/flume-1.8.0/confcpperties.templatepertiessudoviperties

修改flume-conf配置文件內(nèi)容a1.sources=r1a1.sinks=k1a1.channels=c1Flume實(shí)驗(yàn)

a1.sources.r1.type=execmand=tail-F/home/hadoop/log/test.loga1.sources.r1.channels=c1#Describethesinka1.sinks.k1.type=hdfsa1.sinks.k1.channel=c1#指定目錄,flume幫做目的替換a1.sinks.k1.hdfs.path=/flume/events/%y-%m-%d/%H%M/#文件的命名,前綴a1.sinks.k1.hdfs.filePrefix=events-#用本地時(shí)間格式化目錄a1.sinks.k1.hdfs.useLocalTimeStamp=true#下沉后,生成的文件類型,默認(rèn)是Sequencefile,可用Dat

溫馨提示

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

評(píng)論

0/150

提交評(píng)論