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

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

简介

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

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

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

安装

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

资源列表

本文资源列表如下:

主机名 ip地址
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为从节点。

版权声明:本文为molyeo原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/molyeo/p/9361523.html