系統環境
Linux Ubuntu 14.04
jdk-7u75-linux-x64
hadoop-2.6.0-cdh5.4.5
flume-ng-1.5.0-cdh5.4.5
實驗内容
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHLzEFVNVTQE9UMNpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL4gTMyMDM0cDM4AjNwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
說明:
1、建立Agent 具體如下:
(1)采用syslogtcp類型的source,使用nc指令産生Syslog日志,發送到6868端口。
(2)建立二個Channel,Channel1、Channel,用于暫存Syslog日志。
(3)建立二個Sink,Sink1是将資料傳入到HDFS檔案系統中,Sink2是将資料以logger的形式,發送到console界面上。
實驗步驟
1.首先檢查Hadoop相關程序,建立Flume配置檔案,名為:syslogtcp_mem_threesink.conf 和avro_mem_logger.conf,使用vim編輯這些conf檔案,
cd /apps/flume/conf
cp ./flume-conf.properties.template ./syslogtcp_mem_twosink.conf
2.配置agent1:
vim syslogtcp_mem_twosink.conf
在該檔案中寫入如下配置:
##定義各個元件
agent1.sources = src
agent1.channels = ch1 ch2
agent1.sinks = des1 des2
##配置source
agent1.sources.src.type = syslogtcp
agent1.sources.src.bind = localhost
agent1.sources.src.port = 6868
##配置channel
agent1.channels.ch1.type = memory
agent1.channels.ch2.type = memory
##配置sink
#配置hdfs sink
agent1.sinks.des1.type = hdfs
agent1.sinks.des1.hdfs.path = hdfs://localhost:9000/myflume/syslogtcp_mem_twosink/
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
agent1.sinks.des2.type = logger
##下面是把上面設定的元件關聯起來(把點用線連起來)
agent1.sources.src.channels = ch1 ch2
agent1.sinks.des1.channel = ch1
agent1.sinks.des2.channel = ch2
3.啟動Flume,執行收集工作。
cd /apps/flume
flume-ng agent -c /conf -f /apps/flume/conf/syslogtcp_mem_twosink.conf -n agent1 -D flume.root.logger=DEBUG,console
5.新打開一個視窗,執行nc指令,向6868端口發送消息。
echo "can you help me?" | nc localhost 6868
flume-ng界面輸出:
檢視HDFS上的輸出: