Flume多source,多sink组合框架搭建
Flume多source,多sink組合框架搭建
文章目錄
- Flume多source,多sink組合框架搭建
- 一、實(shí)驗(yàn)?zāi)康?/li>
- 二、實(shí)驗(yàn)原理
- 三、實(shí)驗(yàn)環(huán)境
- 四、實(shí)驗(yàn)內(nèi)容
- 五、實(shí)驗(yàn)步驟
- 總結(jié)
一、實(shí)驗(yàn)?zāi)康?/h1>
1.了解Flume數(shù)據(jù)傳輸原理
2.了解Flume的配置文件
3.了解Flume采集與投遞數(shù)據(jù)的框架搭建
二、實(shí)驗(yàn)原理
Flume運(yùn)行的核心是Agent。它是一個(gè)完整的數(shù)據(jù)收集工具,含有三個(gè)核心組件,分別是Source、Channel、Sink。通過這些組件,Event可以從一個(gè)地方流向另一個(gè)地方。
Source可以接收外部源發(fā)送過來的數(shù)據(jù)。不同的Source可以接受不同的數(shù)據(jù)格式。
Channel是一個(gè)存儲(chǔ)地,接收Source的輸出,直到有Sink消費(fèi)掉Channel中的數(shù)據(jù)。
Sink消費(fèi)Channel中的數(shù)據(jù),將數(shù)據(jù)推送給外部源或者其他Source。當(dāng)Sink寫入失敗后,可以自動(dòng)重啟,不會(huì)造成數(shù)據(jù)丟失,因此很可靠。
在實(shí)際生產(chǎn)環(huán)境中,Flume允許多個(gè)Agent連在一起,形成前后相連的多級(jí)跳。Flume有多種組合方式。比如多個(gè)Source收集不同格式的數(shù)據(jù)輸出到同一個(gè)Sink中,或者一個(gè)Source收集的數(shù)據(jù)輸出到多個(gè)Sink中去。
現(xiàn)在有三臺(tái)機(jī)器,分別是:Hadoop1,Hadoop2,Hadoop3,以Hadoop1為日志匯總
Hadoop1匯總的同時(shí)往多個(gè)目標(biāo)進(jìn)行輸出。
三、實(shí)驗(yàn)環(huán)境
Linux Ubuntu 16.04
jdk-7u75-linux-x64
hadoop-2.6.0-cdh5.4.5
flume-ng-1.5.0-cdh5.4.5
四、實(shí)驗(yàn)內(nèi)容
1.使用nc命令產(chǎn)生Syslog日志,發(fā)送到6868端口。
2.創(chuàng)建兩個(gè)Channel,Channel1和Channel2,用于暫存Syslog日志。
3.創(chuàng)建兩個(gè)Sink,Sink1_To_HDFS是將數(shù)據(jù)傳入到HDFS文件系統(tǒng)/myflume/syslog_mem_hdfsandlogger中,Sink2_To_Logger是將數(shù)據(jù)以logger的形式,發(fā)送到console界面上。
五、實(shí)驗(yàn)步驟
1.首先檢查Hadoop相關(guān)進(jìn)程,是否已經(jīng)啟動(dòng)。若未啟動(dòng),切換到/apps/hadoop/sbin目錄下,啟動(dòng)Hadoop。
cd /apps/hadoop/sbin ./start-all.sh2.切換目錄到/apps/flume/conf目錄下,創(chuàng)建Flume的配置文件。
cd /apps/flume/conf touch syslog_mem_hdfsandlogger.conf3.使用vim打開syslog_mem_hdfsandlogger.conf文件。
vim syslog_mem_hdfsandlogger.conf定義各個(gè)組件
#定義各個(gè)組件 agent1.sources = src agent1.channels = ch1 ch2 agent1.sinks = des1 des2配置Flume的Source為syslogtcp,并監(jiān)聽6868端口。
#配置source agent1.sources.src.type = syslogtcp agent1.sources.src.bind = localhost agent1.sources.src.port = 6868配置兩個(gè)Channel,都設(shè)置為memory。
#配置channel agent1.channels.ch1.type = memory agent1.channels.ch2.type = memory配置hdfs sink,將數(shù)據(jù)發(fā)送到HDFS上。
#配置hdfs sink agent1.sinks.des1.type = hdfs agent1.sinks.des1.hdfs.path = hdfs://localhost:9000/myflume4/syslog_mem_hdfsandlogger/ agent1.sinks.des1.hdfs.useLocalTimeStamp = true #設(shè)置flume臨時(shí)文件的前綴為 . 或 _ 在hive加載時(shí),會(huì)忽略此文件。 agent1.sinks.des1.hdfs.inUsePrefix=_ #設(shè)置flume寫入文件的前綴是什么 agent1.sinks.des1.hdfs.filePrefix = q7 agent1.sinks.des1.hdfs.fileType = DataStream agent1.sinks.des1.hdfs.writeFormat = Text #hdfs創(chuàng)建多久會(huì)新建一個(gè)文件,0為不基于時(shí)間判斷,單位為秒 agent1.sinks.des1.hdfs.rollInterval = 20 #hdfs寫入的文件達(dá)到多大時(shí),創(chuàng)建新文件 0為不基于空間大小,單位B agent1.sinks.des1.hdfs.rollSize = 10 #hdfs有多少條消息記錄時(shí),創(chuàng)建文件,0為不基于條數(shù)判斷 agent1.sinks.des1.hdfs.rollCount = 5 #hdfs空閑多久就新建一個(gè)文件,單位秒 agent1.sinks.des1.hdfs.idleTimeout = 20配置logger sink。
#配置logger sink agent1.sinks.des2.type = logger把上面設(shè)置的組件關(guān)聯(lián)起來。
##下面是把上面設(shè)置的組件關(guān)聯(lián)起來(把點(diǎn)用線連起來) agent1.sources.src.channels = ch1 ch2 agent1.sinks.des1.channel = ch1 agent1.sinks.des2.channel = ch24.啟動(dòng)Flume,執(zhí)行收集工作。
切換目錄到/apps/flume目錄下,啟動(dòng)flume-ng的配置。
cd /apps/flume flume-ng agent -c /conf -f /apps/flume/conf/syslog_mem_hdfsandlogger.conf -n agent1 -Dflume.root.logger=DEBUG,console新打開一個(gè)窗口,執(zhí)行nc命令,向6868端口發(fā)送消息。
echo "hello can you hear me?" | nc localhost 68685.查看執(zhí)行效果
可以看到,執(zhí)行flume-ng配置的界面輸出效果為:
從上面可以看到sink.LoggerSink,也就是發(fā)送給logger的輸出。
再來查看HDFS上的輸出。
hadoop fs -ls -R / hadoop fs -cat /myflume4/syslog_mem_hdfsandlogger/*總結(jié)
以上就是今天要講的內(nèi)容,本文簡單介紹了Flume運(yùn)行的核心是Agent。它是一個(gè)完整的數(shù)據(jù)收集工具,含有三個(gè)核心組件,分別是Source、Channel、Sink。通過這些組件,Event可以從一個(gè)地方流向另一個(gè)地方。
總結(jié)
以上是生活随笔為你收集整理的Flume多source,多sink组合框架搭建的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 厦门特色中秋——博饼
- 下一篇: [创业-22]:财务报表 - 所有者权益