大数据平台搭建-zookeeper集群的搭建
本系列文章主要阐述大数据计算平台相关框架的搭建,包括如下内容:
- 虚拟服务器安装
- 基础环境安装
- zookeeper集群的搭建
- kafka集群的搭建
- hadoop/hbase集群的搭建
- spark集群的搭建
- flink集群的搭建
- elasticsearch集群的搭建
- alluxio集群的搭建
本文主要讲述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和bigdata3scp -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为从节点。