Flume的安裝與使用詳解

Flume的簡(jiǎn)單介紹
Flume是一個(gè)分布式造垛、可靠斯入、和高可用的海量日志采集、聚合和傳輸?shù)南到y(tǒng)蕉拢。
Flume可以采集文件特碳,socket數(shù)據(jù)包等各種形式源數(shù)據(jù),又可以將采集到的數(shù)據(jù)輸出到HDFS晕换、hbase午乓、hive、kafka等眾多外部存儲(chǔ)系統(tǒng)中
Flume的運(yùn)行機(jī)制
1闸准、Flume分布式系統(tǒng)中最核心的角色是agent硅瞧,flume采集系統(tǒng)就是由一個(gè)個(gè)agent所連接起來(lái)形成
2、每一個(gè)agent相當(dāng)于一個(gè)數(shù)據(jù)傳遞員Source 到 Channel 到 Sink之間傳遞數(shù)據(jù)的形式是Event事件恕汇;Event事件是一個(gè)數(shù)據(jù)流單元腕唧。

內(nèi)部有三個(gè)組件:
a)Source:采集源或辖,用于跟數(shù)據(jù)源對(duì)接,以獲取數(shù)據(jù)
b)Sink:下沉地枣接,采集數(shù)據(jù)的傳送目的颂暇,用于往下一級(jí)agent傳遞數(shù)據(jù)或者往最終存儲(chǔ)系統(tǒng)傳遞數(shù)據(jù)
c)Channel:angent內(nèi)部的數(shù)據(jù)傳輸通道,用于從source將數(shù)據(jù)傳遞到sink
單個(gè)agent采集數(shù)據(jù)

image
image.gif

?

多個(gè)agent直接串聯(lián)采集數(shù)據(jù)

image
image.gif

?

Flume的安裝與使用
安裝Flume之前確保安裝了hadoop但惶,假設(shè)是安裝了hadoop的前提下耳鸯,介紹Flume的安裝,其實(shí)解壓下就行了膀曾。
我這里使用的是apache-flume-1.6.0-bin.tar.gz县爬,上傳到linux,解壓到指定包即可添谊,我這里解壓到了apps這個(gè)包财喳,里面放了我解壓的hadoo、hive和zookeeper斩狱,安裝就完了耳高。
注:其實(shí)在conf目錄里面需要配置JAVA_HOME,但是我沒(méi)配置使用也沒(méi)問(wèn)題的。如果出現(xiàn)問(wèn)題了再配置看所踊。

3臺(tái)電腦安裝netcat

yum install -y nc.x86_64
image.gif

hadoop03在9999端口監(jiān)聽(tīng)

nc -l 9999

image.gif

hadoop05連接hadoop03泌枪,發(fā)送數(shù)據(jù)

nc hadoop03 9999

image.gif

Flume的使用(一)
這里打算做的是,接收網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)秕岛。也就是flume(安裝在mini1)的作用是碌燕,然后在mini2這臺(tái)機(jī)器上,發(fā)送數(shù)據(jù)继薛,mini1上能采集到修壕,可以下沉到hdfs(為了方便,這里暫時(shí)打印在控制臺(tái))
注:為了方便我這里就在mini1這條機(jī)器打開(kāi)兩個(gè)窗口來(lái)進(jìn)行發(fā)送和采集數(shù)據(jù)了惋增。
進(jìn)入到flume的conf目錄下叠殷,創(chuàng)建文件,進(jìn)行配置

[root@mini1 ~]# cd apps/apache-flume-1.6.0-bin/conf/
[root@mini1 conf]# ll
總用量 28
-rw-r--r--. 1  501 games 1661 5月   9 2015 flume-conf.properties.template
-rw-r--r--. 1  501 games 1110 5月   9 2015 flume-env.ps1.template
-rw-r--r--. 1  501 games 1214 5月   9 2015 flume-env.sh.template
-rw-r--r--. 1  501 games 3107 5月   9 2015 log4j.properties
-rw-r--r--. 1 root root   487 10月 19 14:34 netcat-logger.conf
-rw-r--r--. 1 root root   507 10月 19 01:57 spool-logger.conf
-rw-r--r--. 1 root root  1271 10月 19 15:11 tail-hdfs.conf
[root@mini1 conf]# vi netcat-logger.conf 
# example.conf: A single-node Flume configuration

# Name the components on this agent
#給那三個(gè)組件取個(gè)名字
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# Describe/configure the source
#類(lèi)型, 從網(wǎng)絡(luò)端口接收數(shù)據(jù),本機(jī)mini1, type=spoolDir采集目錄源,目錄里有就采
a1.sources.r1.type = netcat
a1.sources.r1.bind = mini1
a1.sources.r1.port = 44444

# Describe the sink 日志下沉到log4j,打印在屏幕上
a1.sinks.k1.type = logger

# Use a channel which buffers events in memory
#下沉的時(shí)候是一批一批的, 下沉的時(shí)候是一個(gè)個(gè)event
Channel參數(shù)解釋?zhuān)?#capacity:默認(rèn)該通道中最大的可以存儲(chǔ)的event數(shù)量 1000條數(shù)據(jù)(1000個(gè)event,source拿到的數(shù)據(jù)是封裝成event事件的)
#trasactionCapacity:每次最大可以從source中拿到或者送到sink中的event數(shù)量
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

image.gif

配置好了就可以啟動(dòng)了

[root@mini1 apache-flume-1.6.0-bin]# bin/flume-ng agent --conf conf --conf-file conf/netcat-logger.conf --name a1 -Dflume.root.logger=INFO,console
Warning: JAVA_HOME is not set!
...
2017-10-20 05:00:13,317 (conf-file-poller-0) [INFO - org.apache.flume.node.Application.startAllComponents(Application.java:173)] Starting Sink k1
2017-10-20 05:00:13,318 (conf-file-poller-0) [INFO - org.apache.flume.node.Application.startAllComponents(Application.java:184)] Starting Source r1
2017-10-20 05:00:13,320 (lifecycleSupervisor-1-3) [INFO - org.apache.flume.source.NetcatSource.start(NetcatSource.java:150)] Source starting
2017-10-20 05:00:13,350 (lifecycleSupervisor-1-3) [INFO - org.apache.flume.source.NetcatSource.start(NetcatSource.java:164)] Created serverSocket:sun.nio.ch.ServerSocketChannelImpl[/192.168.25.127:44444]

image.gif

flume內(nèi)部啟動(dòng)netcat诈皿,監(jiān)聽(tīng)44444端口林束,收到數(shù)據(jù),顯示到終端控制臺(tái)

在mini1上重開(kāi)一個(gè)窗口(或者其它機(jī)器)稽亏,發(fā)送數(shù)據(jù)進(jìn)行測(cè)試

[root@mini1 ~]# telnet mini1 44444
Trying 192.168.25.127...
Connected to mini1.
Escape character is '^]'.
jinbingmin
OK
haha
OK
oyasumi
OK

image.gif

發(fā)送了三句話(huà)壶冒。
注:如果沒(méi)有telnet命令,做法如下

rpm -qa telnet-server 查看有沒(méi)有安裝截歉,沒(méi)有輸出的話(huà)胖腾,那么執(zhí)行
yum install telnet-server  
rpm -qa telnet 來(lái)查看telnet-server 安裝包有沒(méi)有安裝,如果沒(méi)有輸出,那么執(zhí)行安裝
yum install telnet
退出的話(huà)使用ctrl+],接著quit

image.gif

再次查看服務(wù)端有沒(méi)有采集到

2017-10-20 05:00:59,699 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:94)] Event: { headers:{} body: 6A 69 6E 62 69 6E 67 6D 69 6E 0D                jinbingmin. }
2017-10-20 05:01:14,704 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:94)] Event: { headers:{} body: 68 61 68 61 0D                                  haha. }
2017-10-20 05:01:19,421 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:94)] Event: { headers:{} body: 6F 79 61 73 75 6D 69 0D      oyasumi. }

image.gif

發(fā)現(xiàn)已經(jīng)采集到了打印到了控制臺(tái)

使用Flume監(jiān)聽(tīng)日志變化

進(jìn)入到flume的conf目錄下咸作,創(chuàng)建文件锨阿,進(jìn)行配置

[root@mini1 ~]# cd apps/apache-flume-1.6.0-bin/conf/
[root@mini1 conf]# ll
總用量 28
-rw-r--r--. 1  501 games 1661 5月   9 2015 flume-conf.properties.template
-rw-r--r--. 1  501 games 1110 5月   9 2015 flume-env.ps1.template
-rw-r--r--. 1  501 games 1214 5月   9 2015 flume-env.sh.template
-rw-r--r--. 1  501 games 3107 5月   9 2015 log4j.properties
-rw-r--r--. 1 root root   487 10月 19 14:34 netcat-logger.conf
-rw-r--r--. 1 root root   507 10月 19 01:57 spool-logger.conf
-rw-r--r--. 1 root root  1271 10月 19 15:11 tail-hdfs.conf
[root@mini1 conf]# vi netcat-logger.conf 
# example.conf: A single-node Flume configuration

# Name the components on this agent
#給那三個(gè)組件取個(gè)名字
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# Describe/configure the source
## exec表示flume回去調(diào)用給的命令,然后從給的命令的結(jié)果中去拿數(shù)據(jù)
a1.sources.r1.type = exec
## 使用tail這個(gè)命令來(lái)讀數(shù)據(jù)
a1.sources.r1.command = tail -F /opt/test.log
a1.sources.r1.channels = c1

# Describe the sink 日志下沉到log4j,打印在屏幕上
a1.sinks.k1.type = logger

# Use a channel which buffers events in memory
#下沉的時(shí)候是一批一批的, 下沉的時(shí)候是一個(gè)個(gè)event
Channel參數(shù)解釋?zhuān)?#capacity:默認(rèn)該通道中最大的可以存儲(chǔ)的event數(shù)量 1000條數(shù)據(jù)(1000個(gè)event,source拿到的數(shù)據(jù)是封裝成event事件的)
#trasactionCapacity:每次最大可以從source中拿到或者送到sink中的event數(shù)量
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

image.gif

配置好了就可以啟動(dòng)了

[root@mini1 apache-flume-1.6.0-bin]# bin/flume-ng agent --conf conf --conf-file conf/netcat-logger.conf --name a1 -Dflume.root.logger=INFO,console
Warning: JAVA_HOME is not set!
...
2017-10-20 05:00:13,317 (conf-file-poller-0) [INFO - org.apache.flume.node.Application.startAllComponents(Application.java:173)] Starting Sink k1
2017-10-20 05:00:13,318 (conf-file-poller-0) [INFO - org.apache.flume.node.Application.startAllComponents(Application.java:184)] Starting Source r1
2017-10-20 05:00:13,320 (lifecycleSupervisor-1-3) [INFO - org.apache.flume.source.NetcatSource.start(NetcatSource.java:150)] Source starting
2017-10-20 05:00:13,350 (lifecycleSupervisor-1-3) [INFO - org.apache.flume.source.NetcatSource.start(NetcatSource.java:164)] Created serverSocket:sun.nio.ch.ServerSocketChannelImpl[/192.168.25.127:44444]

image.gif

通過(guò)寫(xiě)一個(gè)死循環(huán)往test.log中寫(xiě)數(shù)據(jù)的方式模式日志文件增長(zhǎng)

編寫(xiě)shell腳本记罚,模擬日志增長(zhǎng)變化墅诡。

#!/bin/bash
[root@hadoop1 flumedata]# cd /home/tuzq/software/flumedata
[root@hadoop1 flumedata]# while true
>do
> date >> test.log
> sleep 2
> done

image.gif

查看日志變化

[root@hadoop1 ~]# cd /home/tuzq/software/flumedata/
[root@hadoop1 flumedata]# ls
access.log  error.log  test.log
[root@hadoop1 flumedata]# tail -f test.log 
2017年 06月 13日 星期二 22:02:22 CST
2017年 06月 13日 星期二 22:02:24 CST
2017年 06月 13日 星期二 22:02:26 CST
2017年 06月 13日 星期二 22:02:28 CST
2017年 06月 13日 星期二 22:02:30 CST
2017年 06月 13日 星期二 22:02:32 CST

image.gif

通過(guò)上面的文件,可以看到test.log在不停的追加數(shù)據(jù)桐智。

Flume的使用(三)

采集數(shù)據(jù)到hdfs

這里要添加的配置文件里面的采集源和下沉地就都有變化了末早。

[root@mini1 conf]# vi tail-hdfs.conf 
# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1
#exec 指的是命令
# Describe/configure the source
a1.sources.r1.type = exec
#F根據(jù)文件名追中, f根據(jù)文件的nodeid追中
a1.sources.r1.command = tail -F /opt/test.log
a1.sources.r1.channels = c1
# Describe the sink
#下沉目標(biāo)
a1.sinks.k1.type=hdfs
a1.sinks.k1.channel=c1
a1.sinks.k1.hdfs.useLocalTimeStamp=true
a1.sinks.k1.hdfs.path=/flume/testout9/
a1.sinks.k1.hdfs.filePrefix=cmcc
a1.sinks.k1.hdfs.minBlockReplicas=1
a1.sinks.k1.hdfs.fileType=DataStream
a1.sinks.k1.hdfs.writeFormat=Text
a1.sinks.k1.hdfs.rollInterval=0
a1.sinks.k1.hdfs.rollSize=10240
a1.sinks.k1.hdfs.rollCount=0
a1.sinks.k1.hdfs.idleTimeout=0

# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

image.gif

flume+kafka

spooldir.sources= eventDir
spooldir.channels= memoryChannel
spooldir.sinks= eventHDFS

spooldir.channels.memoryChannel.type= memory
spooldir.channels.memoryChannel.capacity= 10000
spooldir.channels.memoryChannel.transactioncapacity= 1000000

spooldir.sources.eventDir.type=exec
spooldir.sources.eventDir.command=tail -F /opt/log.txt

spooldir.sinks.eventHDFS.type = org.apache.flume.sink.kafka.KafkaSink
spooldir.sinks.eventHDFS.topic = orderMq
spooldir.sinks.eventHDFS.brokerList = hadoop01:9092,hadoop02:9092,hadoop03:9092

spooldir.sources.eventDir.channels= memoryChannel
spooldir.sinks.eventHDFS.channel= memoryChannel

image.gif

參考
https://blog.csdn.net/zengmingen/article/details/65444823

https://blog.csdn.net/HG_Harvey/article/details/78358304

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市说庭,隨后出現(xiàn)的幾起案子然磷,更是在濱河造成了極大的恐慌,老刑警劉巖刊驴,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件姿搜,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡缺脉,警方通過(guò)查閱死者的電腦和手機(jī)痪欲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)悦穿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)攻礼,“玉大人,你說(shuō)我怎么就攤上這事栗柒〗赴纾” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵瞬沦,是天一觀的道長(zhǎng)太伊。 經(jīng)常有香客問(wèn)我,道長(zhǎng)逛钻,這世上最難降的妖魔是什么僚焦? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮曙痘,結(jié)果婚禮上芳悲,老公的妹妹穿的比我還像新娘。我一直安慰自己边坤,他們只是感情好名扛,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著茧痒,像睡著了一般肮韧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,679評(píng)論 1 305
  • 那天弄企,我揣著相機(jī)與錄音超燃,去河邊找鬼。 笑死拘领,一個(gè)胖子當(dāng)著我的面吹牛淋纲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播院究,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼洽瞬,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了业汰?” 一聲冷哼從身側(cè)響起伙窃,我...
    開(kāi)封第一講書(shū)人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎样漆,沒(méi)想到半個(gè)月后为障,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡放祟,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年鳍怨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片跪妥。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鞋喇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出眉撵,到底是詐尸還是另有隱情侦香,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布纽疟,位于F島的核電站罐韩,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏污朽。R本人自食惡果不足惜散吵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蟆肆。 院中可真熱鬧矾睦,春花似錦、人聲如沸颓芭。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)亡问。三九已至官紫,卻和暖如春肛宋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背束世。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工酝陈, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人毁涉。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓沉帮,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親贫堰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子穆壕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Flume的簡(jiǎn)單介紹Flume是一個(gè)分布式、可靠其屏、和高可用的海量日志采集喇勋、聚合和傳輸?shù)南到y(tǒng)。Flume可以采集文件...
    __元昊__閱讀 497評(píng)論 0 0
  • Flume的簡(jiǎn)單介紹Flume是一個(gè)分布式偎行、可靠川背、和高可用的海量日志采集、聚合和傳輸?shù)南到y(tǒng)蛤袒。Flume可以采集文件...
    數(shù)據(jù)萌新閱讀 647評(píng)論 0 1
  • Flume的簡(jiǎn)單介紹Flume是一個(gè)分布式熄云、可靠、和高可用的海量日志采集妙真、聚合和傳輸?shù)南到y(tǒng)缴允。Flume可以采集文件...
    piziyang12138閱讀 504評(píng)論 0 0
  • 博客原文 翻譯作品,水平有限隐孽,如有錯(cuò)誤癌椿,煩請(qǐng)留言指正健蕊。原文請(qǐng)見(jiàn) 官網(wǎng)英文文檔 引言 概述 Apache Flume...
    rabbitGYK閱讀 11,469評(píng)論 13 34
  • 一株麥子菱阵,在田野里郁郁蔥蔥,春風(fēng)輕撫著它缩功,春光親吻著它晴及,雨露滋潤(rùn)著它蹭蹭蹭的長(zhǎng)高。拔節(jié)聲都能聽(tīng)到嫡锌,眼看揚(yáng)花期到了虑稼,...
    高安讓閱讀 178評(píng)論 0 7