简介:

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. VirtualBox使用物理硬盘建立磁盘

    VirtualBox,只能用命令行来 建立磁盘才可以使用物理硬盘. 1.运行cmd,cd进入你的VirtualBox目录,如:  cd C:\Program Files\Sun\VirtualBox ...

  2. POJ 1321 棋盘问题 dfs 难度:0

    http://poj.org/problem?id=1321 注意是在'#'的地方放棋子 矩阵大小不过8*8,即使是8!的时间复杂度也足以承受,可以直接dfs求解 dfs时标注当前点的行和列已被访问, ...

  3. vscode golang插件下载

    此处是windows,linux操作类似 进行如下命令进行目录切换:cd %GOPATH%\src\github.com\golang我这里的GOPATH是在D:\go_project如果src目录下 ...

  4. java的初始化(编程思想)

    6.成员初始化 java尽量保证:所有变量在使用前都能得到恰当的初始化.对于方法的局部变量,java以编译错误的形式来贯彻这种保证. 如果类的成员变量时基本类型,那么没有初始化给默认值 在类里定义一个 ...

  5. vue.js 源代码学习笔记 ----- fillter-parse.js

    /* @flow */ export function parseFilters (exp: string): string { let inSingle = false let inDouble = ...

  6. tensorflow :ckpt模型转换为pytorch : hdf5模型

    参考链接:https://github.com/bermanmaxim/jaccardSegment/blob/master/ckpt_to_dd.py import tensorflow as tf ...

  7. tf.device()指定tensorflow运行的GPU或CPU设备

    在tensorflow中,我们可以使用 tf.device() 指定模型运行的具体设备,可以指定运行在GPU还是CUP上,以及哪块GPU上. 设置使用GPU 使用 tf.device('/gpu:1' ...

  8. layers框架

  9. 用yum安装lamp和lnmp环境

    LAMP: 1.首先安装Apache和mysql: yum install -y httpd mysql mysql-server mysql-devel 2.启动httpd和mysqld: serv ...

  10. [UOJ300][CTSC2017]吉夫特

    uoj bzoj luogu sol 根据\(Lucas\)定理,\(\binom nm \mod 2=\binom{n\%2}{m\%2}\times\binom{n/2}{m/2}\mod 2\) ...