单机安装ZooKeeper

zookeeper下载、安装以及配置环境变量

本节介绍单机的zookeeper安装,官方下载地址如下:

https://archive.apache.org/dist/zookeeper/

我这里使用的是3.4.11版本,所以找到相应的版本点击进去,复制到.tar.gz的下载链接到Linux上进行下载。命令如下:

[[email protected] ~]# cd /usr/local/src/
[[email protected] /usr/local/src]# wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz

下载完成之后将其解压到/usr/local/目录下:

[[email protected] /usr/local/src]# tar -zxvf zookeeper-3.4.11.tar.gz -C /usr/local/
[[email protected] /usr/local/src]# cd ../zookeeper-3.4.11/
[[email protected] /usr/local/zookeeper-3.4.11]# ls
bin        dist-maven       lib          README_packaging.txt  zookeeper-3.4.11.jar.asc
build.xml  docs             LICENSE.txt  recipes               zookeeper-3.4.11.jar.md5
conf       ivysettings.xml  NOTICE.txt   src                   zookeeper-3.4.11.jar.sha1
contrib    ivy.xml          README.md    zookeeper-3.4.11.jar
[[email protected] /usr/local/zookeeper-3.4.11]#

安装完成之后,我们就可以配置环境变量了。如下:

[[email protected] ~]# vim ./.bash_profile  # 增加内容如下
export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.11/
export PATH=$PATH:$ZOOKEEPER_HOME/bin
[[email protected] ~]# source ./.bash_profile

zookeeper文件夹主要目录介绍

  • bin:存放主要的一些常用目录
  • conf:存放配置文件,一会我们需要修改zoo.cfg配置文件
  • contrib:附加的一些功能
  • dist-maven:mvn编译后的目录
  • docs:存放帮助文档文件
  • lib:需要依赖的jar包
  • recipes:官方提供的案例demo代码
  • src:源码

zookeeper配置文件介绍,运行zk

进入conf目录,拷贝官方提供的模板配置文件,然后进行编辑:

[[email protected] /usr/local/zookeeper-3.4.11]# cd conf/
[[email protected] /usr/local/zookeeper-3.4.11/conf]# cp zoo_sample.cfg zoo.cfg
[[email protected] /usr/local/zookeeper-3.4.11/conf]# vim zoo.cfg  # 配置内容如下
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper-3.4.11/dataDir
dataLogDir=/usr/local/zookeeper-3.4.11/dataLogDir
clientPort=2181
[[email protected] /usr/local/zookeeper-3.4.11/conf]# cd ../
[[email protected] /usr/local/zookeeper-3.4.11]# mkdir {dataDir,dataLogDir}

zoo.cfg配置:

  • tickTime:用于计算的时间单元。比如session超时:N * tickTime
  • initLimit:用于集群,允许从节点连接并同步到master节点的初始化连接时间,以tickTime的倍数来表示
  • syncLimit:用于集群,master主节点与从节点之间发送消息,请求和应答时间长度(心跳包机制)
  • dataDir:必须配置,数据文件所存放的目录
  • dataLogDir:日志目录,如果不配置就和dataDir共用同一个目录
  • clientPort:连接服务器的端口,默认为2181

以上我们就完成了单机的zookeeper安装与配置,接下来我们尝试启动一下zookeeper服务:

[[email protected] ~]# zkServer.sh start  # 启动zookeeper服务
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.11/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[[email protected] ~]# netstat -lntp | grep java  # 检查端口是否有正常监听
tcp6       0      0 :::58056                :::*                    LISTEN      3057/java
tcp6       0      0 :::2181                 :::*                    LISTEN      3057/java
[[email protected] ~]# zkServer.sh status  # 查看zookeeper服务状态
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.11/bin/../conf/zoo.cfg
Mode: standalone
[[email protected] ~]# ps aux |grep java  # 检查服务进程
root       3057  0.9  0.9 5230652 79840 pts/0   Sl   04:26   0:01 /usr/local/jdk1.8/bin/java -Dzookeeper.log.dir=. -Dzookeeper.root.logger=INFO,CONSOLE -cp /usr/local/zookeeper-3.4.11/bin/../build/classes:/usr/local/zookeeper-3.4.11/bin/../build/lib/*.jar:/usr/local/zookeeper-3.4.11/bin/../lib/slf4j-log4j12-1.6.1.jar:/usr/local/zookeeper-3.4.11/bin/../lib/slf4j-api-1.6.1.jar:/usr/local/zookeeper-3.4.11/bin/../lib/netty-3.10.5.Final.jar:/usr/local/zookeeper-3.4.11/bin/../lib/log4j-1.2.16.jar:/usr/local/zookeeper-3.4.11/bin/../lib/jline-0.9.94.jar:/usr/local/zookeeper-3.4.11/bin/../lib/audience-annotations-0.5.0.jar:/usr/local/zookeeper-3.4.11/bin/../zookeeper-3.4.11.jar:/usr/local/zookeeper-3.4.11/bin/../src/java/lib/*.jar:/usr/local/zookeeper-3.4.11/bin/../conf: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false org.apache.zookeeper.server.quorum.QuorumPeerMain /usr/local/zookeeper-3.4.11/bin/../conf/zoo.cfg
root       3146  0.0  0.0 112680   976 pts/0    S+   04:29   0:00 grep --color=auto java
[[email protected] ~]# 

然后再关闭zookeeper服务:

[[email protected] ~]# zkServer.sh stop
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.11/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
[[email protected] ~]# 

能够正常开/关后,就代表我们的zookeeper成功安装好了。


zk数据模型介绍

zookeeper基本数据模型:

  • 基本数据模型是一个树形结构,类似于前端开发中的tree.js组件。或者像一个网站的目录结构:
  • zk的数据模型也可以理解为linux/unix的文件目录,如:/usr/local/...。如下图:
  • 每一个节点都称之为znode,它可以有子节点,也可以有数据
  • 每个节点分为临时节点和永久节点,临时节点在客户端断开后就会消失
  • 每个zk节点都有各自的版本号,可以通过命令行来显示节点信息
  • 每当节点数据发生变化,那么该节点的版本号会累加(乐观锁)
  • 删除/修改过时的节点,版本号不匹配则会报错
  • 每个zk节点存储的数据不宜过大,几k即可
  • 节点可以设置权限acl,可以通过权限来控制用户访问

zk客户端连接关闭服务端,查看znode

启动zk服务端:

[[email protected] ~]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.11/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[[email protected] ~]# 

启动zk客户端连接:

[[email protected] ~]# zkCli.sh

查看可以使用哪些命令:

[zk: localhost:2181(CONNECTED) 0] help
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
[zk: localhost:2181(CONNECTED) 1]

查看znode,十分类似于在Linux下查看目录的操作:

[zk: localhost:2181(CONNECTED) 2] ls /  # 根节点
[zookeeper]
[zk: localhost:2181(CONNECTED) 3] ls /zookeeper  # 父节点
[quota]
[zk: localhost:2181(CONNECTED) 4] ls /zookeeper/quota  # 子节点
[]
[zk: localhost:2181(CONNECTED) 5]

关闭zk客户端连接:

[zk: localhost:2181(CONNECTED) 5] quit  # 退出
Quitting...
2018-04-21 17:48:35,534 [myid:] - INFO  [main:[email protected]] - Session: 0x1000034ed8d0000 closed
2018-04-21 17:48:35,536 [myid:] - INFO  [main-EventThread:[email protected]] - EventThread shut down for session: 0x1000034ed8d0000
[[email protected] ~]#

zookeeper的作用体现

  • master节点选举,主节点挂了以后,从节点就会接手工作,并且保证这个节点是唯一的,这也是所谓的首脑模式,从而保证我们的集群是高可用的。
  • 统一配置文件管理,即只需要部署一台服务器,则可以把相同的配置文件同步更新到其他所有服务器,此操作在云计算中用的特别多(假设某一台机器修改了redis配置文件,就可以同步更新到其他机器上)
  • 发布与订阅,类似消息队列MQ(amq,rmq...),dubbo发布者把数据存在znode上,订阅者会读取这个数据。
  • 提供分布式锁,分布式环境中也会有不同进程之间争夺资源,这时候就需要锁机制来保证数据的一致性,类似于多线程中的锁。例如下图中这种多个服务器访问同一个文件时,就需要分布式锁来让他们进行排队访问:
  • 集群管理,集群中保证数据的强一致性。能够让客户端访问集群中任意一个服务器时,保证访问到的数据都是一致的:

原文地址:http://blog.51cto.com/zero01/2106042

时间: 2024-10-18 02:46:46

单机安装ZooKeeper的相关文章

centos单机安装zookeeper+kafaka

环境如下: CentOS-7-x86_64zookeeper-3.4.11kafka_2.12-1.1.0 一.zookeeper下载与安装1)下载zookeeper [[email protected] opt]# cd /opt/ [[email protected] opt]# wget https://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz 2)解压 [[email protec

1.1 Zookeeper单机安装

zookeeper 单机安装配置 1.安装前准备 linux系统(此文环境为Centos6.5) Zookeeper安装包,官网https://zookeeper.apache.org/,演示版本zookeeper-3.4.7.tar.gz 2.解压:tar -zxvf zookeeper-3.4.7.tar.gz 3.修改配置文件 cd zookeeper-3.4.7/conf cp zoo_sample.cfg zoo.cfg 复制模板配置文件为zoo.cfg vim zoo.cfg 修改配

Centos6.5 storm单机安装

Centos6.5 storm单机安装 本篇幅讲述Twitter Storm安装配置,也作为自己的笔记. storm的官方安装说明(e文):https://github.com/nathanmarz/storm/wiki/Setting-up-a-Storm-cluster storm的安装分为单机版和集群版,只是配置稍微有点区别,大致一样. 要使用storm首先要安装以下工具: python.zookeeper.zeromq.jzmq.storm 第一步,安装Python2.7.2 wget

linux下安装zookeeper(单机版)

Zookeeper 分布式服务框架是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管理等.本文主要从使用者角度来介绍一下Zookeeper的安装,配置及应用. 单机模式 Zookeeper可以单机安装,这种应用模式主要用在测试或demo的情况下,在生产环境下一般不会采用. 1. 首先可以从Zookeeper的官方网站下载最新的安装包: http://www.apache.org/dist/zookeeper/ 2.上传刚下载的zook

linux下安装zookeeper(集群版)

在linux下安装zookeeper(单机版)中已经介绍了如何在linux中搭建单机版本的zookeeper,本篇将基于上一篇的基础上继续搭建集群版的zookeeper. 在原来的基础上再准备两台虚拟机: 我的虚拟机ip分别是:192.168.174.132,192.168.174.130,192.168.174.131 对应的hostname分别是:master,slave1,slave2 hostname可自行查看和修改:http://jingyan.baidu.com/article/57

centos6.8单机安装HBase

hadoop生态系统 HBase简介–HBase–HadoopDatabase,是一个高可靠性.高性能.面向列.可伸缩.实时读写的分布式数据库–利用HadoopHDFS作为其文件存储系统,利用HadoopMapReduce来处理HBase中的海量数据,利用Zookeeper作为其分布式协同服务 (1)安装的前提条件 此安装是在阿里云服务器上安装的,且java环境已经配好,hadoop和zookeeper都已经安装好并成功启动 (2)下载hbase-1.1.3-bin.tar.gz,上传并解压 进

kafka本地单机安装部署

kafka是一种高吞吐量的分布式发布订阅消息系统,这几天要上kafka,只在其中的一个节点使用,结合具体的项目实践在此将kafka的本地安装部署流程记录下来与各位同仁分享交流. 准备工作: 上述的文件除了jdk以外均放在/usr/local/kafka目录下. 1.安装jdk,kafka的使用要用到jdk 首先检查有无jdk:java -version cd /usr/local/hadoop(本例中我是将jdk的安装包放到hadoop文件夹下,各位可以依据自己情况) http://www.or

Linux下Kafka单机安装配置方法(图文)

Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计.这个独特的设计是什么样的呢 介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计.这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统术语: •Kafka将消息以topic为单位进行归纳.•将向Kafka topic发布消息的程序成为producers.•将预订topics并消费消息的程序成为consumer.•Kafka以集群的

redis的单机安装与配置以及生产环境启动方案

简单介绍一下redis的单机安装与配置,方便自己记录安装步骤的同时方便他人获取知识. 首先,从官网下载最新版的(稳定版)的redis安装包.官网地址如下:https://redis.io/download 下载源码包后,redis需要编译安装.需要安装gcc和tcl,gcc用于编译tcl用于测试. 使用命令安装gcc,yum install gcc,一路选择yes,gcc就可以安装成功. 接下来安装tcl,首先获取tcl源码包(见百度云盘)或者使用命令:wget http://downloads