flume集羣搭建

flume其實沒有集羣概念,每一個flume都是一個獨立的個體,每一個flume agent收集數據彙總到flume collector,由collector寫入flume storage。html

我如今有兩臺虛擬機,一臺是叫master,當flume agent;一臺叫slave1,當flume collector,實現agent鏈接collector向collector發送日誌,最終collector將日誌寫入到hdfs。web

兩臺虛擬機事先配置好了jdk和hadoop。apache

 

一、解壓安裝ide

   tar -zxvf apache-flume-1.6.0-bin.tar.gzoop

二、配置各機器環境變量 /etc/profileui

 

三、配置flume JAVA_HOMEspa

cd /usr/local/apache-flume-1.6.0-bin/conf,把flume-env.sh.template重命名爲flume-env.sh,往裏添加 export JAVA_HOME=/usr/lib/jdk1.7.0_75日誌

四、複製flume到其餘節點(只是各自的啓動文件不一樣)orm

 

cd /usr/localhtm

       scp -r apache-flume-1.6.0-bin slave1:~而後再移動到響應目錄下

五、配置agent啓動文件

在master節點上,在flume的conf目錄,將flume-conf.properties.template重命名爲flume-test.conf(其實什麼名字均可以,只要你啓動的時候調用對就能夠了),而後配置source,channel,sink。

我這裏agent source是spooldir ,channel是memory,sink是avro,三層類別詳細說明見flume官網

在slave1節點,collector三層,source是avro,channel是memory,sink是hdfs

六、啓動flume

先啓動slave1節點,再啓動master節點

flume-ng agent -n agent -c /usr/local/apache-flume-1.6.0-bin/conf  -f /usr/local/apache-flume-1.6.0-bin/conf/flume-test.conf -Dflume.root.logger=DEBUG,console

flume-ng agent -n agent -c /usr/local/apache-flume-1.6.0-bin/conf  -f /usr/local/apache-flume-1.6.0-bin/conf/flume-test.conf -Dflume.root.logger=DEBUG,console

啓動命令同樣,-n是名字,-c是配置文件的目錄,-f是配置文件,-D是日誌級別。

而後在master的/home/zhanghuan/Documents/flume-test目錄下添加文件,最後在hdfs裏查看該文件,若是存在該文件,則表示flume搭建成功,不然失敗。

注意,搭建過程當中可能出現以下錯誤:

Could not configure sink  sink1 due to: No channel configured for sink: sink1
org.apache.flume.conf.ConfigurationException: No channel configured for sink: sink1

則仔細查看配置文件,一個source能夠對應多個channel,因此是channels,agent.sources.source1.channels = channel1,

可是一個sink對應一個channel,因此是channel,agent.sinks.sink1.channel = channel1,請注意。

相關文章
相關標籤/搜索