`
supben
  • 浏览: 326351 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

zookeeper学习之一(简介和安装)

 
阅读更多

 一、zookeeper介绍

直接翻译官网的What is zookeeper。

Zookeeper是一个关于 配置信息,命名,提供分布式同步和集群service的一站式服务。所有的这些服务或者(他们)别的表现形式经常在应用于分布式系统中。每一次去实现他们,都不可避免的花费大量的工作去修复bugs和(调整)竞争条件。因为实现这类服务很难,所以在一开始就要谨慎的对待他们。否则他们将变得很脆弱和难以管理! 即使正确的完成了,这些服务的不同实现,仍然可能导致部署后维护的复杂性。

我的水平只能翻译成这样了,原文比较古怪。酷

原文地址:http://zookeeper.apache.org/

 

 

 

二、配置和安装

点击这里下载安装包,我采用的是最新的3.4.6,是一个stable版本。

安装方式采取伪分布式部署。即在同一台机器上部署多个节点。安装过程比较简单。多台机器也同理。

 

1.把下载下来的安装包放在/opt/shencl/zookeeper/目录下,tar -zxvf 解压,改名 zookeeper-3.4.6_0。

 

2. 复制一份zoo_sample.cfg,命名为zoo.cfg。编辑zoo.cfg,我们准备部署3个节点,所以加入如下配置,

tickTime=2000

initLimit=5

syncLimit=2

dataDir=/opt/shencl/zookeeper/data/data0

dataLogDir=/opt/shencl/zookeeper/log/log0

clientPort=2180

server.0=127.0.0.1:2888:3888

server.1=127.0.0.1:2889:3889

server.2=127.0.0.1:2890:3890

 

参数解释:

tickTime: 客户端和服务端或者服务端多个节点之间维持心跳的时间间隔,单位毫秒。

initLimit:服务端节点初始化时,相互通信的等待时间。一个单位就是tickTime的值。

syncLimit:服务端节点之间同步数据的间隔时间。一个单位就是tickTime的值。

dataDir: 数据文件存放目录。

dataLogDir:用来重做数据的事务日志文件存放目录。

clientPort:给客户端连接的端口。

server.0,server.1,server.2表示节点编号,后边用冒号隔开的三个数字,分别表示节点的ip,交换数据的端口号,某个节点挂掉之后专门用来选举的端口号。

注:initLimit,syncLimit在单节点部署模式下,不需要配置。

 

3. 在dataDir目录下创建myid文件,写入该节点的编号 0 。这样一个节点就配置完成了。

 

4.复制 zookeeper-3.4.6_0 到 zookeeper-3.4.6_1和 zookeeper-3.4.6_2,要修改的地方是 zoo.cfg里的 dataDir,dataLogDir,clientPort。还有需要在自己的data目录下新建myid文件,写入自己的编号。

 

最终的目录结构如下:


 

三、启动和测试

分别进入三个节点的bin目录,启动zookeeper,运行./zkServer.sh start。

注:前边节点启动的时候,会抛出一些错误,可忽略。这是因为另外的节点没启动,导致的通信异常。

 

可以用自带的基于telnet的客户端测试一下,看看是否启动成功。随便进入一个节点的bin目录,比如节点0

./zkCli.sh -server 127.0.0.1:2180,随便输入一个字符,他会跳出help界面。说明服务端启动成功。


 

 比较重要的有ls, get,set,create,delete等等,path参数必须以/开头。留意create命令的 acl参数(Access Control权限控制)和set命令的 version参数

我们用create命令创建一个znode  /testnode , 然后ls,发现已经创建成功了!

 

可以连上另外两个节点server.1 和 server.2 (在这里仅需要换一下端口)  观察, 发现数据已经被同步过来了,也已经有/testnode了。如下图



 

 
 

 

再看看set和get命令,把他的值改成 iwantchangemynode


 

可以看到不但数据改过来了,dataVersion也已经是1了(计数器从0开始)

aclVersion仍然还是0,因为我并没有修改acl的类型。

此外zookeeper记录下来的数据还有node的 各种zxid(ZooKeeper Transaction Id),以及ctime,mtime等等。

 

四、总结

 可以看到,zookeeper仅仅是维护了一个分布式的树形目录。如下图。它通过fast paxos算法保证多个节点上znode的数据一致性。一套zookeeper可以同时给多个应用程序使用,只需要隔离好各自的path~。在生产环境中,多个程序,比如hadoop,hbase,strom共用一套zookeeper也是常事。结构如下图。

 

 

 zookeeper仅仅维护了一份目录树,那他又是如何支持Leader election、Shared lock、Queue这些牛x哄哄的功能呢?

请看下篇 zookeeper学习之二(高级特性)

 

 

本文参考:

http://zookeeper.apache.org/

http://www.cnblogs.com/haippy/archive/2012/07/23/2603583.html

http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/

http://www.blogjava.net/BucketLi/archive/2010/12/21/341268.html

http://coolxing.iteye.com/blog/1871009

   

  • 大小: 17.9 KB
  • 大小: 47.8 KB
  • 大小: 308.4 KB
  • 大小: 60.1 KB
  • 大小: 33.8 KB
  • 大小: 34.6 KB
  • 大小: 203.8 KB
分享到:
评论

相关推荐

    Java学习之Dubbo+ZooKeeper分布式服务Demo

    在之前的一个《Java学习之SpringBoot整合SSM Demo》分享中说到搭建ZooKeeper和Dubbo分布式框架中遇到了一些技术问题没能成功,只分享了其中的一个中间产物,那就是大家看到的《Java学习之SpringBoot整合SSM Demo》...

    Zookeeper学习笔记.docx

    Zookeeper学习笔记

    Zookeeper-Windows-Service-Manager:Zookeeper Windows服务安装和管理器

    本工具用于Zookeeper Windows版的服务安装和管理xiangyuecn编写,学习zookeeper之用,还没弄懂怎么配置zookeeper,先把安装问题先解决了,不然服务器一注销zookeeper也自动关掉了,首次使用于2018-07-21。...

    分布式系统服务ZooKeeper的学习历程.zip

    计算机软件系统: 软件系统是指在硬件之上运行的各种程序和数据的集合,分为两大类: 系统软件: 操作系统 (OS):如Windows、macOS、Linux、Unix等,是管理和控制计算机硬件与软件资源、提供公共服务、协调...

    spring+springMVC+dubbo+zookeeper+mybatis实现登录功能

    想学习一下dubbo框架,网上搜了一些demo,这些demo很简单基本都是实现了一个hello的功能,工作之余,把网上搜的demo改造了一下,实现了一个完整的登录功能。

    Hadoop安装学习-入门教程

    Hadoop 安装 学习 入门教程 Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Chukwa,新增加的项目包括,YARN, Hcatalog, Oozie, ...

    Zookeeper3.4.5集群搭建(详+,一看就会).docx

    记录我的学习之旅,每份文档倾心倾力,带我成我大牛,回头观望满脸笑意,望大家多多给予意见,有问题或错误,请联系 我将及时改正;借鉴文章标明出处,谢谢

    SpringBoot+Zookeeper+Dubbo打造分布式高并发商品秒杀系统.zip

    当然可以,以下是一份关于您的Java SpringBoot项目的简介描述: 探索Java的SpringBoot魔法 亲爱的开发者们,准备好一起踏上这次深入Java的SpringBoot之旅了吗?如果您正在寻找一个现代化、高效且易于扩展的开发...

    分布式基础学习hadoop

    作为这个领域最富盛名的开源项目之一,它的使用者也是大牌如云,包括了Yahoo,Amazon,Facebook等等(好吧,还可能有校内,不过这真的没啥分量...)。Hadoop本身,实现的是分布式的文件系统HDFS,和分布式的计算...

    java面试笔试资料包括JAVA基础核心知识点深度学习Spring面试题等资料合集.zip

    关于线程和线程池的学习与使用.docx 深入理解JVM垃圾回收机制.docx 深入理解多线程实现的另一种方式Callable.docx 红黑树简介.docx 线程死锁及解决办法.docx 线程锁之重入锁.docx 线程间的通信.docx 虚拟机内存结构...

    大数据之Kafka学习

    Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop...

    大数据技术之HadoopHA视频教程

    HA(High Available)意为高可用,在本课程中主要是Hadoop的高可用,在实际开发环境中是必不可少的技术之一。你将通过本课程学习到,Hadoop存在的单点故障问题,解决单点故障的方案,搭建手动故障转移的HDFS-HA集群,...

    Hadoop实战实战-陆嘉恒(高清完整版)

    第1版上市后广受好评,被誉为学习Hadoop技术的经典著作之一。与第1版相比,第2版技术更新颖,所有技术都针对最新版进行了更新;内容更全面,几乎每一个章节都增加了新内容,而且增加了新的章节;实战性更强,案例更...

    《Hadoop实战》(第2版)高清中文版.pdf

    第1版上市后广受好评,被誉为学习Hadoop技术的经典著作之一。与第1版相比,第2版技术更新颖,所有技术都针对最新版进行了更新;内容更全面,几乎每一个章节都增加了新内容,而且增加了新的章节;实战性更强,案例更...

    Hadoop实战中文版

    第1版上市后广受好评,被誉为学习Hadoop技术的经典著作之一。与第1版相比,第2版技术更新颖,所有技术都针对最新版进行了更新;内容更全面,几乎每一个章节都增加了新内容,而且增加了新的章节;实战性更强,案例更...

    java专题,教学资元 共159g

    包含:socket网络编程及实战,系统学习docker,看的见的算法 7个经典应用诠释算法精髓,一站式学习Redis 从入门到高可用分布式实践,Spring Boot 2.0深度实践之核心技术篇,Scala 学习 进击大数据Spark生态圈,剑指Java面试...

    God-Of-BigData:专注大数据学习面试,大数据成神之路开启。FlinkSparkHadoopHbaseHive..

    大数据开发面试篇第一部分:大数据开发基础篇一,Java基础 二,NIO基础三,Java并发容器 四,JVM深度解析和面试点先来10篇基础热身再来5篇详细解说五,分布式理论基础和原理六,大数据框架开发基础-Zookeeper七,...

    圣SI园《深入掌握Git与实战开发》

    目前,最为流行和强大的社交化代码平台GitHub上托管着大量项目,其中既有个人开发的、也有诸多优秀的开源项目,如jQuery、React、Netty、Redis、Kafka、Zookeeper等等。如果不充分利用这些优秀的代码宝藏,岂不是...

    基于Python实现的一个简单的分布式高并发RPC框架+源代码+文档说明

    > + 永远站在巨人的肩膀之上,学习他人的代码,消化吸收,据为己用 ### 四、划重点 > + 分布式和高并发是如何实现的?Prefork异步模型+Zookeeper服务发现 ### 五、提供了什么RPC服务? > + 客户端请求服务端计算...

    strata-london-2018:我在Strata London 2018上的演讲的代码库-学习如何使用Apache Kafka和Deeplearning4j设计自动更新AI

    学习如何使用Apache Kafka和Deeplearning4J设计自动更新的AI。... config -Kafka Connect配置:一种用于event_topic持久性,另一种用于保存训练数据以备模型训练之用。 crontab用于模型创建的计划作业。

Global site tag (gtag.js) - Google Analytics