zookeeper安装

zookeeper的安装

ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户

Zookeeper 会维护一个具有层次关系的数据结构,它非常类似于一个标准的文件系统,如图 1 所示:

图 1 Zookeeper 数据结构

图 1 Zookeeper 数据结构

Zookeeper 这种数据结构有如下这些特点:

  1. 每个子目录项如 NameService 都被称作为 znode,这个 znode 是被它所在的路径唯一标识,如 Server1 这个 znode 的标识为 /NameService/Server1

  2. znode 可以有子节点目录,并且每个 znode 可以存储数据,注意 EPHEMERAL 类型的目录节点不能有子节点目录

  3. znode 是有版本的,每个 znode 中存储的数据可以有多个版本,也就是一个访问路径中可以存储多份数据

  4. znode 可以是临时节点,一旦创建这个 znode 的客户端与服务器失去联系,这个 znode 也将自动删除,Zookeeper 的客户端和服务器通信采用长连接方式,每个客户端和服务器通过心跳来保持连接,这个连接状态称为 session,如果 znode 是临时节点,这个 session 失效,znode 也就删除了

  5. znode 的目录名可以自动编号,如 App1 已经存在,再创建的话,将会自动命名为 App2

  6. znode 可以被监控,包括这个目录节点中存储的数据的修改,子节点目录的变化等,一旦变化可以通知设置监控的客户端,这个是 Zookeeper 的核心特性,Zookeeper 的很多功能都是基于这个特性实现的,后面在典型的应用场景中会有实例介绍


关于zookeeper的详细信息可以查看http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/

#首先要建立zookeeper的安装目录,并赋予权限
[root@server2 hadoop]# mkdir  /usr/local/zookeeper/
[root@server2 hadoop]# chown -R hadoop.hadoop /usr/local/zookeeper/
[hadoop@server2 zookeeper]$ tar -zxvf zookeeper-3.4.5.tar.gz -C /usr/local/zookeeper/

下来就是zookeeper的配置

#首先的java环境的配置
[hadoop@server2 zookeeper-3.4.5]$ vim conf/zookeeper-env.sh #创建此文件
    export JAVA_HOME=/usr/local/jdk
[hadoop@server2 conf]$ cp zoo_sample.cfg zoo.cfg#生成zookeeper的主配置文件
[hadoop@server2 conf]$ vim zoo.cfg
    # example sakes.
    dataDir=/usr/local/zookeeper/zookeeper-3.4.5/zookeeper-data #zookeeper存储数据位置
    # the port at which the clients will connect
    clientPort=2181
    #
    # 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
    #autopurge.purgeInterval=1
    
    #2888,3888 are election port
    server.1=192.168.122.2:2888:3888 #设置仲裁团节点
#同时需要在$dataDir创建myid文件,写入仲裁节点的id,我这里使用的是单节点,所有就是1
[hadoop@server2 zookeeper-3.4.5]$ mkdir /usr/local/zookeeper/zookeeper-3.4.5/zookeeper#数据存放位置
[hadoop@server2 zookeeper-3.4.5]$ vim zookeeper-data/myid#将1写入

这样zookeeper单机运行已经搭建OK,现在我们启动和一些测试

[hadoop@server2 zookeeper-3.4.5]$ bin/zkServer.sh start#启动zookeeper
[hadoop@server2 zookeeper-3.4.5]$ bin/zkCli.sh -server 192.168.122.2:2181#进行链接
#以下为一些简单操作
    [zk: 192.168.122.2:2181(CONNECTED) 0] 
    [zk: 192.168.122.2:2181(CONNECTED) 0] ls /
    [hbase, zookeeper]
    [zk: 192.168.122.2:2181(CONNECTED) 1] quit
    Quitting...
    2014-04-23 17:01:37,412 [myid:] - INFO  [main:ZooKeeper@684] - Session: 0x1458c3b85730228 closed
    2014-04-23 17:01:37,414 [myid:] - INFO  [main-EventThread:ClientCnxn$EventThread@509] - EventThread shut down
[hadoop@server2 zookeeper-3.4.5]$ bin/zkServer.sh stop#关闭zookeeper

那么具体需要运行几个ZooKeeper?

    你运行一个zookeeper也是可以的,但是在生产环境中,你最好部署3,5,7个节点。部署的越多,可靠性就越 高,当然最好是部署奇数个,偶数个不是不可以的,但是zookeeper集群是以宕机个数过半才会让整个集群宕机的,所以奇数个集群更佳。你需要给每个 zookeeper 1G左右的内存,如果可能的话,最好有独立的磁盘。 (独立磁盘可以确保zookeeper是高性能的。).如果你的集群负载很重,不要把Zookeeper和RegionServer运行在同一台机器上 面。就像DataNodes 和 TaskTrackers一样。


你可能感兴趣的:(zookeeper安装)