flume 簡介及使用

2021-08-19 21:19:00 字數 3398 閱讀 4594

一、簡介

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....