大数据平台搭建-zookeeper集群的搭建

本系列文章主要阐述大数据计算平台相关框架的搭建,包括如下内容:

本文主要讲述zookeeper的安装,日志配置基础优化。

简介

Zookeeper是一个分布式的、开源的分布式应用协调服务,它暴露了一组简单的基础原件,分布式应用可以在这些原件之上实现更高级别的服务,主要使用场景和功能如下:

  • Naming service
  • Configuration management
  • Synchronization
  • Leader election
  • Message Queue
  • Notification system

其集群管理和命名服务在kafka、hadoop、spark中均有相关应用。

安装

官网地址zookeeper,本文选择稳定版zookeeper-3.4.10.tar.gz

资源列表

本文资源列表如下:

<td>主机名</td>
<td>ip地址</td>
bigdata1 192.168.220.200
bigdata2 192.168.220.201
bigdata3 192.168.220.202

解压

切换至主目录

cd ~

解压

tar -zxvf zookeeper-3.4.10.tar.gz

重命名

mv zookeeper-3.4.10 zookeeper

配置

  • 生成zoo.cfg文件
    切换到conf目录,利用zoo_sample.cfg生成配置文件并更改配置。

      cd /home/oracle/zookeeper/conf
      cp /home/oracle/zookeeper/conf/zoo_sample.cfg /home/oracle/zookeeper/conf/zoo.cfg
    
  • 配置zoo.cfg文件
    编辑zoo.cfg文件

      vi /home/oracle/zookeeper/conf/zoo.cfg
    

修改后内容如下:

	tickTime=2000
	initLimit=10
	syncLimit=5
	dataDir=/home/oracle/zookeeper/data
	clientPort=2181
	maxClientCnxns=60
	#autopurge.snapRetainCount=3
	#autopurge.purgeInterval=1
	server.1=192.168.220.200:2888:3888
	server.2=192.168.220.201:2888:3888
	server.3=192.168.220.202:2888:3888

其中dataDir主要用于存储zookeeper的数据文件和快照信息。
server.x中的数字1,2,3),是zookeeper的主机标识,不同的主机均应保持唯一。

  • 配置myid文件
    zookeeper集群中机器均需要在对应的dataDir目录新建myid文件

      vi /home/oracle/zookeeper/data/myid
    

bigdata1的myid为1,bigdata2的myid为2,bigdata3的myid为3,如果还有其他主机,依次类推,具体的数字和zoo.cfg中的保持一致即可。

  • 配置zkEnv.sh文件
    默认情况下,zookeeper的日志信息输出到zookeeper.out文件中,本文目录/home/oracle/zookeeper/bin/zookeeper.out。但是随着程序的进行,其日志文件会相当大,为便于后续的维护,优化相关配置,将日志输出到指定目录。
    编辑zkEnv.sh文件

      vi /home/oracle/zookeeper/bin/zkEnv.sh
    

新增ZOO_LOG_DIR路径配置

	ZOO_LOG_DIR=/home/oracle/zookeeper/logs
  • 配置log4j.properties文件
    虽然日志目录已更改,但是日志还是一直输出到一个文件中,不便于后续日志的查找和维护。
    编辑log4j.properties文件

      vi /home/oracle/zookeeper/conf/log4j.properties
    

更改zookeeper.root.logger的配置为ROLLINGFILE

	zookeeper.root.logger=INFO,ROLLINGFILE

指定具体的日志目录

	zookeeper.log.dir=/home/oracle/zookeeper/logs

同时更改appender.ROLLINGFILE的属性

	log4j.appender.ROLLINGFILE.MaxFileSize=50MB
	log4j.appender.ROLLINGFILE.MaxBackupIndex=10

上述配置表每个日志文件最多50M,最多10个备份文件,这样日志目录最多就500M。
生产环境基本上会根据天或者小时去切分日志文件,不再赘述,具体的可以去看log4j官网。
完整的log4j.properties文件如下:

	# Define some default values that can be overridden by system properties
	#zookeeper.root.logger=INFO, CONSOLE
	zookeeper.root.logger=INFO,ROLLINGFILE
	zookeeper.console.threshold=INFO
	zookeeper.log.dir=/home/oracle/zookeeper/logs
	zookeeper.log.file=zookeeper.log
	zookeeper.log.threshold=DEBUG
	zookeeper.tracelog.dir=.
	zookeeper.tracelog.file=zookeeper_trace.log

	log4j.rootLogger=${zookeeper.root.logger}
	

	log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
	log4j.appender.CONSOLE.Threshold=${zookeeper.console.threshold}
	log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
	log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L] - %m%n
	

	log4j.appender.ROLLINGFILE=org.apache.log4j.RollingFileAppender
	log4j.appender.ROLLINGFILE.Threshold=${zookeeper.log.threshold}
	log4j.appender.ROLLINGFILE.File=${zookeeper.log.dir}/${zookeeper.log.file}
	
	# Max log file size of 10MB
	log4j.appender.ROLLINGFILE.MaxFileSize=50MB
	# uncomment the next line to limit number of backup files
	log4j.appender.ROLLINGFILE.MaxBackupIndex=10
	
	log4j.appender.ROLLINGFILE.layout=org.apache.log4j.PatternLayout
	log4j.appender.ROLLINGFILE.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L] - %m%n

	log4j.appender.TRACEFILE=org.apache.log4j.FileAppender
	log4j.appender.TRACEFILE.Threshold=TRACE
	log4j.appender.TRACEFILE.File=${zookeeper.tracelog.dir}/${zookeeper.tracelog.file}
	
	log4j.appender.TRACEFILE.layout=org.apache.log4j.PatternLayout
	log4j.appender.TRACEFILE.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L][%x] - %m%n
  • 同步
    bigdata1配置更改完成后,直接将整个zookeeper目录同步到bigdata2和bigdata3

      scp -r /home/oracle/zookeeper  oracle@bigdata2:/home/oracle/
      scp -r /home/oracle/zookeeper  oracle@bigdata3:/home/oracle/
    

同步完成后,记得更改bigdata2和bigdat3的myid文件中的数值。

启动和验证

  • 启动

      [oracle@bigdata1 conf]$ /home/oracle/zookeeper/bin/zkServer.sh start
      ZooKeeper JMX enabled by default
      Using config: /home/oracle/zookeeper/bin/../conf/zoo.cfg
      Starting zookeeper ... STARTED
    
  • 查看各节点的主从情况

      [oracle@bigdata1 conf]$ /home/oracle/zookeeper/bin/zkServer.sh status
      ZooKeeper JMX enabled by default
      Using config: /home/oracle/zookeeper/bin/../conf/zoo.cfg
      Mode: follower
      [oracle@bigdata1 conf]$ 
      
      
      [oracle@bigdata2 logs]$ /home/oracle/zookeeper/bin/zkServer.sh status
      ZooKeeper JMX enabled by default
      Using config: /home/oracle/zookeeper/bin/../conf/zoo.cfg
      Mode: follower
      [oracle@bigdata2 logs]$ 
      
      [oracle@bigdata3 logs]$ /home/oracle/zookeeper/bin/zkServer.sh status
      ZooKeeper JMX enabled by default
      Using config: /home/oracle/zookeeper/bin/../conf/zoo.cfg
      Mode: leader
      [oracle@bigdata3 logs]$ 
    

可以看到bigdata3为主节点,bigdata1和bigdata2为从节点。


关于作者
爱编程、爱钻研、爱分享、爱生活
关注分布式、高并发、数据挖掘
如需捐赠,请扫码

原文地址:https://www.cnblogs.com/aidodoo/p/9361523.html