轉載請註明出處:http://www.cnblogs.com/xiaodf/html
Flume做爲日誌收集工具,監控一個文件目錄或者一個文件,當有新數據加入時,採集新數據發送給消息隊列等。java
若要採集數據節點的本地數據,每一個節點都須要安裝一個Flume工具,用來作數據採集。linux
到官網去下載最新版本的Flumeapache
下載地址爲:http://flume.apache.org/,目前最新版本爲1.6.0,須要1.7及以上版本的JDK。bash
一、解壓oracle
tar -xzvf apache-flume-1.6.0-bin.tar.gz -C /usr/local/工具
二、安裝JDK1.7測試
若是節點上JDK版本低於1.7,須要安裝1.7或以上版本的JDKdebug
JDK 1.7 下載地址:日誌
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
在Flume目錄下建立一個java目錄,存放JDK
cd /usr/local/apache-flume-1.6.0-bin mkdir java cd java tar -xzvf jdk-7u79-linux-x64.tar.gz
修改 flume-env.sh 配置文件,主要是JAVA_HOME變量設置
cd /usr/local/apache-flume-1.6.0-bin/conf cp flume-env.sh.template flume-env.sh
在flume-env.sh裏面設置FLUME_CLASSPATH變量和JAVA_HOME變量,
示例:
export JAVA_HOME=/usr/local/apache-flume-1.6.0-bin/java/jdk1.7.0_79 FLUME_CLASSPATH="/usr/local/apache-flume-1.6.0-bin/"
變量具體內容根據實際修改
此處自定義了一個flume攔截器,沒有的話,可忽略此步。
添加第三方依賴包flume-plugins-1.0-SNAPSHOT.jar,此包實現了一個Flume攔截器,將Flume採集到的數據進行序列化、結構化等預處理,最後每條數據生成一條Event數據返回。
cd /usr/local/apache-flume-1.6.0-bin mkdirplugins.d --建立依賴目錄,目錄名必須爲plugins.d cdplugins.d mkdirflume-plugins --項目目錄,目錄名隨意 cdflume-plugins mkdirlib --jar包目錄,目錄名必須爲lib
將第三方jar包flume-plugins-1.0-SNAPSHOT.jar放在lib目錄下
建立flume啓動配置文件,指定source,channel,sink 3個組件內容。每一個組件都有好幾種配置選項,具體配置請查看Flume官網。
建立配置文件flume.conf,示例以下:
a1.sources = x1 a1.sinks = y1 a1.channels = z1 # Describe/configure thesource a1.sources.x1.type =exec a1.sources.x1.channels =z1 a1.sources.x1.command =tail -F /home/xdf/exec.txt # Describe the sink a1.sinks.y1.type =logger # Use a channel whichbuffers events in memory a1.channels.z1.type =memory a1.channels.z1.capacity= 1000 a1.channels.z1.transactionCapacity= 100 # Bind the source andsink to the channel a1.sources.x1.channels =z1 a1.sinks.y1.channel = z1
進入Flume安裝目錄,開啓agent。
cd /usr/local/apache-flume-1.6.0-bin ./bin/flume-ng agent--conf conf --conf-file flume.conf --name a3 -Dflume.root.logger=INFO,console
注意:-Dflume.root.logger=INFO,console僅爲 debug 使用,請勿生產環境生搬硬套,不然大量的日誌會返回到終端。-c/--conf 後跟配置目錄,-f/--conf-file 後跟具體的配置文件,-n/--name 指定agent的名稱。
上面配置的example.conf文件,實現的功能是監控文件/home/xdf/exec.txt,
若是有新數據寫入時,Flume就會採集到新數據並打印在控制檯上。
測試用例:向/home/xdf/exec.txt文件中寫入內容「hello flume」。
echo 'hello flume'>> /home/xdf/exec.txt
Flume 終端窗口此時會打印出以下信息,就表示成功了:
2015-06-3016:01:52,910 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO -org.apache.flume.sink.LoggerSink.process(LoggerSink.java:94)] Event: {headers:{} body: 68 65 6C 6C 6F 20 66 6C 75 6D 65 hello flume }
至此,Flume安裝部署完畢。