简介:

Apache ZooKeeper 是一个分布式应用的高性能协调服务,功能包括:配置维护、统一命名、状态同步、集群管理、仲裁选举等。

下载地址:http://apache.fayea.com/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz

官方文档:http://zookeeper.apache.org/doc/r3.4.10/zookeeperStarted.html

一、安装 ZooKeeper

shell > java -version
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) -Bit Server VM (build 25.111-b14, mixed mode)

# JAVA 是必不可少的

shell > cd /usr/local/src
shell > wget http://apache.fayea.com/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz shell > tar zxf zookeeper-3.4..tar.gz -C ../ shell > chown -R root.root /usr/local/zookeeper-3.4.

二、配置、启动、客户端、停止 ZooKeeper

1、生成配置文件

shell > cd /usr/local/zookeeper-3.4.

shell > cp conf/zoo_sample.cfg conf/zoo.cfg

2、启动 ZooKeeper

shell > sh bin/zkServer.sh start

# 查看进程ID
shell > jps
QuorumPeerMain # 端口监听状态
shell > netstat -lnpt | grep
tcp ::: :::* LISTEN /java # ZooKeeper 启动模式 standalone
shell > sh bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4./bin/../conf/zoo.cfg
Mode: standalone

3、客户端连接

shell > sh bin/zkCli.sh -server localhost:
# 打印根目录
[zk: localhost:(CONNECTED) ] ls /
[zookeeper]
# 层级目录
[zk: localhost:(CONNECTED) ] ls /zookeeper
[quota]
# 显示帮助信息
[zk: localhost:(CONNECTED) ] ?
ZooKeeper -server host:port cmd args
stat path [watch]
set path data [version]
ls path [watch]
delquota [-n|-b] path
ls2 path [watch]
setAcl path acl
setquota -n|-b val path
history
redo cmdno
printwatches on|off
delete path [version]
sync path
listquota path
rmr path
get path [watch]
create [-s] [-e] path data acl
addauth scheme auth
quit
getAcl path
close
connect host:port

# ZooKeeper 维护着一个类似文件系统的内存结构
# 连接时不指定 -server 默认连接本机 2181 端口
# 当输入 ZooKeeper 无法识别的指令时,打印帮助信息

4、停止 ZooKeeper

shell > sh bin/zkServer.sh stop

三、ZooKeeper 集群部署

192.168.1.27 datanode01.hadoop
192.168.1.28 datanode02.hadoop
192.168.1.29 datanode03.hadoop

# 部署 ZooKeeper 集群,建议 3 台及以上奇数主机 ( 涉及到仲裁问题 )

# JAVA、下载、解压、修改属主、组

1、修改配置文件

shell > vim conf/zoo.cfg
# 心跳间隔 毫秒
tickTime=
# 初始化时,允许的超时心跳间隔次数
initLimit=
# Leader 与 Follower 同步数据允许的超时心跳间隔次数
syncLimit=
# 监听端口
clientPort=
# 数据目录
dataDir=/data/zookeeper/data
# 日志目录
dataLogDir=/data/zookeeper/logs
# ZooKeeper Server 地址,通信端口、选举端口
server.=192.168.1.27::
server.=192.168.1.28::
server.=192.168.1.29::

# 每台都要有哦~

2、创建目录

shell > mkdir -p /data/zookeeper/{data,logs}

# 每台都要有哦~

3、生成节点标识文件

shell > echo  > /data/zookeeper/data/myid

shell > echo  > /data/zookeeper/data/myid

shell > echo  > /data/zookeeper/data/myid

# 分别在三台服务器上执行,需要跟配置文件中的 server.1\2\3 对应

4、启动 ZooKeeper

shell > ansible datanode -m shell -a '/usr/local/zookeeper-3.4.10/bin/zkServer.sh start'
datanode02.hadoop | SUCCESS | rc= >>
Starting zookeeper ... STARTEDZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4./bin/../conf/zoo.cfg datanode03.hadoop | SUCCESS | rc= >>
Starting zookeeper ... STARTEDZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4./bin/../conf/zoo.cfg datanode01.hadoop | SUCCESS | rc= >>
Starting zookeeper ... STARTEDZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4./bin/../conf/zoo.cfg

# 全部成功启动

shell > ansible datanode -m shell -a '/usr/local/zookeeper-3.4.10/bin/zkServer.sh status'
datanode03.hadoop | SUCCESS | rc=0 >>
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: leader

datanode02.hadoop | SUCCESS | rc=0 >>
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower

datanode01.hadoop | SUCCESS | rc=0 >>
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower

# 查看状态,datanode03.hadoop 为 leader ,其余两台为 follower

5、验证选举

shell > sh bin/zkServer.sh stop

# 关闭 datanode03.hadoop 服务器上的 ZooKeeper,原 leader

shell > ansible datanode -m shell -a '/usr/local/zookeeper-3.4.10/bin/zkServer.sh status'
datanode03.hadoop | FAILED | rc=1 >>
Error contacting service. It is probably not running.ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.10/bin/../conf/zoo.cfg

datanode02.hadoop | SUCCESS | rc=0 >>
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: leader

datanode01.hadoop | SUCCESS | rc=0 >>
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower

# 再次查看状态,datanode02.hadoop 升级为 leader,datanode01.hadoop 仍为 follower

# 注意:三台 ZooKeeper Server 组成的集群,当两台故障时,整个集群失败 ( 剩余的一台无法继续提供服务 )

6、客户端连接

shell > sh bin/zkCli.sh -server 192.168.1.27:,192.168.1.28:,192.168.1.29:

# 注意:
# 客户端连接集群,只写一个地址时,当这台 Server 宕机,则客户端连接失败
# 同时写多个地址( 全写 )时,除集群失败外,不影响客户端连接
# 写多个地址时,以 , 分割,, 两边不能有空格

shell > sh bin/zkCli.sh -server 192.168.1.27:
[zk: 192.168.1.27:(CONNECTED) ] ls /
[zookeeper]

# 客户端只连接 1.27,显示只有一个默认的 znode

shell > sh bin/zkCli.sh -server 192.168.1.28:
[zk: 192.168.1.28:(CONNECTED) ] ls /
[zookeeper]
[zk: 192.168.1.28:(CONNECTED) ] create /zk 'mydata'
Created /zk
[zk: 192.168.1.28:(CONNECTED) ] ls /
[zk, zookeeper]
[zk: 192.168.1.28:(CONNECTED) ] get /zk
mydata
cZxid = 0x400000005
ctime = Thu May :: CST
mZxid = 0x400000005
mtime = Thu May :: CST
pZxid = 0x400000005
cversion =
dataVersion =
aclVersion =
ephemeralOwner = 0x0
dataLength =
numChildren =

# 新客户端连接 1.28,创建一个 znode

shell >
[zk: 192.168.1.27:(CONNECTED) ] ls /
[zk, zookeeper]
[zk: 192.168.1.27:(CONNECTED) ] get /zk
mydata
cZxid = 0x400000005
ctime = Thu May :: CST
mZxid = 0x400000005
mtime = Thu May :: CST
pZxid = 0x400000005
cversion =
dataVersion =
aclVersion =
ephemeralOwner = 0x0
dataLength =
numChildren =

# 刚才连接的 1.27,可以显示、获取这个新建的 znode

shell >
[zk: 192.168.1.27:(CONNECTED) ] set /zk 'share'
cZxid = 0x400000005
ctime = Thu May :: CST
mZxid = 0x400000006
mtime = Thu May :: CST
pZxid = 0x400000005
cversion =
dataVersion =
aclVersion =
ephemeralOwner = 0x0
dataLength =
numChildren =

# 给这个 znode 重新设置一个值

shell >
[zk: 192.168.1.28:(CONNECTED) ] get /zk
share
cZxid = 0x400000005
ctime = Thu May :: CST
mZxid = 0x400000006
mtime = Thu May :: CST
pZxid = 0x400000005
cversion =
dataVersion =
aclVersion =
ephemeralOwner = 0x0
dataLength =
numChildren =

# 连接 1.28 的客户端,也获取到了更新后的值

shell >
[zk: 192.168.1.28:(CONNECTED) ] delete /zk
[zk: 192.168.1.28:(CONNECTED) ] ls /

# 删除创建的 znode

# 实验表明:
# ZooKeeper 是任意读写的!

Apache ZooKeeper 单机、集群部署文档的更多相关文章

  1. HP DL160 Gen9服务器集群部署文档

    HP DL160 Gen9服务器集群部署文档 硬件配置=======================================================Server        Memo ...

  2. Redis集群部署文档(Ubuntu15.10系统)

    Redis集群部署文档(Ubuntu15.10系统)(要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如 ...

  3. redis多机集群部署文档

    redis多机集群部署文档(centos6.2) (要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下 ...

  4. kafka集群部署文档(转载)

    原文链接:http://www.cnblogs.com/luotianshuai/p/5206662.html Kafka初识 1.Kafka使用背景 在我们大量使用分布式数据库.分布式计算集群的时候 ...

  5. 二进制搭建一个完整的K8S集群部署文档

    服务器规划 角色 IP 组件 k8s-master1 192.168.31.63 kube-apiserver kube-controller-manager kube-scheduler etcd ...

  6. 从零开始,无DNS vcenter 6.7 vmotion热迁移,存储集群部署文档。

    1,环境准备 准备:Vmware workstation环境 IP地址段规划 ESXI主机IP地址段 192.168.197.4-192.168.197.10 Vcenter Server集群IP地址 ...

  7. Apache Hadoop 集群安装文档

    简介: Apache Hadoop 集群安装文档 软件:jdk-8u111-linux-x64.rpm.hadoop-2.8.0.tar.gz http://www.apache.org/dyn/cl ...

  8. zookeeper单机集群搭建

    1. 下载zookeeper 参考官方文档下载一节:https://zookeeper.apache.org/doc/current/zookeeperStarted.html#sc_Download ...

  9. Zookeeper+Kafka集群部署

    Zookeeper+Kafka集群部署 主机规划: 10.200.3.85  Kafka+ZooKeeper 10.200.3.86  Kafka+ZooKeeper 10.200.3.87  Kaf ...

随机推荐

  1. 009PHP文件处理——文件处理 file_get_contents file_put_contents fgetc fgets fgetss

    <?php /** * 文件处理 file_get_contents file_put_contents fgetc fgets fgetss */ //fgetc() 传入文件操作句柄.每次获 ...

  2. CF86D

    题解: 莫队分块 分块大小为sqrt(n) 代码: #include<bits/stdc++.h> using namespace std; ; typedef long long ll; ...

  3. LINUX中的RCU机制的分析

    RCU机制是Linux2.6之后提供的一种数据一致性访问的机制,从RCU(read-copy-update)的名称上看,我们就能对他的实现机制有一个大概的了解,在修改数据的时候,首先需要读取数据,然后 ...

  4. R语言rJava包安装载入及JAVA环境配置

    rJava 包的安装与载入 一般文本分词的教程都会贴出: install.packages("rJava") library(rJava) 来引导我们装载rJava包,运行inst ...

  5. Linux 需要掌握的一些命令

    详情: 1. tar 创建一个新的tar文件 $ tar cvf archive_name.tar dirname/ 解压tar文件 $ tar xvf archive_name.tar 查看tar文 ...

  6. ASP.NET CORE网站部署到 windows server 的IIS 上去

    章基于我自己经验的一个总结,在windows服务器上部署asp.net core网站.环境是 windows server 2012数据中心版本 第一步先安装 IIS 服务器 接下来就是一路下一步,然 ...

  7. winform messagebox 统一

    vb.net 里面有两种messagebox,一种是vb语言提供的msgbox,另一种是.net framework 提供的messagebox.在此统一使用messagebox. Warning,提 ...

  8. Mac触摸板没有弹性了

    关机后,同时按启动键,空格键左边的option,command键还有p和r,听到开机声音响四声后再松开.一定要同时按!然后触摸板就可以用了. (转自知乎)

  9. (转)关于fflush(stdin)清空输入缓存流(C/C++)

    来源:http://my.oschina.net/deanzhao/blog/79790 1. 为什么 fflush(stdin) 是错的?首先请看以下程序: #include <stdio.h ...

  10. php浮点数比较

    本文实例讲述了PHP中两个float(浮点数)比较方法.分享给大家供大家参考.具体如下: 最近在开发一个合同管理系统的时候,涉及到两个浮点数比较,算是把我郁闷惨了.在N久以前,就不晓得从哪里听来的一个 ...