发布于 2015-11-14 15:18:08 | 2813 次阅读 | 评论: 1 | 来源: PHPERZ
Apache ZooKeeper
ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
这之前的准备和Docker搭建Hadoop集群是一样的,请关注上一篇笔记。
第一步根据上次wiki中的方法启动docker容器
docker run --rm -it -h zoo1 --name zoo1 ice/hadoop /bin/bash
docker run --rm -it -h zoo2 --name zoo2 ice/hadoop /bin/bash
docker run --rm -it -h zoo3 --name zoo3 ice/hadoop /bin/bash
确认/etc/profile生效的配置
/etc/profile最后添加配置,一定要对应自己的路径
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk.x86_64/
export CLASSPATH=.:$JAVA_HOME/lib/dt:$JAVA_HOME/lib/tools.jar
export HADOOP_HOME=/root/hadoop-2.7.1
export ZOOKEEPER_HOME=/root/zookeeper-3.4.6/
export HBASE_HOME=/root/hbase-1.1.2/
export PATH=$JAVA_HOME/bin:$PATH:$HADOOP_HOME/bin:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf:$HBASE_HOME/bin
zoo1:source /etc/profile
zoo2:source /etc/profile
zoo3:source /etc/profile
修改zookeeper配置文件conf/zoo.cfg
如果没有该文件:cp conf/zoo_sample.cfg conf/zoo.cfg
server.1=zoo1:2888:3888
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888
确定每个Zookeeper的id
对应zoo序号执行
echo 1 > /tmp/zookeeper/myid
echo 2 > /tmp/zookeeper/myid
echo 3 > /tmp/zookeeper/myid
启动Zookeeper
每个容器都执行
zkServer.sh start
验证Zookeeper状态
每个容器都执行
zkServer.sh status
这里会有问题,提示有问题
JMX enabled by default
Using config: /root/zookeeper-3.4.6/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
不要怕,确认两点即可
第一:确认/etc/hosts中是否有各个节点域名解析
第二:是否/tmp/zookeeper/myid有重复值