您好,登錄后才能下訂單哦!
這篇文章主要講解了“Flume如何部署”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“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)目。
Flume(水道)以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生成,當(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ì)象等。 |
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
配置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
啟動(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輸出:
名稱 | 含義 | 注意點(diǎn) |
---|---|---|
avro | avro協(xié)議的數(shù)據(jù)源 | |
exec | unix命令 | 可以命令監(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ù) |
名稱 | 含義 | 注意點(diǎn) |
---|---|---|
kafka | 寫到kafka中 | |
HDFS | 將數(shù)據(jù)寫到HDFS中 | |
logger | 輸出到控制臺(tái) | |
avro | avro協(xié)議 | 配合avro source使用 |
名稱 | 含義 | 注意點(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)注!
免責(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)容。