Flume入門(mén)
????Flume的文檔介紹很多了,不過(guò)還是想寫(xiě)一寫(xiě),發(fā)散一下思維浓冒,比你平時(shí)看到的多一些啟發(fā)粤攒,工作中就多一個(gè)解決方案所森。
Flume官網(wǎng),[http://flume.apache.org/](http://flume.apache.org/)夯接;
Flume 下載地址:[http://flume.apache.org/download.html](http://flume.apache.org/download.html)焕济;
Linux 解壓 tar -zxvf apache-flume-1.6.0-bin.tar.gz
Flume介紹
體系結(jié)構(gòu)
????Flume agent 是一個(gè)(JVM)進(jìn)程,它承載組件的運(yùn)行盔几,是Flume運(yùn)行的核心晴弃。它含有三個(gè)核心組件,source、channel逊拍、sink,通過(guò)這些組件上鞠,event從一端流向另一端(Event 是格式化后的字節(jié)和字符串類(lèi)型的數(shù)據(jù)流單元),source 和 sink 與通道中暫存的event 在給定的agent 中異步運(yùn)行芯丧。
Source
????Source是數(shù)據(jù)的收集端芍阎,負(fù)責(zé)將數(shù)據(jù)捕獲后進(jìn)行格式化到event里,然后將event保存到Channel中缨恒;Flume 提供了各種source的實(shí)現(xiàn)谴咸,包括Avro source、Thrift source骗露、Kafka source等寿冕,如果原生提供的source無(wú)法滿足需求,可自定義開(kāi)發(fā)source椒袍。Flume 提供的source 如下:
Channel
????Channel 依靠本地文件系統(tǒng)被動(dòng)保存 source 接受到的event驼唱,直到被sink 消費(fèi)【允睿可以將Channle看作是緩沖隊(duì)列玫恳,F(xiàn)lume提供多種類(lèi)型的持久化,如下:
Sink
????Sink從channel 移除event并將它放入類(lèi)似于HDFS外部倉(cāng)庫(kù)或者將其直接發(fā)送給下一個(gè) Flume agent的source优俘;Flume提供sink的實(shí)現(xiàn)京办,如下:
組合使用
????Flume的強(qiáng)大之處在于提供了多種source和sink,這些source和sink 可以自由組合成強(qiáng)大的數(shù)據(jù)采集鏈路,只有你想不到帆焕,沒(méi)有它做不到惭婿,如果原生提供的source和sink無(wú)法滿足需求不恭,還可自定義開(kāi)發(fā)。如下圖:
部署啟動(dòng)
1.將下載的安裝包上傳到服務(wù)器解壓财饥,如下
tar -zxvf apache-flume-1.6.0-bin.tar.gz
2.在Flume安裝文件下的./conf 下新增Flume配置flume-config.properties换吧,如下是監(jiān)聽(tīng)端口號(hào)為44444數(shù)據(jù)并保存到日志中的配置:
flume-log-agent.sources = arvo-source
flume-log-agent.sinks = logger-sink
flume-log-agent.channels = memory-channel
# Describe/configure the source
flume-log-agent.sources.arvo-source.type = avro
flume-log-agent.sources.arvo-source.bind = 192.168.200.130
flume-log-agent.sources.arvo-source.port = 44444
# Describe the sink
flume-log-agent.sinks.logger-sink.type = logger
# Use a channel which buffers events in memory
flume-log-agent.channels.memory-channel.type = memory
# Bind the source and sink to the channel
flume-log-agent.sources.arvo-source.channels = memory-channel
flume-log-agent.sinks.logger-sink.channel = memory-channel
3.執(zhí)行命令提供兩種方式,將執(zhí)行結(jié)果輸入到控制臺(tái)和保存到日志文件钥星,如下:
./bin/flume-ng agent -c conf -f ./conf/flume-config.properties --name flume-log-agent -Dflume.root.logger=INFO,console
./bin/flume-ng agent -c conf -f ./conf/flume-config.properties --name flume-log-agent -Dflume.root.logger=INFO,LOGFILE