博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
zookeeper安装
阅读量:6360 次
发布时间:2019-06-23

本文共 3151 字,大约阅读时间需要 10 分钟。

hot3.png

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一样。

转载于:https://my.oschina.net/u/1176157/blog/225580

你可能感兴趣的文章
java 通讯开发_java之接口开发-初级篇-socket通信
查看>>
java servlet ajax_javaweb中ajax请求后台servlet(实例)
查看>>
java web fileupload_javaweb 文件上传(fileupload) 下载
查看>>
java 康塔纳 牙盘_这种配置不要六千?你敢信!
查看>>
centos自带 mysql卸载不了_centos 自带mysql卸载时出现无法卸载情况
查看>>
java list转json报错_Java中的List转换成JSON报错(四)
查看>>
java查询oracle数据库_Oracle数据库之java 从Oracle数据库到处数据到Elasticsearch全文检索库进行全文查询...
查看>>
java project保存_java project 导出介绍
查看>>
杀破狼java_终于把《杀破狼》看完了
查看>>
java 执行查询_在单个语句中用Java执行多个查询
查看>>
java yml文件_yml文件内容映射到pojo
查看>>
java中scanner类_Java里Scanner 类
查看>>
java 3d文字旋转_3d多物体点旋转
查看>>
java 反射 判断是否存在_如何判断Javascript对象是否存在
查看>>
java 可变参数列表 数组_java可变参数列表如何填充数组?
查看>>
java 比较2个时间大小写_date - Java 8:计算两个LocalDateTime之间的差异
查看>>
java aop注解日志记录_springMVC自定义注解,用AOP来实现日志记录的方法
查看>>
java字符如何向float转换_java – 将float转换为字符串分数表示
查看>>
数组成员是函数java_在Laravel 5.6中调用数组上的成员函数links()
查看>>
java生成xml文件名中文乱码_jdom解决中文乱码问题 JAVA生成xml文件 | 学步园
查看>>