zoukankan      html  css  js  c++  java
  • Linux下zoopkeeper的安装和启动

    Linux下zoopkeeper的安装和启动

    1.什么是zookeeper

    1. ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。  
    2. ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
    3. ZooKeeper包含一个简单的原语集,提供Java和C的接口。
    4. ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在zookeeper-3
    5. 4.8src ecipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本。
    6. zookeeper 是Hadoop的master角色的单点故障问题的主要

    Zookeeper的ZAB协议和Paxos协议

    • 二阶段提交和三阶段提交协议和Paxos协议都是分布式应用程序的通用协议,即在大部分的分布式应用程序中都可以使用。ZAB(zookeeper
      Atomic
      Broadcast)zookeeper原子消息广播协议)协议是zookeeper设计之初专门为雅虎内部那些高吞吐量、低延迟、健壮、简单的分布式场景设计的。所以ZAB不是一种通用型算法,而是一种特别为zookeeper设计的崩溃可恢复的原子消息广播算法。ZAB算法可是看成是paxos协议的一种具体实现,理解Paxos协议较为困难,我们不做掌握。
    • Zookeeper中将自己的角色系统设置主要为Leader、Flower、OBServer。Leader和Flower都是zk的server,只不过由Leader(只会存在一个,类似于Hadoop的NameNode)对外提供服务,众多Flower(类似于secondary
      namenode,不过Flow会有多个)随时准备等Leader出现问题时选举出一个新leader来继续对外提供以保证zk服务的高可用。

    Zookeeper集群中的机器数量设置

    Zookeeper为了防止出现二阶段和三阶段提交协议中出现的数据不一致的情况(例如:网络出现问题,可能会将zk集群分成多个小集群),规定了只有zk集群中半数以上的server存活时才能对外提供服务。所以我们一般安装zk集群时,一般设置为奇数台zk的server。

    假如,我们的zk集群有6个server,那么我们最多允许有两个server挂掉zk集群还能继续对外提供服务。但是如果我们的zk集群有5个server的话,我们同样最多允许有两个server挂掉也能继续提供服务。所以一般zk集群安装时server的数量是奇数个。

    数据节点(Znode)

    这里写图片描述

    一,下载并解压 ##:

    下载地址:https://mirrors.cnnic.cn/apache/zookeeper/
    zookeeper要求java运行环境:详情如

    https://blog.csdn.net/meiLin_Ya/article/details/80650945

    解压:

     tar zxvf zookeeper-3.4.11.tar.gz -C /usr/local/

    修改配置文件
    1.将配置文件zoo_sample改名为cfg zoo.cfg

    cp zoo_sample.cfg zoo.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/local/zookeeper-3.4.7/data
    # the port at which the clients will connect
    clientPort=2181
    # the maximum number of client connections.
    # increase this if you need to handle more clients
    #maxClientCnxns=60
    #
    # 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
    dataLogDir=/usr/local/zookeeper-3.4.7/log
    #autopurge.purgeInterval=1
    server.11=hu-hadoop1:2888:3888
    server.12=hu-hadoop2:2888:3888
    server.13=hu-hadoop3:2888:3888
     tickTime:时长单位为毫秒,为zk使用的基本时间度量单位。例如,1 
     tickTime是客户端与zk服务端的心跳时间,2 
     tickTime是客户端会话的超时时间。tickTime的默认值为2000毫秒,更低的tickTime值可以更快地发现超时问题,但也会导致更高的网络流量(心跳消息)和更高的CPU使用率(会话的跟踪处理)。
     clientPort:zk服务进程监听的TCP端口,默认情况下,服务端会监听2181端口。
     dataDir:无默认配置,必须配置,用于配置存储快照文件的目录。如果没有配置dataLogDir,那么事务日志也会存储在此目录。
    

    创建相应得目录,存放日志文件

    dataDir=/usr/local/zookeeper-3.4.11/data  
    dataLogDir=/usr/local/zookeeper-3.4.11/log  

    记得创建那两个文件夹。。。。完成后将在data下创建一个文本 必须叫myid 里面填写的是你的zookeeper中的主机唯一标识。
    这里写图片描述
    而你的zookeeper在zoo.cfg中配置。

    配置环境:

    vi /ext/profile
    export JAVA_HOME=/home/bigdata/jdk1.7.0_79
    export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.7
    export HADOOP_HOME=/home/bigdata/hadoop-2.6.0
    
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:
    
    export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin:
    

    修改日志文件打印的地方

    这里写图片描述

    if [ "x${ZOO_LOG_DIR}" = "x" ]
    then
        ZOO_LOG_DIR="$ZOOBINDIR/../log"
    fi
    
    if [ "x${ZOO_LOG4J_PROP}" = "x" ]
    then
        ZOO_LOG4J_PROP="INFO,ROLLINGFILE"
    fi

    这里写图片描述

    zookeeper.root.logger=INFO, ROLLINGFILE
    log4j.appender.ROLLINGFILE=org.apache.log4j.DailyRollingFileAppender

    改为—每天一个log日志文件,而不是在同一个log文件中递增日志

    日志输出为:

    [root@hu-hadoop1 conf]# ls
    configuration.xsl  log4j.properties  zoo.cfg
    [root@hu-hadoop1 conf]# ll
    total 12
    -rw-rw-r--. 1 1000 1000  535 Nov 11  2015 configuration.xsl
    -rw-rw-r--. 1 1000 1000 2326 Jun 11 15:08 log4j.properties
    -rw-r--r--. 1 root root 1073 Jun 11 13:15 zoo.cfg
    [root@hu-hadoop1 conf]# 
    

    完成后记得把数据同步到其他主机。。。。。。。

    同步后记得要修改/etc/local/zookeeper/data/myid 里面是主机唯一标识 。如我上面的11,12,13

    启动zookeeper:

    启动第一台:

    zkServer.sh start
    
    [root@hu-hadoop3 conf]# zkServer.sh start
    ZooKeeper JMX enabled by default
    Using config: /usr/local/zookeeper-3.4.7/bin/../conf/zoo.cfg
    Starting zookeeper ... STARTED
    

    查看状态:

    zkServer.sh status
    
    [root@hu-hadoop3 conf]# zkServer.sh status
    ZooKeeper JMX enabled by default
    Using config: /usr/local/zookeeper-3.4.7/bin/../conf/zoo.cfg
    Error contacting service. It is probably not running.
    

    这样是正确的。因为zookeeper最少安装2个以上有详细解释。再启动一台
    启动后查看状态:

    [root@hu-hadoop2 data]# zkServer.sh status
    ZooKeeper JMX enabled by default
    Using config: /usr/local/zookeeper-3.4.7/bin/../conf/zoo.cfg
    Mode: follower
    

    然后再返回了看上一个状态:

    [root@hu-hadoop3 conf]# zkServer.sh status
    ZooKeeper JMX enabled by default
    Using config: /usr/local/zookeeper-3.4.7/bin/../conf/zoo.cfg
    Mode: leader
    

    然后再启动另一条:我这里配了3台

    [root@hu-hadoop1 conf]# zkServer.sh status
    ZooKeeper JMX enabled by default
    Using config: /usr/local/zookeeper-3.4.7/bin/../conf/zoo.cfg
    Mode: follower
    

    这里的leader是随机的不是固定的。
    肯用到的命令:
    停止一个zookeeper:

    zkService.sh stop

    zkCli.sh:

    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]
  • 相关阅读:
    Changing Icon File Of Push Button At Runtime In Oracle Forms 6i
    Set Font Properties On Mouse Hover Of Push Button And Text Items At Run time In Oracle Forms
    Change An Item Property Using Set_Item_Property In Oracle Forms
    Calling / Running a report in Oracle forms 10g / 11g
    Change Or Set Report Object Property At Run Time In Oracle Forms Using Set_Report_Object_Property Command
    Refresh / Updating a form screen in Oracle D2k Forms 6i
    Know How And When To Use System.Message_Level To Control Messages In Oracle Forms
    Perform Cut Copy Paste Operations Using Cut_Region Copy_Region Paste_Region Commands In Oracle Forms
    CHECKBOX_CHECKED built-in in Oracle D2k Forms
    Limiting To Select Only 5 Check Boxes Out Of Ten In Oracle Forms
  • 原文地址:https://www.cnblogs.com/meiLinYa/p/9350062.html
Copyright © 2011-2022 走看看