zookeeper简介
Zookeeper是一个分布式协调服务;就是为用户的分布式应用程序提供协调服务
1、zookeeper是为别的分布式程序服务的
2、Zookeeper本身就是一个分布式程序(只要有半数以上节点存活,zk就能正常服务)
3、Zookeeper所提供的服务涵盖:主从协调、服务器节点动态上下线、统一配置管理、分布式共享锁、统一名称服务……
4、虽然说可以提供各种服务,但是zookeeper在底层其实只提供了两个功能:
管理(存储,读取)用户程序提交的数据;
并为用户程序提供数据节点监听服务;
Zookeeper集群的角色: Leader 和 follower (Observer)
只要集群中有半数以上节点存活,集群就能提供服务
1、zookeeper的安装
在装有已经搭建好的Hadoop集群的Linux虚拟机来进行安装,另外zookeeper是java开发的所以先装好jdk(1.7及以上)。
1、将zookeeper-3.4.6.tar.gz上传到/opt/modules/app目录下。
2、将zookeeper-3.4.6.tar.gz解压到app文件夹下。
3、将其重命名改为zookeeper方便操作。
[root@localhost app]# tar -zxvf zookeeper-3.4.6.tar.gz
3、进入apps/zookeeper-3.4.6.tar.gz/conf文件夹,复制zoo_example.cfg改名为zoo.cfg
[root@hadoop app]# cd zookeeper/conf
[root@hadoop conf]# ll
总用量 12
-rw-rw-r--. 1 1000 1000 535 2月 20 2014 configuration.xsl
-rw-rw-r--. 1 1000 1000 2161 2月 20 2014 log4j.properties
-rw-rw-r--. 1 1000 1000 922 2月 20 2014 zoo_sample.cfg
[root@hadoop conf]# cp zoo_sample.cfg zoo.cfg
[root@hadoop conf]# ll
总用量 16
-rw-rw-r--. 1 1000 1000 535 2月 20 2014 configuration.xsl
-rw-rw-r--. 1 1000 1000 2161 2月 20 2014 log4j.properties
-rw-r--r--. 1 root root 922 9月 12 18:05 zoo.cfg
-rw-rw-r--. 1 1000 1000 922 2月 20 2014 zoo_sample.cfg
4、修改配置文件zoo.cfg,这里只修改数据存储文件夹位置
5、创建文件夹 /root/zkdata
[root@hadoop01 ~]# mkdir zkdata
6、进入/root/zookeeper-3.4.6/bin,启动zookeeper并且查看是否启动成功。
[root@hadoop01 bin]# ll
总用量 36
-rwxr-xr-x. 1 1000 1000 238 2月 20 2014 README.txt
-rwxr-xr-x. 1 1000 1000 1937 2月 20 2014 zkCleanup.sh
-rwxr-xr-x. 1 1000 1000 1049 2月 20 2014 zkCli.cmd
-rwxr-xr-x. 1 1000 1000 1534 2月 20 2014 zkCli.sh
-rwxr-xr-x. 1 1000 1000 1333 2月 20 2014 zkEnv.cmd
-rwxr-xr-x. 1 1000 1000 2696 2月 20 2014 zkEnv.sh
-rwxr-xr-x. 1 1000 1000 1084 2月 20 2014 zkServer.cmd
-rwxr-xr-x. 1 1000 1000 5742 2月 20 2014 zkServer.sh
[root@hadoop01 bin]# zkServer.sh start
JMX enabled by default
Using config: /opt/modules/app/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@hadoop01 bin]# zkServer.sh status
JMX enabled by default
Using config: /opt/modules/app/zookeeper/bin/../conf/zoo.cfg
Mode: standalone
zookeeper的集群
1、首先使用的是第一台这台服务器,前面6步与zookeeper安装一致,唯一区别就是配置文件修改不一样
注:2888是leader与follower之间通信的端口,3888是投票使用的端口(数字不做要求,但应避免冲突)。
2、将配置好的app下的zookeeper传到另外两台linux
[root@hadoop01 app]# scp -r zookeeper hadoop03:/opt/modules/app
root@192.168.25.127's password:
...
3、zkdata文件夹下创建myid文件设置值为2
[root@localhost zkdata]# echo 1 > myid
[root@localhost zkdata]# cat myid
1
注:另外两台分别根据配置文件中所定义的进行分配第二台主机为2,第三台主机为3
4、分别切换至hadoop03和hadopp04两台服务器,同样创建zkdata,zkdata下创建myid文件设置值分别为2,3。
注意:myid里面设置的值一定要与配置文件里设定的一致。
5、再分别启动三条服务器,查看是否启动成功
[root@localhost bin]# ./zkServer.sh status
一个leader两个follower
如果启动的了查看状态发现没有启动成功。除了zookeeper安装时候出现的问题,这里主要的问题就是zkdata文件夹下的myid的值写的跟配置文件里面不一致,这个时候会出现ConnectionException:拒绝连接的异常,检查修改一下。如果是地址被占用那么就用上面介绍的方法。