1 下載安裝包並解壓
下載地址:http://flume.apache.org/download.html
解壓:tar zxvf apache-flume-1.8.0-bin.tar.gz
2 配置環境變量
vi ~/.bashrc
配置環境變量:
export FLUME_HOME=/hmaster/flume/apache-flume-1.8.0-bin
export FLUME_CONF_DIR=$FLUME_HOME/con
export PATH=$PATH:$FLUME_HOME/bin
讓配置生效
source ..bashrc
配置flume-env.sh文件的JavaHome
export JAVA_HOME=/hmaster/javaenv/jdk1.8.0_181
3 Flume部署示例
1 Avro
在/hmaster/flume/apache-flume-1.8.0-bin/conf目錄下新建netcat.conf配置文件
Flume可以通過Avro監聽某個端口並捕獲傳輸的數據,具體配置示例如下:
#那么我們也給這個三個組件分別取名字
a2.sources = r1
a2.channels = c1
a2.sinks = k1
#定義具體的source內容
#這里是執行命令以及下面對應的具體命令
#這個命令執行后的數據返回給這個source
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444
#定義具體的channel信息
#我們source定義好了,就要來定義我們的channel
a2.channels.c1.type = memory
a2.channels.c1.capacity = 10000
a2.channels.c1.transactionCapacity = 100
#定義具體的sink信息
#這個logger sink,就是將信息直接打印到控制台
#就是打印日志
a2.sinks.k1.type = logger
#最后來組裝我們之前定義的channel和sink
a2.sources.r1.channels = c1
a2.sinks.k1.channel = c1
運行FlumeAgent,監聽本機的44444端口
-n 后面對應agent名稱
-c 配置文件目錄
-f 配置文件地址
flume-ng agent -n a1 -c conf -f ../conf/netcat.conf
// 打開另一終端,通過telnet登錄localhost的44444,輸入測試數據
$ telnet localhost 44444
// 查看flume收集數據情況
2 Spool
1 配置spool.conf用於監控目錄userlogs 的文件,將文件內容發送到本地60000端口
Spool用於監測配置的目錄下新增的文件,並將文件中的數據讀取出來。需要注意兩點:拷貝到spool目錄下的文件不可以再打開編輯、spool目錄下不可包含相應的子目錄。具體配置文件示例如下
#定義agent名稱,source,channel,sink的名稱
#a1就是我們給agent起的名字,我們知道有多個agent,那么我們就是通過這個來進行區別
#我們知道agent包含了三個重要的組件,有source,channel,sink
#那么我們也給這個三個組件分別取名字
a2.sources = r1
a2.channels = c1
a2.sinks = k1
#定義具體的source內容
#這里是執行命令以及下面對應的具體命令
#這個命令執行后的數據返回給這個source
a2.sources.r1.type = spooldir
a2.sources.r1.spoolDir = /home/hadoop/hadoop-2.9.0/userlogs
#定義具體的channel信息
#我們source定義好了,就要來定義我們的channel
a2.channels.c1.type = memory
a2.channels.c1.capacity = 10000
a2.channels.c1.transactionCapacity = 100
#定義具體的sink信息
#就是將數據轉換成Avro Event 然后發送到配置的rpc端口上
a2.sinks.k1.type = avro
a2.sinks.k1.hostname= localhost
a2.sinks.k1.port= 60000
#最后來組裝我們之前定義的channel和sink
a2.sources.r1.channels = c1
a2.sinks.k1.channel = c1
2 配置spool2.conf用於從本地60000端口獲取數據並寫入HDFS
#定義agent名稱,source,channel,sink的名稱
a3.sources = r1
a3.channels = c1
a3.sinks = k1
#定義具體的source內容
a3.sources.r1.type= avro
a3.sources.r1.bind= localhost
a3.sources.r1.port= 60000
#定義具體的channel信息
#我們source定義好了,就要來定義我們的channel
a3.channels.c1.type = memory
a3.channels.c1.capacity = 10000
a3.channels.c1.transactionCapacity = 100
#定義具體的sink信息
a3.sinks.k1.type = hdfs
a3.sinks.k1.hdfs.path = hdfs://192.168.79.2:9000/flume/event2
a3.sinks.k1.hdfs.filePrefix = events-
a3.sinks.k1.hdfs.fileType = DataStream
#最后來組裝我們之前定義的channel和sink
a3.sources.r1.channels = c1
a3.sinks.k1.channel = c1