默认情况下Flume在内存中保存各个节点的配置,重启后丢失,可以使用ZooKeeper保存各个节点配置信息。

cloudera的rpm仓库安装在前面的文章中,ZooKeeper使用三台服务器对应信息如下192.168.255.132 test01.linuxjcq.com
192.168.255.133 test02.linuxjcq.com
192.168.255.134 test03.linuxjcq.com

三台都执行相同的操作

1. 安装ZooKeeper

yum install hadoop-zookeeper hadoop-zookeeper-server

2. 安装配置文件

a. 复制配置文件

cp -r /etc/zookeeper.dist /etc/zookeeper.my_cluster

b. 查看原来的配置

alternatives --display hadoop-zookeeper-conf
hadoop-zookeeper-conf - status is auto.
 link currently points to /etc/zookeeper.dist
/etc/zookeeper.dist - priority 30

c. 安装新的zookeeper.my_cluster,并查看结果

alternatives --install /etc/zookeeper /etc/zookeeper.my_cluster 50

alternatives --display hadoop-zookeeper-conf

2. 修改配置文件

需要设置数据目录和各个机器间的相关信息

  1. vi /etc/zookeeper/zoo.cfg  
  2. dataDir=/data/zookeeper  
  3.  
  4. server.0=test01.linuxjcq.com:2887:3887  
  5. server.1=test02.linuxjcq.com:2888:3888  
  6. server.2=test03.linuxjcq.com:2889:3889 

server.id=host:port:port标识不同的ZooKeeper服务器

dataDir指定了数据存放的目录为/data/zookeeper,创建相应的目录,并修改拥有者为zookeeper(这个用户为yum安装zookeeper软件时创建的账户)

mkidr /data/zookeeper

chown -R zookeeper:zookeeper /data/zookeeper

需要在每个服务器的数据目录中(这边为/data/zookeeper)创建myid文件,文件的内容为server.id=host:port:port对应的server.id中的id,标识各个zookeeper服务器

  1. vi /data/zookeeper/myid  
  2. # 值为各个服务器对应的server.id中的id  
  3. id 

 3. 启动zookeeper

service hadoop-zookeeper-server start

执行jps可以看到启动的服务

jps
1684 QuorumPeerMain

4. 配置flume分布式日志系统中所有的master节点

  1. vi /etc/flume/conf/flume-site.xml  
  2.   <property> 
  3.     <name>flume.master.store</name> 
  4.     <value>zookeeper</value> 
  5.     <description>How the Flume Master stores node configurations. Must  
  6.     be either 'zookeeper' or 'memory'.</description> 
  7.   </property> 
  8.  
  9.   <property> 
  10.     <name>flume.master.zk.use.external</name> 
  11.     <value>true</value> 
  12.   </property> 
  13.  
  14.   <property> 
  15.     <name>flume.master.zk.servers</name> 
  16.     <value>test01.linuxjcq.com:2181,test02.linuxjcq.com:2181,test03.linuxjcq.com:2181</value> 
  17.   </property> 

flume.master.store:

master配置存储方式(zookeeper/memory) zookeeper保证master的配置在多master节点之间同步,memory则保存在内存中,其配置随着master重启或宕机而丢失;

flume.master.zk.servers:

使用的zookeeper服务器列表。

重启flume-master和flume-node

service flume-master restart

service flume-node restart