四、Zookeeper单机和集群

标签: zookeeper集群 zookeeper使用 zookeeper详解 zookeeper安装 zookeeper运用
69人阅读 评论(0) 收藏 举报
分类:

为什么使用Zookeeper?

大部分分布式应用需要一个主控、协调器或控制器来管理物理分布的子进程(如资源、任务分配等)
目前,大部分应用需要开发私有的协调程序,缺乏一个通用的机制
协调程序的反复编写浪费,且难以形成通用、伸缩性好的协调器
ZooKeeper:提供通用的分布式锁服务,用以协调分布式应用

Zookeeper能帮我们做什么?

Hadoop2.0,使用Zookeeper的事件处理确保整个集群只有一个活跃的NameNode,存储配置信息等.
HBase,使用Zookeeper的事件处理确保整个集群只有一个HMaster,察觉HRegionServer联机和宕机,存储访问控制列表等.

Zookeeper的特性

Zookeeper是简单的
Zookeeper是富有表现力的
Zookeeper具有高可用性
Zookeeper采用松耦合交互方式
Zookeeper是一个资源库

Zookeeper单机
单机模式:

1) 首先下载zookeeper压缩包
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz

2) 解压缩

首先创建文件夹,这里放到/user/local/zk/cloud/文件夹下
tar -zxvf zookeeper-3.4.8.tar.gz -C /user/local/zk/cloud/zookeeper1
tar -zxvf zookeeper-3.4.8.tar.gz -C /user/local/zk/cloud/zookeeper2
tar -zxvf zookeeper-3.4.8.tar.gz -C /user/local/zk/cloud/zookeeper3

3)运行单价环境
跳转到对应目录:cd /usr/local/zk/cloud/zookeeper1/conf
修改配置文件名:mv zoo_sample.cfg zoo.cfg
跳转到对应目录:cd /usr/local/zk/cloud/zookeeper1/bin
启动zookeeper :./zdServer.sh start

4) 使用java 客户端连接ZooKeeper
跳转到对应目录:cd /usr/local/zk/cloud/zookeeper1/bin
启动zookeeper客户端 :./zkCli.sh -server 127.0.0.1:2181
启动完成之后测试一下:
create /name “xiangping”
get /name :如果可以得到值就可以了

5) 关闭
跳转到对应目录:cd /usr/local/zk/cloud/zookeeper1/bin
关闭zookeeper :./zdServer.sh stop

Zookeeper集群(单机中做集群)
所谓 “伪分布式集群” 就是在,在一台PC中,启动多个ZooKeeper的实例。“完全分布式集群” 是每台PC,启动一个ZooKeeper实例。

ZooKeeper不存在明显的master/slave关系,各个节点都是服务器,leader挂了,会立马从follower中选举一个出来作为leader.

由于没有主从关系,也不用配置SSH无密码登录了,各个zk服务器是自己启动的,互相之间通过TCP端口来交换数据

创建环境目录

1.切换到/usr/local/zk/cloud/路径下,把解压好的zookeeper复制三份,zookeeper1,zookeeper2,zookeeper3

2.创建三个myid文件:

~ echo “1” > /usr/local/zk/cloud/zookeeper1/myid
~ echo “2” > /usr/local/zk/cloud/zookeeper2/myid
~ echo “3” > /usr/local/zk/cloud/zookeeper3/myid

注意:myid只能为数字,因为我试验了下,包含英文的话zk启动不起来,抛出异常

3.修改配置文件

vi /usr/local/zk/cloud/zookeeper1/conf/zoo.cfg

initLimit=10
syncLimit=5
dataDir=/usr/local/zk/cloud/data/zookeeper1
clientPort=2181
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890

vi /usr/local/zk/cloud/zookeeper2/conf/zoo.cfg

initLimit=10
syncLimit=5
dataDir=/usr/local/zk/cloud/data/zookeeper2
clientPort=2182
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890

vi /usr/local/zk/cloud/zookeeper3/conf/zoo.cfg

initLimit=10
syncLimit=5
dataDir=/usr/local/zk/cloud/data/zookeeper3
clientPort=2183
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890

启动每台机器

cd /usr/local/zk/cloud/
/zookeeper1/bin/zkServer.sh start
/zookeeper2/bin/zkServer.sh start
/zookeeper3/bin/zkServer.sh start

测试zookeeper集群:

cd /usr/local/zk/cloud/
/zookeeper1/bin/zkCli.sh -server 127.0.0.1:2181
启动完成之后:
create /name “xiangping”

cd /usr/local/zk/cloud/
/zookeeper2/bin/zkCli.sh -server 127.0.0.1:2182
启动完成之后:
get /name : 如果可以得到—”xiangping”就ok了

cd /usr/local/zk/cloud/
/zookeeper3/bin/zkCli.sh -server 127.0.0.1:2183
启动完成之后:
get /name : 如果可以得到—”xiangping”就ok了

zookeeper集群(多台机器集群)

我们使用三台机器搭建Zookeeper集群

设置ip地址与机器名分别为:

192.168.100.104 zookeeper1
192.168.100.105 zookeeper2
192.168.100.106 zookeeper3

1、 修改机器IP 可以在网络连接中直接使用鼠标操作

2、 修改机器名vim /etc/sysconfig/network 修改如下配置:HOSTNAME=机器名称,HOSTNAME=为你的机器名称,三台机器分别设置为:zookeeper1、zookeeper2、zookeeper3

3、 修改机器名称与IP地址对应关系:vim /etc/hosts

添加如下配置:

192.168.100.104 zookeeper1

192.168.100.105 zookeeper2

192.168.100.106 zookeeper3

4、 解压下载好的zookeeper-3.4.5.tar.gz

修改zoo.cfg文件
dataDir=/usr/local/zk/cloud/zookeeper-3.4.5/data

在文件中添加配置:

server.1=hadoop4:2888:3888

server.2=hadoop5:2888:3888

server.3=hadoop6:2888:3888

zook.cfg文件内容如下:

# The number of milliseconds of each tick

tickTime=2000

# The number of ticks that the initial

# synchronization phase can take

initLimit=10

# The number of ticks that can pass between

# sending a request and getting an acknowledgement

syncLimit=5

# the directory where the snapshot is stored.

# do not use /tmp for storage, /tmp here is just

# example sakes.

dataDir=/usr/zookeeper/data

# the port at which the clients will connect

clientPort=2181

#

# Be sure to read the maintenance section of the

# administrator guide before turning on autopurge.

#

# http://zookeeper.apache.org/doc/current
/zookeeperAdmin.html#sc_maintenance

#

# The number of snapshots to retain in dataDir

#autopurge.snapRetainCount=3

# Purge task interval in hours

# Set to "0" to disable auto purge feature

#autopurge.purgeInterval=1

server.1=zookeeper1:2888:3888
server.2=zookeeper2:2888:3888
server.3=zookeeper3:2888:3888

1.tickTime:CS通信心跳时间
Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位。
tickTime=2000

2.initLimit:LF初始通信时限
集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。
initLimit=5

3.syncLimit:LF同步通信时限
集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量)。
syncLimit=2

4.dataDir:数据文件目录
Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里。
dataDir=/usr/zookeeper/data

5.clientPort:客户端连接端口
客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
clientPort=2181

6.服务器名称与地址:集群信息(服务器编号,服务器地址,LF通信端口,选举端口)
这个配置项的书写格式比较特殊,规则如下:
server.N=YYY:A:B

server.1=zookeeper1:2888:3888

server.2=zookeeper2:2888:3888

server.3=zookeeper3:2888:3888

5、 创建myid文件:在zoo.cfg中设置的dataDir对应的目录中(/usr/local/zk/cloud/zookeeper-3.4.5/data)创建myid文件

并添加如下内容:echo “N” > myid (N为唯一id(最方便可以写机器名称最后一位数字))

添加内容以后:touch myid

注意三台机器都要设置

6、 启动zookeeper进入zookeeper-3.4.5的bin目录:./zkServer.sh start 注意三台机器都要启动

使用 ./zkServer.sh status 可以查看状态,三台机器中有一台会是leader状态其它是follower状态

7、 测试zookeeper

进入zookeeper-3.4.5的bin目录:./zkCli.sh

创建一个文件 create /name “xiangping”

使用另外一台机器登录zookeeper: ./zkCli.sh

get /name -如果能获取到xiangping就可以了

查看评论

格式化输出数字

格式化输出数字翻译:Cheramiemail:cherami@163.net原文:http://developer.java.sun.com/developer/TechTips/2000/tt041...
  • cherami
  • cherami
  • 2001-10-24 08:51:00
  • 1153

linux单机 ZooKeeper集群安装

https://my.oschina.net/toushita/blog/830968 在家闲来无事,看看zk做集群。看了博客用的都是多台linux客户端安装,我本机的固态空间不够了只能...
  • haiyang4988
  • haiyang4988
  • 2017-02-08 10:38:20
  • 295

【ZooKeeper】单机伪集群搭建(适用于mac)

1.配置.zookeeper下载地址:http://apache.mirrors.lucidnetworks.net/zookeeper/可以选择需要的版本,我下载的是zookeeper-3.4.6....
  • nuaazhaofeng
  • nuaazhaofeng
  • 2017-07-17 15:17:26
  • 809

zookeeper入门(1)在单机上实现ZooKeeper伪机群/伪集群部署

《zooker入门系列教程》: 1 - 如何在单机上实现ZooKeeper伪机群/伪集群部署 2 - 解读zookeeper的配置项 ----- 此文是为手头没有多余机器可以尝试而...
  • Poechant
  • Poechant
  • 2011-07-26 10:22:22
  • 18332

ZooKeeper 单机模式和集群模式的环境搭建

ZooKeeper环境搭建下载最新稳定版的 Zookeeper使用的是最新稳定版的 zookeeper-3.4.9Standalone Operation1、 将下载的 ZooKeeper 解压,进入...
  • Mark_LQ
  • Mark_LQ
  • 2016-09-06 09:46:17
  • 10054

zookeeper单机/集群安装详解

zookepper单机与集群安装详解
  • ron03129596
  • ron03129596
  • 2017-04-03 18:31:00
  • 3009

zookeeper 单机伪集群配置

由于手头机器不足,所以在一台机器上部署了3个server,如果你手头也比较紧,也可以这么做。那么我建了3个文件夹,如下 server1 server2 server3 然后每个文件夹里面解压一...
  • zh521zh
  • zh521zh
  • 2016-06-22 10:00:45
  • 423

Zookeeper实战之单机集群模式

原文链接:
  • kongxx
  • kongxx
  • 2014-11-12 07:59:19
  • 8985

CentOS下ZooKeeper单机模式、集群模式安装

本文环境如下: 操作系统:CentOS 6 32位 ZooKeeper版本:3.4.8 0. 环境需求Zookeeper需要JDK1.6以上版本的Java环境 可以参考: CentOS...
  • Lnho2015
  • Lnho2015
  • 2016-04-13 13:42:58
  • 8388

【zookeeper】zookeeper单机和集群环境的搭建

首先去官网下载zookeeper安装包,本文采用3.4.6stable版本 http://zookeeper.apache.org/doc/r3.4.6/ tar命令解压后的目录结构如下: [r...
  • chiweitree
  • chiweitree
  • 2015-01-22 14:45:30
  • 1920
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 2万+
    积分: 638
    排名: 8万+
    博客专栏