zookeeper

Zookeeper

网站:hadoop.apache.org

Storm (速度最快),spark ,yarn三个分布式计算框架

Zookeeper中有80%是读取数据,20%是写入数据

下载地址:http://zookeeper.apache.org/,其中的alphabeta都是不稳定版,下载成功解压后找到bin目录,其中的zkServer.cmdzkCli.cmd分别是电脑版的服务端与客户端,双击可能运行不成功,因为没有配置文件,在conf目录下有个zoo_sample.cfg文件,将它拷贝一份并改名为zoo.cfg,再次双击其中的服务端,即可成功。

详解配置文件:

tickTimezk中的一个时间单位,心跳的时间间隔

initLimit=10:初始化同步数据花费的时间,10tickTime

syncLimit=5leaderfollower相互发送心跳检测对方失效的时间间隔,5tickTime

clientPort=2181:端口

dataDir:数据文件的储存位置,默认存在磁盘

maxClientCnxns=60:最大的客户端连接

Zk保证高可用的原理:

Zookeeper是一个数据库,是一个使用树状结构存储结构的数据库,可以拥有高可用的集群,机器分为两种角色leader+followerLeader负责写入,follower负责分担读的压力,一个集群只有一个leader通过选举算法来实现,必须确保机器个数为2n+1个,集群中的所有机器都参与选举,票数最高的机器成为leaderleader写入的数据通过paxos算法,将所有数据同步。

Zookeeper的结构:

树结构包含多个znode每个节点都可以有一个值和多个节点,根节点是“/

Zookeeper有三种znode

1:永久节点 数据被持久化 用户不调用删除 不会删除

2:临时节点 客户端连接时才保留数据,客户端断开数据被删除 注册中心master/slave

3:顺序节点 用于抢票和秒杀,它有分布式主键,

 

具体命令(在windows下)

可以在doc下操作,也可以在zk的客户端下操作

zkCli -server ip:端口    连接zk的服务端,在doc下(前提是在path下配置了zkhome

1. 显示根目录下、文件: ls / 使用 ls 命令来查看当前 ZooKeeper 中所包含的内容

2. 显示根目录下、文件: ls2 / 查看当前节点数据并能看到更新次数等数据

3. 创建文件,并设置初始内容: create /zk "test" 创建一个新的 znode节点“ zk ”以及与它关联的字符串

-s 创建一个顺序节点    -e创建一个临时节点

4. 获取文件内容: get /zk 确认 znode 是否包含我们所创建的字符串

5. 修改文件内容: set /zk "zkbak" zk 所关联的字符串进行设置

6. 删除文件: delete /zk 将刚才创建的 znode 删除

7. 退出客户端: quit

8. 帮助命令: help

Zookeeper常用四字命令:

   ZooKeeper 支持某些特定的四字命令字母与其的交互。它们大多是查询命令,用来获取 ZooKeeper 服务的当前状态及相关信息。用户在客户端可以通过 telnet nc ZooKeeper 提交相应的命令

1. 可以通过命令:echo stat|nc 127.0.0.1 2181 来查看哪个节点被选择作为follower或者leader

2. 使用echo ruok|nc 127.0.0.1 2181 测试是否启动了该Server,若回复imok表示已经启动。

3. echo dump| nc 127.0.0.1 2181 ,列出未经处理的会话和临时节点。

4. echo kill | nc 127.0.0.1 2181 ,关掉server

5. echo conf | nc 127.0.0.1 2181 ,输出相关服务配置的详细信息。

6. echo cons | nc 127.0.0.1 2181 ,列出所有连接到服务器的客户端的完全的连接 / 会话的详细信息。

7. echo envi |nc 127.0.0.1 2181 ,输出关于服务环境的详细信息(区别于 conf 命令)。

8. echo reqs | nc 127.0.0.1 2181 ,列出未经处理的请求。

9. echo wchs | nc 127.0.0.1 2181 ,列出服务器 watch 的详细信息。

10. echo wchc | nc 127.0.0.1 2181 ,通过 session 列出服务器 watch 的详细信息,它的输出是一个与 watch 相关的会话的列表。

11. echo wchp | nc 127.0.0.1 2181 ,通过路径列出服务器 watch 的详细信息。它输出一个与 session 相关的路径。

 

eclipse中安装zookeeper的插件

eclipse插件更新地址:http://www.massedynamic.org/eclipse/updates/ 

eclipse中的玩法:

先加依赖(maven中):

    <dependency>

  <groupId>com.101tec</groupId>

  <artifactId>zkclient</artifactId>

  <version>0.10</version>

</dependency>

其次创建一个连接,需要注意的是,在客户端创建的znode的值在eclipse中取出是会报错,因为在客户端储存的数据类型是byte[],所以在eclipse中取出时需要将ZkSerializer换成 BytesPushThroughSerializer(),

ZkClient zkClient = new ZkClient(zkServers, sessionTimeout, connectionTimeout, zkSerializer)

例:

ZkClient zkClient=new ZkClient(url,10000,5000,new BytesPushThroughSerializer());

参数详解:

参数1zkServerszookeeper服务器地址,用“,”分隔。

参数2sessionTimeout,会话超时时间,单位毫秒,默认为30000ms

参数3connectionTimeout,连接超时时间。

参数4IZkConnection接口的实现类。

参数5zkSerializer,自定义序列化实现。

Eclipse中的一些操作

创建一个永久节点,如

zkClient.createPersistent("/db/driverClass","com.mysql.jdbc.Driver");

创建一个临时节点,如

zkClient.createEphemeral("/user/zs", "gril");

创建一个永久顺序节点,如

zkClient.create("/user/ls", "boy",CreateMode.PERSISTENT_SEQUENTIAL)

创建一个临时顺序节点,如

zkClient.create("/user/ls","boy",CreateMode.EPHEMERAL_SEQUENTIAL);

获取节点值:

zkClient.readData("/db/driverClass")

重新设置节点值:

zkClient.writeData("/db/driverClass","oracle.jdbc.OracleDriver");

 

Zookeeper的集群配置,可以参考这位前辈:

http://blog.csdn.net/liaomin416100569/article/details/71642091

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值