flume集群搭建

flume其实没有集群概念,每个flume都是一个独立的个体,每个flume agent收集数据汇总到flume collector,由collector写入flume storage。

我现在有两台虚拟机,一台是叫master,当flume agent;一台叫slave1,当flume collector,实现agent连接collector向collector发送日志,最终collector将日志写入到hdfs。

两台虚拟机事先配置好了jdk和hadoop。

 

1、解压安装

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

2、配置各机器环境变量 /etc/profile

flume集群搭建_第1张图片

 

3、配置flume JAVA_HOME

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

4、复制flume到其他节点(只是各自的启动文件不同)

 

cd /usr/local

       scp -r apache-flume-1.6.0-bin slave1:~然后再移动到响应目录下

5、配置agent启动文件

在master节点上,在flume的conf目录,将flume-conf.properties.template重命名为flume-test.conf(其实什么名字都可以,只要你启动的时候调用对就可以了),然后配置source,channel,sink。

我这里agent source是spooldir ,channel是memory,sink是avro,三层类别详细说明见flume官网

flume集群搭建_第2张图片

在slave1节点,collector三层,source是avro,channel是memory,sink是hdfs

flume集群搭建_第3张图片

6、启动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,请注意。

 

 

 

 

 

你可能感兴趣的:(flume集群搭建)