一、ZooKeeper相关概念简介:
ZooKeeper是一个开源的、分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
ZooKeeper服务器是用Java创建的,它在JVM上运行。你需要使用JDK 6或更高版本
二、环境:
IP地址 | 节点名称 | 操作系统 | JDK版本 | ZooKeeper版本 |
192.168.103.137 | hadoop01 | CentOS 6.5 x86_64 | 1.7.0_79 | zookeeper-3.4.12 |
192.168.103.138 | hadoop02 | |||
192.168.103.140 | hadoop03 |
三、安装前准备:
1、 配置hostname
[root@hadoop01 ~]# vi /etc/sysconfig/network
分别修改三台主机的HOSTNAME为hadoop01、hadoop02、hadoop03
NETWORKING=yesHOSTNAME=hadoop01
2、 配置hosts解析,三台都要处理
vi /etc/hosts
在后面添加:
192.168.103.137 hadoop01192.168.103.138 hadoop02192.168.103.140 hadoop03
节点之间可以互相ping通,说明通信正常
查看操作系统版本:cat /etc/issue
查看系统位数:getconf LONG_BIT
四、 安装配置JDK:
1、上传jdk并解压
[root@hadoop01 ~]# cd /usr/local/src/[root@hadoop01 src]# lsjdk-7u79-linux-x64.tar.gz[root@hadoop01 src]# tar -zxvf jdk-7u79-linux-x64.tar.gz -C /usr/local/
2、配置环境变量
vi /etc/profile
按shift+g(G)跳到文件结尾,添加:
export JAVA_HOME=/usr/local/jdkexport PATH=${JAVA_HOME}/bin:$PATH
使环境变量生效:
source /etc/profile
检查是否安装成功,输入Java -version
五、安装配置ZooKeeper:
1、上传zookeeper并解压
[root@hadoop01 ~]# lsanaconda-ks.cfg install.log install.log.syslog[root@hadoop01 ~]# lsanaconda-ks.cfg install.log install.log.syslog zookeeper-3.4.12.tar.gz[root@hadoop01 ~]# mv zookeeper-3.4.12.tar.gz /usr/local/src/[root@hadoop01 ~]# cd /usr/local/src/[root@hadoop01 src]# lsjdk-7u79-linux-x64.tar.gz zookeeper-3.4.12.tar.gz[root@hadoop02 src]# tar -zxvf zookeeper-3.4.12.tar.gz -C /usr/local/
[root@hadoop01 src]# cd /usr/local/[root@hadoop01 local]# lsbin etc games include jdk lib lib64 libexec sbin share src zookeeper-3.4.12[root@hadoop01 local]# mv zookeeper-3.4.12/ zookeeper[root@hadoop01 local]# lsbin etc games include jdk lib lib64 libexec sbin share src zookeeper[root@hadoop01 local]#
2、 创建日志数据目录
[root@hadoop01 ~]# cd /usr/local/zookeeper/[root@hadoop01 zookeeper]# mkdir data[root@hadoop01 zookeeper]# mkdir logs
3、 修改配置文件
[root@hadoop02 ~]# cd /usr/local/zookeeper/[root@hadoop01 zookeeper]# cd conf/[root@hadoop01 conf]# lsconfiguration.xsl log4j.properties zoo_sample.cfg[root@hadoop01 conf]# mv zoo_sample.cfg zoo.cfg[root@hadoop01 conf]# lsconfiguration.xsl log4j.properties zoo.cfg[root@hadoop01 conf]# vi zoo.cfg
修改dataDir,添加dataLogDir,添加节点
备注:server.A=B:C:D
A:一个数字,表示这是第几台服务器
B:此服务器的IP地址或/etc/hosts文件中映射的主机名
C:2888,表示此服务器与集群中的Leader服务器交换信息的端口
D:3888,表示如果集群中的Leader服务器宕机了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口
4、 创建myid文件:
在server1上执行:# echo 1 > /usr/local/zookeeper/data/myid
在server2上执行:# echo 2 > /usr/local/zookeeper/data/myid
在server3上执行:# echo 3 > /usr/local/zookeeper/data/myid
备注:myid文件中只有一行内容,且内容为该节点对应的server.id中的id编号
5、 配置zookeeper到环境变量中:
vi /etc/profile
按shift+g(G)跳到文件结尾,添加:
export ZOOKEEPER_HOME=/usr/local/zookeeperexport PATH=${ZOOKEEPER_HOME}/bin:$PATH
使环境变量生效:
source /etc/profile
六、启动ZooKeeper:
启动前要关闭防火墙:
[root@hadoop01 ~]# service iptables stop
iptables:将链设置为政策 ACCEPT:filter [确定]
iptables:清除防火墙规则:[确定]
iptables:正在卸载模块:[确定]
[root@hadoop01 ~]# chkconfig iptables off
启动:zkServer.sh start
状态:zkServer.sh status
启动完3台服务器后zookeeper状态为:
主机名 | myid | 状态 |
hadoop01 | 1 | follower |
hadoop02 | 2 | leader |
hadoop03 | 3 | follower |
顺序启动时,一般是第二台为leader,因为选举机制是按最大myid选的
停止:zkServer.sh stop
查看zookeeper进程:jps
六、开机启动ZooKeeper(可选)
vi /etc/rc.d/init.d/zookeeper
添加以下脚本:
#!/bin/bash # chkconfig:35 81 82 # description:zookeeper server scriptif [ -z $1 ]thenecho "缺少位置参数"echo "请使用$0 {start|start-foreground|stop|restart|status|upgrade|print-cmd}"exit 1 fiexport JAVA_HOME=/usr/local/jdk export ZOO_LOG_DIR=/usr/local/zookeeper/logs ZOOKEEPER_HOME=/usr/local/zookeeper/usr/local/zookeeper/bin/zkServer.sh $1
添加到开机启动项里:
chkconfig --add zookeeper
chkconfig zookeeper on
chkconfig --list
重启测试是否开机启动:reboot