搭建 ZooKeeper 3.4.12 环境
我使用了4台虚拟机来搭建相对应的节点,具体情况如下:
master | slave1 | slave2 | slave3 | |
---|---|---|---|---|
NameNode | √ | |||
SecondaryNameNode | √ | |||
DataNode | √ | √ | √ | |
ResourceManage | √ | |||
NodeManage | √ | √ | √ | |
Flume | √ | √ | √ | √ |
ZooKeeper | √ | √ | √ |
软件版本:
- Hadoop 2.7.2
- Flume 1.7.0
- ZooKeeper 3.4.12
另注:我的所有软件都安装在 /usr/wang/ 目录下。
安装
1.解压
tar -zxvf zookeeper-3.4.12.tar.gz
2.重命名并建立软链
ln -s zookeeper-3.4.12 zookeeper
3.配置环境变量
sudo vim /etc/profile
# ZOOKEEPER ENVIROMENT
export ZOOKEEPER_HOME=/usr/wang/zookeeper
export PATH=$ZOOKEEPER_HOME/bin:$PATH
source /etc/profile
ZooKeeper 配置
1.拷贝 /usr/wang/zookeeper/conf 这个目录下的 zoo_sample.cfg 为 zoo.cfg
cd /usr/wang/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
2.在 /usr/wang/zookeeper 下创建 zkData 文件夹存放 ZooKeeper 数据
cd /usr/wang/zookeeper
mkdir zkData
3.配置 zoo.cfg 文件
- 修改 dataDir 路径为 /usr/wang/zookeeper/zkData
dataDir=/usr/wang/zookeeper/zkData
- 添加集群信息
#######################cluster##########################
server.1=slave1:2888:3888
server.2=slave2:2888:3888
server.3=slave3:2888:3888
设置 ZooKeeper 日志输出到指定文件夹
我是将 ZooKeeper 的日志集中输出到 /usr/wang/zookeeper/logs 文件夹下
1.修改 bin/zkEnv.sh
if [ "x${ZOO_LOG_DIR}" = "x" ]
then
ZOO_LOG_DIR="/usr/wang/zookeeper/logs"
fi
2.修改 bin/zkServer.sh
_ZOO_DAEMON_OUT="$ZOO_LOG_DIR/zookeeper.log"
3.设置日志按照天进行滚动
-
bin/zkEnv.sh
ZOO_LOG4J_PROP="INFO,ROLLINGFILE"
-
conf/log4j.properties
# Define some default values that can be overridden by system properties zookeeper.root.logger=INFO, ROLLINGFILE # Add ROLLINGFILE to rootLogger to get log file output # Log DEBUG level and above messages to a log file log4j.appender.ROLLINGFILE=org.apache.log4j.DailyRollingFileAppender log4j.appender.ROLLINGFILE.Threshold=debug log4j.appender.ROLLINGFILE.File=zookeeper.log log4j.appender.ROLLINGFILE.DataPattern='.'yyyy-MM-dd-HH-mm log4j.appender.ROLLINGFILE.encoding=UTF-8 log4j.appender.ROLLINGFILE.Append=false log4j.appender.ROLLINGFILE.layout=org.apache.log4j.PatternLayout log4j.appender.ROLLINGFILE.layout.ConversionPattern= [%d{yyyy-MM-dd HH\:mm\:ss}] %-5p %c(line\:%L) %x-%m%n
集群操作
1.在 /usr/wang/zookeeper/zkData 目录下创建一个 myid 的文件
cd /usr/wang/zookeeper/zkData
touch myid
2.分发 zookeeper 到其他节点
cd /usr/wang
rsync -rvl zookeeper spark@slave2:/usr/wang/
rsync -rvl zookeeper spark@slave3:/usr/wang/
3.编辑 myid 文件
-
slave1 节点上
echo "1" >> myid
-
slave2 节点上
echo "2" >> myid
-
slave3 节点上
echo "3" >> myid
简单命令
1.启动命令
bin/zkServer.sh start
2.查看节点状态
bin/zkServer.sh status
3.停止
bin/zkServer.sh stop