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