前提:在一台机器上运行三个zk服务
- cd ~/bigdater/softs; wget http://archive.cloudera.com/cdh5/cdh/5/zookeeper-3.4.5-cdh5.3.6.tar.gz
- cd …; tar -zxvf softs/zookeeper-3.4.5-cdh5.3.6.tar.gz (1、2两步是导入解压的,3是改名,4是远程调控可以不管34)
- mv zookeeper-3.4.5-cdh5.3.6 zk-pseudo-distributed
- rm zookeeper; ln -s zk-pseudo-distributed zookeeper
- cd zookeeper/conf
- copy三方zk的配置文件:
cp zoo_sample.cfg zoo1.cfg
cp zoo_sample.cfg zoo2.cfg
cp zoo_sample.cfg zoo3.cfg - 配置zoo1.cfg的文件内容
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/hadoop/bigdater/zookeeper/zk/data1
dataLogDir=/home/hadoop/bigdater/zookeeper/zk/log1
clientPort=2181
server.1=hh:2287:3387
server.2=hh:2288:3388
server.3=hh:2289:3389 - 配置zoo2.cfg的文件内容
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/hadoop/bigdater/zookeeper/zk/data2
dataLogDir=/home/hadoop/bigdater/zookeeper/zk/log2
clientPort=2182
server.1=hh:2287:3387
server.2=hh:2288:3388
server.3=hh:2289:3389 - 配置zoo3.cfg的文件内容
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/hadoop/bigdater/zookeeper/zk/data3
dataLogDir=/home/hadoop/bigdater/zookeeper/zk/log3
clientPort=2183
server.1=hh:2287:3387
server.2=hh:2288:3388
server.3=hh:2289:3389 - 分别在dataDir指定的文件夹中创建文件myid,myid文件内容为对应server的id号,即server后面的数字(范围为[0,255],一个zk集群中不允许有重复的)。
必须手动创建对应的log文件夹 - 添加环境变量
vim ~/.bash_profile
export ZOOKEEPER_HOME=/opt/app/zookeeper-3.4.5-cdh5.3.6
export PATH= P A T H : PATH: PATH:ZOOKEEPER_HOME/bin
source ~/.bash_profile - 启动,分别使用不同的配置文件启动zk服务(在zk的home根目录)
zkServer.sh start conf/zoo1.cfg
zkServer.sh start conf/zoo2.cfg
zkServer.sh start conf/zoo3.cfg - 查看,分别使用不同的配置文件查看zk服务(在zk的home根目录)
zkServer.sh status conf/zoo1.cfg
zkServer.sh status conf/zoo2.cfg
zkServer.sh status conf/zoo3.cfg
安装过程中遇到的问题:
- 三个端口号不要一样
- 每个myid里对应一个zoo.cfg中service后面跟的数字
- 每个dataDir中都有一个myid文件
- 环境变量配置好后要source一下
- 如果启动的时候显示已经启动了但是jps不出来,配置也保证是正确的,那就可能是端口重用问题,重启一下虚拟机就好了