溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Flume如何部署

發(fā)布時(shí)間:2021-12-16 10:43:27 來源:億速云 閱讀:179 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要講解了“Flume如何部署”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Flume如何部署”吧!

 Flume簡介

Flume是Cloudera提供的一個(gè)高可用、高可靠、分布式的海量日志采集、聚合和傳輸?shù)南到y(tǒng)。Flume支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方用于收集數(shù)據(jù),同時(shí)Flume提供對(duì)數(shù)據(jù)的簡單處理,并將數(shù)據(jù)處理結(jié)果寫入各種數(shù)據(jù)接收方的能力。

Flume作為Cloudera開發(fā)的實(shí)時(shí)日志收集系統(tǒng),受到了業(yè)界的認(rèn)可與廣泛應(yīng)用。2010年11月Cloudera開源了Flume的第一個(gè)可用版本0.9.2,這個(gè)系列版本被統(tǒng)稱為Flume-OG,重構(gòu)后的版本統(tǒng)稱為Flume-NG。改動(dòng)的另一原因是將 Flume 納入 Apache 旗下,Cloudera Flume改名為Apache Flume成為Apache核心項(xiàng)目。

2 Flume工作原理

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

Flume如何部署

Flume的數(shù)據(jù)流由事件(Event)貫穿始終。事件是Flume的基本數(shù)據(jù)單位,它攜帶日志數(shù)據(jù)(字節(jié)數(shù)組形式)并且攜帶有頭信息,這些Event由Agent外部的Source生成,當(dāng)Source捕獲事件后會(huì)進(jìn)行特定的格式化,然后Source會(huì)把事件推入(單個(gè)或多個(gè))Channel中??梢园袰hannel看作是一個(gè)緩沖區(qū),它將保存事件直到Sink處理完該事件。Sink負(fù)責(zé)持久化日志或者把事件推向另一個(gè)Source。以下是Flume的一些核心概念:

組件功能
Agent使用JVM 運(yùn)行Flume。每臺(tái)機(jī)器運(yùn)行一個(gè)agent,但是可以在一個(gè)agent中包含多個(gè)sources和sinks。
Client生產(chǎn)數(shù)據(jù),運(yùn)行在一個(gè)獨(dú)立的線程。
Source從Client收集數(shù)據(jù),傳遞給Channel。
Sink從Channel收集數(shù)據(jù),運(yùn)行在一個(gè)獨(dú)立線程。
Channel連接 sources 和 sinks ,這個(gè)有點(diǎn)像一個(gè)隊(duì)列。
Events可以是日志記錄、 avro 對(duì)象等。

3 Flume部署

 hadoop用戶下
1) 下載
wgte http://archive-primary.cloudera.com/cdh6/cdh/5/flume-ng-1.6.0-cdh6.7.0.tar.gz
cdh6.7對(duì)應(yīng)文檔:
http://archive-primary.cloudera.com/cdh6/cdh/5/flume-ng-1.6.0-cdh6.7.0/
2) 解壓到~/app,檢查用戶和用戶組
tar -xzvf flume-ng-1.6.0-cdh6.7.0.tar.gz -C ~/app/
3) 添加到系統(tǒng)環(huán)境變量 
vim ~/.bash_profile
export FLUME_HOME=/home/hadoop/app/apache-flume-1.6.0-cdh6.7.0-bin
export PATH=$FLUME_HOME/bin:$PATH
source ~/.bash_profile
4) 配置flume的jdk路徑
$FLUME_HOME/conf/flume-env.sh
cp flume-env.sh.template flume-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_45

4 Flume監(jiān)聽端口

配置flume加載的配置文件:

#從指定的網(wǎng)絡(luò)端口上采集日志到控制臺(tái)輸出
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# Describe/configure the source
a1.sources.r1.type = netcat
a1.sources.r1.bind = 0.0.0.0
a1.sources.r1.port = 44444
# Describe the sink
a1.sinks.k1.type = logger
# Use a channel which buffers events in memory
a1.channels.c1.type = memory
# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

5 Flume啟動(dòng)

啟動(dòng)flume:

./flume-ng agent \
--name a1 \
--conf $FLUME_HOME/conf \
--conf-file /home/hadoop/script/flume/telnet-flume.conf \
-Dflume.root.logger=INFO,console \
-Dflume.monitoring.type=http \
-Dflume.monitoring.port=34343

-Dflume.root.logger=INFO,console    -- 日志級(jí)別

-Dflume.monitoring.type=http        -- http輸出日志

-Dflume.monitoring.port=34343       -- http 端口

未安裝telnet,先安裝telnet命令

[root@locahost ~]#yum  install -y telnet-server 
[root@locahost ~]#yum install -y telnet
由于telnet服務(wù)也是由xinetd守護(hù)的,所以安裝完telnet-server,要啟動(dòng)telnet服務(wù)就必須重新啟動(dòng)xinetd 
[root@locahost ~]#service xinetd restart

結(jié)果測試:

[root@hadoop001 ~]# telnet localhost 44444
Trying ::1...
Connected to localhost.
Escape character is '^]'.
asd
OK
asd
OK
asd
OK
asd
OK

控制臺(tái)日志輸出:

(LoggerSink.java:94)] Event: 數(shù)據(jù)流事件 有,由【headers】【body】構(gòu)成,分別為字節(jié)數(shù)組+內(nèi)容

2018-08-09 19:20:21,272 (conf-file-poller-0) [INFO - org.mortbay.log.Slf4jLog.info(Slf4jLog.java:67)] Logging to org.slf4j.impl.Log4jLoggerAdapter(org.mortbay.log) via org.mortbay.log.Slf4jLog
2018-08-09 19:20:21,338 (conf-file-poller-0) [INFO - org.mortbay.log.Slf4jLog.info(Slf4jLog.java:67)] jetty-6.1.26.cloudera.4
2018-08-09 19:20:21,391 (conf-file-poller-0) [INFO - org.mortbay.log.Slf4jLog.info(Slf4jLog.java:67)] Started SelectChannelConnector@0.0.0.0:34343
2018-08-09 19:29:15,336 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:94)] Event: { headers:{} body: 61 73 64 0D   asd. }
2018-08-09 19:29:15,337 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:94)] Event: { headers:{} body: 61 73 64 0D   asd. }
2018-08-09 19:29:15,337 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:94)] Event: { headers:{} body: 61 73 64 0D   asd. }
2018-08-09 19:29:15,338 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:94)] Event: { headers:{} body: 61 73 64 0D   asd. }


http輸出:

Flume如何部署

7 Flume常用的Type

Source:
名稱含義注意點(diǎn)
avroavro協(xié)議的數(shù)據(jù)源
execunix命令可以命令監(jiān)控文件 tail -F
spooldir監(jiān)控一個(gè)文件夾不能含有子文件夾,不監(jiān)控windows文件夾
處理完文件不能再寫數(shù)據(jù)到文件
文件名不能沖突
TAILDIR既可以監(jiān)控文件也可以監(jiān)控文件夾支持?jǐn)帱c(diǎn)續(xù)傳功能,重點(diǎn)使用這個(gè)
netcat監(jiān)聽某個(gè)端口
kafka監(jiān)控卡夫卡數(shù)據(jù)
sink:
名稱含義注意點(diǎn)
kafka寫到kafka中
HDFS將數(shù)據(jù)寫到HDFS中
logger輸出到控制臺(tái)
avroavro協(xié)議配合avro source使用
channel:
名稱含義注意點(diǎn)
memory存在內(nèi)存中
kafka將數(shù)據(jù)存到kafka中
file存在本地磁盤文件中

感謝各位的閱讀,以上就是“Flume如何部署”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)Flume如何部署這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI