ZooKeeper的学习
zookeeper的学习
1.ZooKeeper的概述
zookeeper是用java语言开发的一个分布式协同框架,属于hadoop生态圈的一份子。它可以实现分布式锁,分布式队列,分布式事务等功能,同样最为广为人知的他的选举功能,可以帮助mq集群进行监听,并选举出master,最早由雅虎为解决自身的分布式协同问题所编写的框架,后来捐给了apache开元基金会。
2.开始zookeeper的使用
因为zookeeper使用java语言开发的,所以学习zookeeper之前需要有JRE或者JDK的环境支持,本文所用的zookeeper版本为3.5.5版本,zookeeper的默认依赖为JDK7+ 以上。首先我们打开zookeeper的官网https://zookeeper.apache.org/ 然后我们点击Getting Started下面的download进入到zookeeper的下载页面
进入到获得下载页面之后选择获得下载地址选项
然后点击获取稳定版本的zookeeper的下载
然后点击zookeeper的3.5.5的稳定版下载,下载之后就可以将文件上传到linux上了
下载好之后就可以将zookeeper上传到linux上,我用的远程连接工具是xshell6,通过使用rz命令将zookeeper的压缩包上传到linux的,将这些准备好之后就可以开始zookeeper的学习了
3.配置zookeeper
3.1 配置zookeeper的配置文件
首先将zookeeper的linux压缩包解压,我是解压到centos中的/usr/local这个文件夹下的
tar -zxvf apache-zookeeper-3.5.5-bin.tar.gz -C /usr/local
解压之后进入到zookeeper的文件夹中,可以看到zookeeper的目录文件结构
运行zookeeper的话需要更改/conf下的zoo_sample.cfg,首先将zoo_sample.cfg更改为zoo.cfg,否则zookeeper是启动不开的。
cp zoo_sample.cfg zoo.cfg
这样可以将zoo_sample.cfg复制一份,也不至于改错了没办法的窘境。然后我们打开zoo.cfg这个文件,可以看到zookeeper配置文件的内容
vim zoo.cfg
可以看到这两个信息是zookeeper很重要的信息,dataDir是zookeeper运行时存放数据、运行日志等文件的位置,clientPort是zookeeper运行时用来通信的端口号,在linux中tmp目录是非常危险的,因为linux的tmp目录总会在linux重启的时候清空,所以我们要换个目录,将这个目录更换为/data/zookeeper。
3.2 启动zookeeper
因为zookeeper的架构是一个典型的Client-Server端,所以我们可以通过命令来启动zookeeper的服务端,进入到zookeeper的bin目录下执行命令运行zookeeper服务端
./zkServer.sh start
3.3 检查zookeeper日志文件是否有错误输出
首先进入到zookeeper目录下的logs文件夹,这个文件夹是zookeeper用来打印日志的文件夹,可以通过下面的命令查询到zookeeper是否出错
grep -E -i "((exception)|(error))" *
如果没有返回的信息,就代表启动zookeeper成功了
3.4 检查zookeeper是否在指定的端口号上进行监听
有两种办法,第一种可以查询到每个端口号的服务,第二种可以查询到指定端口号的服务
netstat -nltp
出以下表示zookeeper在指定的端口号上监听了
netstat -an | grep 2181
这个可以看指定端口号的监听信息
4.使用zookeeper的客户端工具
因为zookeeper是一个client-server架构模式的,现在就来看看使用zookeeper的client端来操作zookeeper,首先进入到zookeeper的bin目录下,然后在bin目录下执行命令
./zkCli.sh
这样进入到了zookeeper的客户端页面,首先用几个简单的命令来查看zookeeper中的东西,这里-R是代表的是递归的查看根zNode下的结点
ls -R /
这两个zNode都是zookeeper自带的zNode,我们暂时先不管
下面的这个命令是用来创建zookeeper的节点的命令
create ZNodeName
5.总结
本次文章主要讲了zookeeper的安装下载、zookeeper服务的启动以及zookeeper的客户端使用基本命令,在以后的文章中还会对zookeeper进行架构的分析以及zookeeper的API的使用。