学习 zookeeper
1.zookeeper是什么
zookeeper是hadoop的分布式协调服务。主要作用是对hadoop的集群节点进行监控。但是由于其功能的单一而去不依赖hadoop其他框架,所以不局限在hadoop集群使用。比如淘宝的dubbo就用zookeeper集群来保证接口注册信息的高可靠性。
2.zookeeper有什么
zookeeper本质是个简单的文件系统。zookeeper本身可以搭建一个集群,整个集群维护一个文件系统,并保证这个文件系统的高可靠性。文件系统上的每个节点对应一个znode。每个znode维护着一个属性结构,里面存放着这个节点的版本号、时间戳、一些自定义信息。但是这些信息总体不能超过1M,也就是说zookeeper上的节点存储的信息不能超过1M。
zookeeper上的节点都是有类型的,一种是持久节点,一种是瞬时节点。瞬时节点下不能再有节点。
zookeeper的节点创建时可以设置顺序号,就变成了顺序节点。顺序节点和普通节点不同的主要是名称后面会有一个单调递增的顺序号。在处理事件时,这个顺序号可以控制事件的传播顺序和次数。
znode以某种方式变化时,可以通过观察(watch)机制让客户端得到通知。本质就是一个观察者模式。客户端注册观察在节点上,当节点发生变化后,通知观察,从而让客户端感知并作相应处理。
3.zookeeper能干什么
zookeeper可以和hadoop中的hdfs整合,用于监控存储集群,并且在namenode发生异常后,可以实现namenode的自动切换。
zookeeper可以喝hadoop中的hbase整合 ,用于客户端了解hbase集群的属性。
zookeeper可以和dubbo整合,用于对接口注册信息的存储。
zookeeper集群的高可靠性、节点的特性、与客户端的长链接监听机制等,实现了分布式集群的监控协调控制,让zookeeper成为了现在很流行的开源产品。
4.zookeeper单机部署
4.1.准备
项目首页:http://zookeeper.apache.org/
最新版本下载页:http://apache.fayea.com/apache-mirror/zookeeper/
我用的是 zookeeper-3.4.6.tar.gz
减压到一个运行目录。
zookeeper需要jdk1.6以上版本运行,所以需要确定环境变量中的jdk符合要求。
4.2.修改配置文件
找到 /zookeeper-3.4.6/conf/zoo_sample.cfg 文件,复制一份并将文件名字修改成zoo.cfg。
修改zoo.cfg文件,内容如下:
tickTime= initLimit= syncLimit= dataDir=/tmp/zookeeper clientPort=
主要是修改dataDir,将其指定到你的zookeeper的工作目录。
修改环境变量
export ZOOKEEPER_HOME=/Users/qyfmac/Documents/develop/zookeeper-3.4. export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1..0_51.jdk/Contents/Home export PATH=$ZOOKEEPER_HOME/bin:$JAVA_HOME/bin:$PATH
4.3.启动
- 使用命令zkServer.sh start 来启动zookeeper。启动日志如下:
qyfMacdeMacBook-Pro:conf qyfmac$ zkServer.sh start
JMX enabled by default
Using config: /Users/qyfmac/Documents/develop/zookeeper-3.4./bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
- 可以查看进程中是否有QuorumPeerMain来判断zookeeper是否启动成功。
qyfMacdeMacBook-Pro:conf qyfmac$ jps
QuorumPeerMain
我们还可以通过查看状态命令 zkServer.sh status 来验证单机部署是否成功。最后面的Mode:standalone表示这是一个单机启动的zookeeper。
qyfMacdeMacBook-Pro:bin qyfmac$ zkServer.sh status
JMX enabled by default
Using config: /Users/qyfmac/Documents/develop/zookeeper-3.4./bin/../conf/zoo.cfg
Mode: standalone
- 我们还可以使用另一台机器,通过nc或telnet命令传递一个ruok命令来检查zookeeper是否启动。
qyfMacdeMacBook-Pro:bin qyfmac$ echo ruok | nc localhost
imok
qyfMacdeMacBook-Pro:bin qyfmac$ telnet localhost
Trying ::...
Connected to localhost.
Escape character is '^]'.
ruok
imok
Connection closed by foreign host.
传递的ruok表示 Are you OK?
服务器响应的imok表示 I'm OK.
- 最后说一下停止服务命令 zkServer.sh stop
qyfMacdeMacBook-Pro:bin qyfmac$ zkServer.sh stop
JMX enabled by default
Using config: /Users/qyfmac/Documents/develop/zookeeper-3.4./bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
5.zookeeper客户端的实现
6.zookeeper的命令详解
6.1.服务器端命令
在zookeeper的安装目录/zookeeper-3.4.6/bin我们能看到这几个sh脚本命令。
qyfMacdeMacBook-Pro:bin qyfmac$ ls -al
total
drwxr-xr-x@ qyfmac staff : .
drwxr-xr-x@ qyfmac staff : ..
-rwxr-xr-x@ qyfmac staff README.txt
-rwxr-xr-x@ qyfmac staff zkCleanup.sh
-rwxr-xr-x@ qyfmac staff zkCli.cmd
-rwxr-xr-x@ qyfmac staff zkCli.sh
-rwxr-xr-x@ qyfmac staff zkEnv.cmd
-rwxr-xr-x@ qyfmac staff zkEnv.sh
-rwxr-xr-x@ qyfmac staff zkServer.cmd
-rwxr-xr-x@ qyfmac staff zkServer.sh
下面就让我们来看看这几个命令是干什么用的了。
- zkServer.sh
这个主要是控制服务的启停等管理命令。在命令行直接敲zkServer.sh 能够看到他的所有命令。
qyfMacdeMacBook-Pro:bin qyfmac$ zkServer.sh
JMX enabled by default
Using config: /Users/qyfmac/Documents/develop/zookeeper-3.4./bin/../conf/zoo.cfg
Usage: /Users/qyfmac/Documents/develop/zookeeper-3.4./bin/zkServer.sh {start|start-foreground|stop|restart|status|upgrade|print-cmd}
最后一行就能看到zkServer.sh后面能够跟的命令。下面挨个说明
- zkServer.sh start 启动zookeeper服务。
- zkServer.sh start-foreground 启动zookeeper服务,并且查看运行过程中的异常。检查zookeeper运行异常时使用。
- zkServer.sh stop 停止zookeeper服务。
- zkServer.sh restart 重启zookeeper服务。
- zkServer.sh status 查看zookeeper服务的运行状态。
- zkServer.sh upgrade 升级zookeeper。
- zkServer.sh print-cmd 查看zookeeper的启动命令及参数。
zookeeper集群部署
zookeeper伪分布式部署
zookeeper集群的工作原理
zookeeper配置文件详解
参考资料
- 官方文档 http://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html
- 《hadoop权威指南》
- 《hadoop实战》
学习 zookeeper的更多相关文章
- 一脸懵逼学习Zookeeper(动物园管理员)---》高度可靠的分布式协调服务
1:Zookeeper是一个分布式协调服务:就是为用户的分布式应用程序提供协调服务 A.zookeeper是为别的分布式程序服务的 B.Zookeeper本身就是一个分布式程序(只要有半数以上节点存活 ...
- zookeeper 学习 zookeeper下载部署
下载 http://mirror.bit.edu.cn/apache/zookeeper/ 校验 解压后得到zookeeper-3.4.10.jar,使用md5sum zookeeper-3.4.10 ...
- 【转】Zookeeper学习---zookeeper 选举机制介绍
[原文]https://www.toutiao.com/i6593162565872779784/ zookeeper集群 配置多个实例共同构成一个集群对外提供服务以达到水平扩展的目的,每个服务器上的 ...
- 学习Zookeeper之第3章Zookeeper内部原理
第 3 章 Zookeeper 内部原理 3.1 选举机制 3.2 节点类型 3.3 stat 结构体 3.4 监听器原理 1)监听原理详解 2)常见的监听 3.5 写数据流程 第 3 章 Z ...
- 学习Zookeeper之第2章Zookeeper安装
第 2 章 Zookeeper安装 2.1 本地模式安装部署 2.2 配置参数解读 第 2 章 Zookeeper安装 2.1 本地模式安装部署 1)安装前准备: (1)安装 jdk (2)通过 fi ...
- 学习Zookeeper之第1章Zookeeper入门
第 1 章 Zookeeper入门 1.1 概述 1.2 特点 1.3 数据结构 1.4 应用场景 统一命名服务 统一配置管理 统一集群管理 服务器动态上下线 软负载均衡 1.5 下载地址 第 1 章 ...
- 学习Zookeeper需要了解的专业名词
一.Zookeeper的集群角色 Leader:该角色是整个zookeeper集群工作机制中的核心 Follower:该角色是zookeeper集群状态的跟随者 Observer:在集群中充当观察者的 ...
- Hadoop学习---Zookeeper+Hbase配置学习
软件版本号: JDK:jdk-8u45-linux-i586.tar.gz Zookeeper:zookeeper-3.4.6 Hbase:hbase-1.0.0-bin 一.JDK版本更换 由于之前 ...
- 这样学习ZooKeeper离大厂所需技能要求还远吗
概述 定义 Apache ZooKeeper是一种用于构建分布式应用的高性能.高度可靠.开源的分布式协调服务,提供如配置信息维护.命名.分布式同步.组服务等功能,可以实现如分布式共识.组管理.领导选举 ...
随机推荐
- 【原创】验证代理IP是否有用
/// <summary> /// 验证代理IP是否有用 /// </summary> /// <param name="ip">IP地址< ...
- java的各种类型转换汇总
java类型转换 Integer String Long Float Double Date 1如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Intege ...
- iOS阶段学习第14天笔记(NSString与NSMutableString)
iOS学习(OC语言)知识点整理 一.OC字符串的操作 1)OC中字符串分为两种: 1.不可变字符串NSString:不能修改对象内容,但是可以改变对象的指针. 2.可变字符串NSMutableStr ...
- [转] 基于PHP Stream Wrapper开发有趣应用场景
PHP Stream Wrapper 原文:http://blog.sina.com.cn/s/blog_502c8cc40100k40e.html ,主要是基于SAE环境讲述相应的应用场景,本文经过 ...
- Oracle的建立表格
找到table右键点击,选择新建: 输入名称,用拼音或者英文,中文容易出现错误.输入完名称选择列: 列也写好名称,类型可以选择,VARCHAR2()是字符串类型,括号里面写数字代表长度,英文字母和数字 ...
- sina sae开发中出现的问题
都是些小问题,但既然出现了,下次就该避免! 网站加载速度慢: 1.安装 Disable Google Fonts 字体插件即可 2.删代码 http://jingyan.baidu.com/arti ...
- CI框架源码阅读笔记2 一切的入口 index.php
上一节(CI框架源码阅读笔记1 - 环境准备.基本术语和框架流程)中,我们提到了CI框架的基本流程,这里再次贴出流程图,以备参考: 作为CI框架的入口文件,源码阅读,自然由此开始.在源码阅读的过程中, ...
- [转]浅谈php web安全
原文地址:http://blogread.cn/it/article/6086?f=wb 前言: 首先,笔记不是web安全的专家,所以这不是web安全方面专家级文章,而是学习笔记.细心总结文章,里面有 ...
- 更加简洁易用——wangEditor富文本编辑器新版本发布
1. 前言 wangEditor富文本编辑器(www.wangEditor.com)从去年11月份发布,至今已经有将近10各月了.它就像一个襁褓中的小婴儿,在我的努力以及众多使用者的支持下不断摸索.成 ...
- 12款响应式的 jQuery 旋转木马(传送带)插件
在企业网站,作品集网站,电子商务网站或任何其他类型的网站内容显示图片可以使用 jQuery 旋转木马(传送带)插件来实现. jQuery 旋转木马插件允许开发人员以水平或垂直的方式显示内容,视频和图像 ...