2019独角兽企业重金招聘Python工程师标准>>>

1.什么是zookeeper
  ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
ZooKeeper包含一个简单的原语集, 提供Java和C的接口。
ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在zookeeper-3.4.3\src\recipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本。
2.zookeeper的原理
  ZooKeeper是以Fast Paxos算法为基础的,paxos算法存在活锁的 问题,即当有多个proposer交错提交时,有可能互相排斥导致没有一个proposer能提交成功,而Fast Paxos作了一些优化,通过选举产生一个leader,只有leader才能提交propose,具体算法可见Fast Paxos。因此,要想弄懂ZooKeeper首先得对Fast Paxos有所了解。[3]
ZooKeeper的基本运转流程:
  1、选举Leader。
  2、同步数据。
  3、选举Leader过程中算法有很多,但要达到的选举标准是一致的。
  4、Leader要具有最高的zxid。
  5、集群中大多数的机器得到响应并follow选出的Leader
3.zookeeper的特点
   在Zookeeper中,znode是一个跟Unix文件系统路径相似的节点,可以往这个节点存储或获取数据。如果在创建znode时Flag设置为 EPHEMERAL,那么当创建这个znode的节点和Zookeeper失去连接后,这个znode将不再存在在Zookeeper 里,Zookeeper使用Watcher察觉事件信息。当客户端接收到事件信息,比如连接超时、节点数据改变、子节点改变,可以调用相应的行为来处理数 据。Zookeeper的Wiki页面展示了如何使用Zookeeper来处理事件通知,队列,优先队列,锁,共享锁,可撤销的共享锁,两阶段提交。
那么Zookeeper能作什么事情呢,简单的例子:假设我们有20个搜索引擎的服务器(每 个负责总索引中的一部分的搜索任务)和一个总服务器(负责向这20个搜索引擎的服务器发出搜索请求并合并结果集),一个备用的总服务器(负责当总服务器宕 机时替换总服务器),一个web的cgi(向总服务器发出搜索请求)。搜索引擎的服务器中的15个服务器提供搜索服务,5个服务器正在生成索引。这20个 搜索引擎的服务器经常要让正在提供搜索服务的服务器停止提供服务开始生成索引,或生成索引的服务器已经把索引生成完成可以搜索提供服务了。使用 Zookeeper可以保证总服务器自动感知有多少提供搜索引擎的服务器并向这些服务器发出搜索请求,当总服务器宕机时自动启用备用的总服务器。
4.centos 5.8搭建环境
  所需软件:VM 虚拟机  centos系统  jdk 1.6或者以上  zookeeper-3.4.6.tar.gz
  这里至少需要三台server,不然的话这里zookeeper安装的时候,测试会报至少需要三台server,相关可以查看zookeeper.out(测试环境下)
  首先下载jdk的rpm包,分别上传到三个虚拟机上并安装。
    1.先查看系统是否存在jdk的相关包。(有时候装的系统中会有一个openJDK)有的话就将其卸载掉。
    2.将jdk保存在/usr/local/java目录下
    3.安装jdk:rpm -ivh jdk-**-**.rpm
  这里不用配置java环境,因为rpm将其自动加到path中。
  安装zookeeper,将zookeeper上传到三个服务器,保存在/usr/local/zookeeper目录下,解压tar包
  tar -xzvf zookeeper-3.4.6.tar.gz
  进入目录zookeeper-3.4.6中,将conf目录中的zoo_sample.cfg文件复制为zoo.cfg并利用vi命令进行修改
  tickTime=2000
  initLimit=10
  syncLimit=5
  clientPort=2181
  dataDir=/usr/local/zookeeper/zookeeper-3.4.6/data    保存数据目录
  dataLogDir=/usr/local/zookeeper/zookeeper-3.4.6/log 保存日志目录
  server.1=ip:2888:3888   ip为服务器的ip
  server.2=ip:2888:3888   ip为服务器的ip
  server.3=ip:2888:3888   ip为服务器的ip
  
  这里的data和log需要自己创建 mkdir命令创建
  
  在/usr/local/zookeeper/zookeeper-3.4.6/data目录下创建一个文件:myid
 
  分别在myid上按照配置文件的server.<id>中id的数值,在不同机器上的该文件中填写相应过的值
  ip  的myid内容为1
  ip  的为2
  ip  的为3
    ip为服务器的ip   这里对应上面的server.1,server.2,server.3
 
  创建一个环境变量ZOOKEEPER并把该环境变量添加到系统路径:
  vim /etc/profile
 
  在export PATH语句前添加两行:
  ZOOKEEPER=/usr/local/zookeeper/zookeeper-3.4.6
  PATH=$PATH:$ZOOKEEPER/bin
 
  并执行 source /etc/profile
此时安装成功,进行测试:
  1.进入zookeeper的bin目录,执行sh zkServer.sh start进行启动zookeeper
  2.查看状态   进入bin目录,执行sh zkServer.sh status

  3.停止    进入bin目录,执行sh zkServer.sh stop

转载于:https://my.oschina.net/u/3872240/blog/3027773

ZooKeeper集群部署方式相关推荐

  1. Linux下搭建 kafka集群 + zookeeper集群部署 安装、启动、停止

    文章目录 一.环境部署总览 1. 软件版本选型 2. 服务器软件部署总览 二.软件部署手册 2.1. JDK 2.2. kafka 2.3. Kafka Eagle 2.4. mysql 2.5. z ...

  2. zookeeper集群部署监控与选举同步流程等工作原理

    部署一个zookeeper集群,要多简单就能有多简单(下载压缩包,解压,修改配置文件zoo.cfg,执行启动脚本),但是想要真的把这套东西玩好了,还是需要费些功夫研究一番的.就跟自己搭建一个lnmp的 ...

  3. Zookeeper集群部署和使用

    Zookeeper 由 Apache Hadoop 的 Zookeeper 子项目发展而来,Google Chubby的一个开源实现.它是一个分布式应用程序协调服务,提供的功能包括:配置管理,名字服务 ...

  4. Zookeeper集群部署及报错分析

    安装 下载压缩包 解压 修改zoo.cfg文件 创建myid文件 启动 自启动配置 有时间再补hhh 报错处理 很荣幸的遇到了大部分报错,日志再zookeeper目录的bin下的zookeeper.o ...

  5. centos7 Zookeeper集群部署

    Node1 server.1=192.168.88.151:2888:3888 Node2 server.1=192.168.88.152:2888:3888 Node3 server.1=192.1 ...

  6. 大数据生态(六)zookeeper集群部署(Linux和Windows[含一键启动脚本])

    目录 前言 1.解压安装Zookeeper到/e3base/zookeeper目录下 2 .创建$E3_INFO_HOME/zookeeper目录 3 .创建数据目录和日志目录 4.配置环境变量 4. ...

  7. dubbo学习之dubbo管理控制台装配及集成zookeeper集群部署(1)【转】

    为什么80%的码农都做不了架构师?>>>    dubbo管理控制台开源部分主要包含:路由规则,动态配置,服务降级,访问控制,权重调整,负载均衡,等管理功能. 1.下载dubbo 地 ...

  8. zookeeper集群部署(分布式)

    描述 ZooKeeper可以用来保证数据在zookeeper集群之间的数据的事务一致性. 如何搭建ZooKeeper集群 1.         Zookeeper服务集群规模不小于三个节点,要求各服务 ...

  9. linux下kafka与zookeeper集群部署

    *********************************配置主机名,通过主机名连接机器********************************* 比如说,已经有了三台主机 1,在li ...

最新文章

  1. 技术图文:如何利用BigOne的API制作自动化交易系统 -- 身份验证
  2. R语言ggplot2可视化在图像中添加脚注信息(footnote)实战:自定义脚注信息的位置、对齐形式、图的脚注、整个网格的脚注
  3. C语言 函数式宏的使用
  4. Zencart修改前台页面的字体颜色
  5. 【C++】 C++虚函数表详细分析(上)
  6. C++ STL 线性容器的用法
  7. ftp 速度_如何评价我的骑行功率(FTP)?
  8. dtmf信号系统的matlab仿真,dtmf信号系统的matlab仿真毕业设计
  9. 如何在本站使用脚本格式的计数器--终于找到解决办法!
  10. 伺服系统 计算机仿真,减摇鳍电伺服系统的计算机仿真研究-应用科技-哈尔滨工程大学.PDF...
  11. oracle文件名乱码,如何rename datafile name中存在乱码的数据文件
  12. 《华为工作法》学习笔记
  13. java 短信批量发送_Redis实现订阅发布与批量发送短信
  14. Codevs 4909 寂寞的堆
  15. 快速部署阿里云WebIDE(DevStudio)并参与开源项目开发
  16. (十六)ATP应用测试平台——java应用中的过滤器Filter、拦截器Interceptor、参数解析器Resolver、Aop切面,你会了吗?
  17. iOS UITextView 纯英文排版换行出错的解决方案
  18. NEON----ARM通用 SIMD 引擎
  19. 为什么不建议你用去 “! = null” 做判空?
  20. blade说明和使用

热门文章

  1. vue.js慢速入门(1)
  2. PL/SQL学习(五)异常处理
  3. 浏览器下载文件时一共发送2次请求,如何把“下载次数”只记录为1次?
  4. Swing透明和变换
  5. web developer tips (38):如何用请求失败记录追踪重写规则
  6. 'htmlentities(): charset `utf8' not supported, assuming utf-8'
  7. Java SSM框架之MyBatis3(六)MyBatis之参数传递
  8. 中国剩余定理-模版(互质版)
  9. JqueryUI-1
  10. 标准模板库(STL)学习探究之Multimap容器