一、簡介
flume 是
cloudera
提供的乙個高可用的,高可靠的,分布式的海量日誌採集、聚合
和傳輸的系統,flume 支援在日誌系統中定製各類資料傳送方,用於收集資料;同時,
flume 提供對資料進行簡單處理,並寫到各種資料接受方(可定製)的能力。
二、flume體系結構
在flume官網
首頁就有體系結構圖:
flume核心:
agent = source+channel+sink
:source元件:用於採集各種不同源的日誌
channel元件:資料緩衝區、通道
sink元件:用於將日誌寫到不同的目的地。
如果要使用flume,最重要的就是在配置檔案中配置
agent
三、source元件
在官網找到幫助文件,左側的documentaion,如下:
在flume source章節,可以看到有很多
source
,如最常用的幾個:監控目錄,
,自定義等
四、channel元件
資料緩衝區,通道。
最常用的是放到記憶體中:memory channel
五、sink元件
六、使用
解壓flume包,如:
/opt/flume/apache-flume-1.7.0-bin
例子:監控乙個目錄中的日誌檔案,通過記憶體進行緩衝,最後寫到hdfs中
1. 建立agent的配置檔案,如:
/opt/myagent/a4.conf
內容如下:
#定義
agent
名, source
、channel
、sink
的名稱a4.sources = r1
a4.channels = c1
a4.sinks = k1
#具體定義
source
(監控目錄)
a4.sources.r1.type = spooldir
a4.sources.r1.spooldir = /root/training/logs
#具體定義
channel
(記憶體緩衝)
a4.channels.c1.type = memory
a4.channels.c1.capacity = 10000
a4.channels.c1.transactioncapacity = 100
#定義***,為訊息新增時間戳
a4.sources.r1.interceptors = i1
a4.sources.r1.interceptors.i1.type =
org.apache.flume.interceptor.timestampinterceptor$builder
#具體定義
sink
(寫到hdfs中)
a4.sinks.k1.type = hdfs
a4.sinks.k1.hdfs.path = hdfs:
a4.sinks.k1.hdfs.fileprefix = events-
a4.sinks.k1.hdfs.filetype = datastream
#不按照條數生成檔案
a4.sinks.k1.hdfs.rollcount = 0
#hdfs 上的檔案達到
128m
時生成乙個檔案
a4.sinks.k1.hdfs.rollsize = 134217728
#hdfs 上的檔案達到
60 秒生成乙個檔案
a4.sinks.k1.hdfs.rollinterval = 60
#組裝
source
、channel
、sink
a4.sources.r1.channels = c1
a4.sinks.k1.channel = c1
2. 執行命令
cd /opt/flume/apache-flume-1.7.0-bin
bin/flume-ng agent -n a4 -f /opt/myagent/a4.conf -c conf -dflume.root.logger=info,console
執行flume-ng命令,後面指定
agent
,-n指定
agent
的名字,必須和配置檔案中那個
a4同名;
-f指定配置檔案
-c 使用配置,即安裝目錄下的
conf
路徑-d引數,指定當前日誌級別,輸出到工作台
執行上面的命令,啟動flume。
然後給監控的目錄/root/training/logs中新增檔案,模擬生成日誌。
這時在hdfs中/flume下會按日期產生乙個新目錄,目錄下有乙個tmp檔案,因為上面配置了
128m
或者60
秒才會寫真正的檔案,因此暫時為
tmp檔案,觸發後不再是
tmp。
其他用例:
如netcat監控
8080
埠的請求資料
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 8080
監控一直在追加的日誌資料,通過exec命令的方式:
a2.sources.r1.type = exec
a2.sources.r1.command = tail -f /home/hadoop/a.log
#只輸出到控制台
a2.sinks.k1.type = logger
其他內容可以參考官網上的例子
Flume簡介 原始碼編譯
flume og flume original generation,即flume 0.9.x版本 flume ng flume next generation 即flume 1.x版本 現在一般叫flume ng,也是使用最為廣泛的 agent用於採集資料,agent是flume中產生資料流的地方...
flume詳解及安裝
flume特點 flume是乙個分布式 可靠 和高可用的海量日誌採集 聚合和傳輸的系統。支援在日誌系統中定製各類資料傳送方,用於收集資料 同時,flume提供對資料進行簡單處理,並寫到各種資料接受方 比如文字 hdfs hbase等 的能力 flume的資料流由事件 event 貫穿始終。事件是fl...
Flume 基本使用
配置agent init a1.sources s1 a1.channels c1 a1.sinks k1 sources 1 動態監控單個日誌檔案 a1.sources.s1.type exec a1.sources.s1.command tail f opt cdh5.7.6 hive 1.1....