zoukankan      html  css  js  c++  java
  • 【先定一个小目标】Ubuntu 16.04 搭建 zookeeper

    ZooKeeper 是 Apache 的一个顶级项目,为分布式应用提供高效、高可用的分布式协调服务,提供了诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知和分布式锁等分布式基础服务。由于 ZooKeeper 便捷的使用方式、卓越的性能和良好的稳定性,被广泛地应用于诸如 Hadoop、HBase、Kafka 和 Dubbo 等大型分布式系统中。

    一、运行模式

    Zookeeper 有三种运行模式:单机模式、伪集群模式和集群模式。

    1、 单机模式

    这种模式一般适用于开发测试环境,一方面我们没有那么多机器资源,另外就是平时的开发调试并不需要极好的稳定性。

    在 Linux 环境下运行单机模式需要执行以下步骤:

    1). 准备 Java 运行环境

    安装 Java 1.6 或更高版本的 JDK,并配置好 Java 相关的环境变量 $JAVA_HOME 

    sudo apt-get install default-jdk

    2). 下载 ZooKeeper 安装包

    下载地址:http://zookeeper.apache.org/releases.html。选择最新的 stable 版本并解压到指定目录,我们用 $ZK_HOME 表示该目录。

    命令安装Zookeeper

    cd /home/tomny/zookeeper
    sudo wget http://mirror.bjtu.edu.cn/apache/zookeeper/stable/zookeeper-3.4.9.tar.gz #下载zookeeper
    tar xvzf zookeeper-3.4.9.tar.gz #解压
    ln -s zookeeper-3.4.9 zookeeper #建立软链接

    编辑/etc/profile 设置环境变量

    # zookeeper配置
    export ZOOKEEPER_INSTALL=/home/hadoop/zookeeper-3.3.5
    export PATH=$PATH:$ZOOKEEPER_INSTALL/bin

    3). 配置 zoo.cfg

    首次使用 ZooKeeper,需要将 $ZK_HOME 下的 zoo_sample.cfg 文件重命名为 zoo.cfg,并进行以下配置

    tickTime=2000    ##Zookeeper最小时间单元,单位毫秒(ms),默认值为3000
    dataDir=/home/tommy/zookeeper-3.4.9/data    ##Zookeeper服务器存储快照文件的目录,必须配置
    dataLogDir=/home/tomny/zookeeper-3.4.9/log     ##Zookeeper服务器存储事务日志的目录,默认为dataDir
    clientPort=2181    ##服务器对外服务端口,一般设置为2181
    initLimit=5    ##Leader服务器等待Follower启动并完成数据同步的时间,默认值10,表示tickTime的10倍
    syncLimit=2    ##Leader服务器和Follower之间进行心跳检测的最大延时时间,默认值5,表示tickTime的5倍

    4). 启动服务

    使用 $ZK_HOME/bin 目录下的 zkServer.sh 脚本进行服务的启动。

    cd /home/tomny/zookeeper-3.4.9/
    bin/zkServer.sh start
    bin/zkCli.sh -server localhost:2181

    在查看zookeeper状态时遇到

    tomny@tomny-virtual-machine:~/zookeeper-3.4.9$ bin/zkServer.sh status
    ZooKeeper JMX enabled by default
    Using config: /home/tomny/zookeeper-3.4.9/bin/../conf/zoo.cfg
    Error contacting service. It is probably not running.

    分析方法:

    先stop 掉原zk

    zkServer.sh stop

    然后以start-foreground方式启动,会看到启动日志

    zkServer.sh start-foreground
    tomny@tomny-virtual-machine:~/zookeeper-3.4.9$ bin/zkServer.sh status
    ZooKeeper JMX enabled by default
    Using config: /home/tomny/zookeeper-3.4.9/bin/../conf/zoo.cfg
    Mode: standalone

    5)、连接zookeeper

    bin/zkCli.sh -server localhost:2181
    Connecting to localhost:2181
    以下省略1W字。。
    WatchedEvent state:SyncConnected type:None path:null
    [zk: localhost:2181(CONNECTED) 0]

    6)、键入help查看所有支持的命令

    [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

    2、常用命令

    1)查看当前节点列表

    [zk: localhost:2181(CONNECTED) 1] ls /
    
    [zookeeper]

    2)创建节点

    [zk: localhost:2181(CONNECTED) 2] create /test "test"
    
    Created /test
    
    [zk: localhost:2181(CONNECTED) 3] ls /
    
    [zookeeper, test]

    3)查看节点数据

    [zk: localhost:2181(CONNECTED) 4] get /test
    
    "test"
    
    cZxid = 0x300000007
    
    ctime = Thu Sep 24 05:54:51 PDT 2015
    
    mZxid = 0x300000007
    
    mtime = Thu Sep 24 05:54:51 PDT 2015
    
    pZxid = 0x300000007
    
    cversion = 0
    
    dataVersion = 0
    
    aclVersion = 0
    
    ephemeralOwner = 0x0
    
    dataLength = 6
    
    numChildren = 0

    4)设置节点数据

    [zk: localhost:2181(CONNECTED) 7] set /test "111111" 
    
    cZxid = 0x300000007
    
    ctime = Thu Sep 24 05:54:51 PDT 2015
    
    mZxid = 0x300000008
    
    mtime = Thu Sep 24 05:57:40 PDT 2015
    
    pZxid = 0x300000007
    
    cversion = 0
    
    dataVersion = 1
    
    aclVersion = 0
    
    ephemeralOwner = 0x0
    
    dataLength = 8
    
    numChildren = 0
    
    [zk: localhost:2181(CONNECTED) 8] get /test
    
    "111111"
    
    cZxid = 0x300000007
    
    ctime = Thu Sep 24 05:54:51 PDT 2015
    
    mZxid = 0x300000008
    
    mtime = Thu Sep 24 05:57:40 PDT 2015
    
    pZxid = 0x300000007
    
    cversion = 0
    
    dataVersion = 1
    
    aclVersion = 0
    
    ephemeralOwner = 0x0
    
    dataLength = 8
    
    numChildren = 0

    5)删除节点

    [zk: localhost:2181(CONNECTED) 9] delete /test
    
    [zk: localhost:2181(CONNECTED) 10] ls /
    
    [zookeeper]

    3、zookeeper四字命令的使用

    传递四个字母的字符串给zookeeper,zookeeper会返回一些有用的信息。

    zookeeper

    四字命令

    功能描述

    conf

    输出相关服务配置的详细信息。

    cons

    列出所有连接到服务器的客户端的完全的连接 /会话的详细信息。包括“接受 / 发送”的包数量、会话 id 、操作延迟、最后的操作执行等等信息。

    dump

    列出未经处理的会话和临时节点。

    envi

    输出关于服务环境的详细信息(区别于 conf命令)。

    reqs

    列出未经处理的请求

    ruok

    测试服务是否处于正确状态。如果确实如此,那么服务返回“imok ”,否则不做任何相应。

    stat

    输出关于性能和连接的客户端的列表。

    wchs

    列出服务器 watch的详细信息。

    wchc

    通过 session列出服务器 watch的详细信息,它的输出是一个与watch相关的会话的列表。

    wchp

    通过路径列出服务器 watch的详细信息。它输出一个与 session相关的路径。

  • 相关阅读:
    把一元可以分解成几个1毛,2毛,5毛?
    记录集导出到Excel方法
    MySQL数据库加密与解密:
    运行时错误'430': 类不支持自动化或不支持期望的接口。New ADODB.Connection问题
    instrrev 和instr 区别vb
    解决用 VB 中用 ADO 访问 数据库时 SQL 查询处理 Null 值的问题( 使用 iff(isNull(字段), 为空时的值,不为空时的值) 来处理)
    Mysql SQL CAST()函数
    MySQL CAST与CONVERT 函数的用法
    一些网页链接
    git上传时出现ERROR: Repository not found.的解决办法
  • 原文地址:https://www.cnblogs.com/CrazyAnts/p/6406060.html
Copyright © 2011-2022 走看看