使用python操作zookeeper

摘要:
Kazoo介绍,zookeeper的开发界面主要基于java和c#。随着越来越多的python项目使用zookeeper作为分布式集群实现,许多python的zookeepher接口也出现了。现在主流的纯python动物园管理员界面是kazoo。声明如下:fromkazoo。clientimportKazooClientzk=KazooCustomer#如果它是本地的,写127.0.0.1zk.start()#连接zookeeper zk。创建zk。设置('/abc/JQK/XYZ/0001',b“thismymhorse!”)节点=zk。get#查看值printzk。stop()#从zookeeper断开执行输出的连接:(b'thissmyhorse!

kazoo 介绍

zookeeper的开发接口以前主要以java和c为主,随着python项目越来越多的使用zookeeper作为分布式集群实现,python的zookeeper接口也出现了很多,现在主流的纯python的zookeeper接口是kazoo。因此如何使用kazoo开发基于python的分布式程序是必须掌握的。

安装kazoo

pip3 install kazoo

基本操作

from kazoo.client import KazooClient
zk = KazooClient(hosts='192.168.91.128:2181')    #如果是本地那就写127.0.0.1
zk.start()    #与zookeeper连接
zk.stop()    #与zookeeper断开

创建节点

from kazoo.client import KazooClient
zk = KazooClient(hosts='192.168.91.128:2181')    #如果是本地那就写127.0.0.1
zk.start()    #与zookeeper连接
#makepath=True是递归创建,如果不加上中间那一段,就是建立一个空的节点
zk.create('/abc/JQK/XYZ/0001',b'this is my house',makepath=True)
node = zk.get_children('/')  # 查看根节点有多少个子节点
print(node)
zk.stop()    #与zookeeper断开

执行输出:

['abc', 'zookeeper']

注意:空节点的值不能用set修改,否则执行报错!

删除节点

如果要删除这个/abc/JQK/XYZ/0001的子node,但是想要上一级XYZ这个node还是存在的,语句如下:

from kazoo.client import KazooClient
zk = KazooClient(hosts='192.168.91.128:2181')    #如果是本地那就写127.0.0.1
zk.start()    #与zookeeper连接
#recursive=True是递归删除,就是无视下面的节点是否是空,都干掉,不加上的话,会提示子节点非空,删除失败
zk.delete('/abc/JQK/XYZ/0001',recursive=True)
node = zk.get_children('/')  # 查看根节点有多少个子节点
print(node)
zk.stop()    #与zookeeper断开

执行输出:

['abc', 'zookeeper']

更改节点

现在假如要在0001这个node里更改value,比如改成:"this is my horse!",

由于上面节点已经被删除掉了,需要先创建一次。

语句如下:

from kazoo.client import KazooClient
zk = KazooClient(hosts='192.168.91.128:2181')    #如果是本地那就写127.0.0.1
zk.start()    #与zookeeper连接
zk.create('/abc/JQK/XYZ/0001',b'this is my house',makepath=True)
zk.set('/abc/JQK/XYZ/0001',b"this is my horse!")
node = zk.get('/abc/JQK/XYZ/0001')  # 查看值
print(node)
zk.stop()    #与zookeeper断开

执行输出:

(b'this is my horse!', ZnodeStat(czxid=4294967449, mzxid=4294967452, ctime=1544598301273, mtime=1544598308267, version=1, cversion=0, aversion=0, ephemeralOwner=0, dataLength=17, numChildren=0, pzxid=4294967449))

注意!set这种增加节点内容的方式是覆盖式增加,并不是在原有基础上增添。而且添加中文的话可能在ZooInspecter里出现的是乱码

查看节点

由于所有节点,都是在/ 节点上面的,直接查看根节点,就可以知道所有节点了

from kazoo.client import KazooClient
zk = KazooClient(hosts='192.168.91.128:2181')    #如果是本地那就写127.0.0.1
zk.start()    #与zookeeper连接
node = zk.get_children('/')
print(node)
zk.stop()    #与zookeeper断开

执行输出:

['abc', 'zookeeper']

一键清空zookeeper

有些时候,需要将zookeeper的数据全部清空,可以使用以下代码

from kazoo.client import KazooClient
zk = KazooClient(hosts='192.168.91.128:2181')    #如果是本地那就写127.0.0.1
zk.start()    #与zookeeper连接
jiedian = zk.get_children('/')  # 查看根节点有多少个子节点
print(jiedian)
for i in jiedian:
    if i != 'zookeeper':  # 判断不等于zookeeper
        print(i)
        # 删除节点
        zk.delete('/%s'%i,recursive=True)
zk.stop()    #与zookeeper断开

注意:默认的zookeeper节点,是不允许删除的,所以需要做一个判断。

免责声明:文章转载自《使用python操作zookeeper》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇python 后台爆破工具Ubuntu 18.04更新软件源下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python 连接oracle -- sqlalchemy及cx_Oracle的使用详解

python连接oracle -- sqlalchemy import cx_Oracle as orcl import pandas as pd from sqlalchemy import create_engine # 数据库连接 db = create_engine('oracle://qmcb:qmcb@localhost:1521/tqmcb...

zookeeper:2

单机环境下安装: 下载地址:http://apache.fayea.com/zookeeper/stable/ 解压zookeeper :tar -zxvf zookeeper-3.4.10.tar.gz cd到 ZK_HOME/conf , copy一份zoo.cfg:cp zoo_sample.cfg zoo.cfg sh zkServer....

python基础之字符编码

一 了解字符编码的知识储备 1. 文本编辑器存取文件的原理(nodepad++,pycharm,word) 打开编辑器就打开了启动了一个进程,是在内存中的,所以在编辑器编写的内容也都是存放与内存中的,断电后数据丢失 因而需要保存到硬盘上,点击保存按钮,就从内存中把数据刷到了硬盘上。 在这一点上,我们编写一个py文件(没有执行),跟编写其他文件没有任何区别,...

zookeeper安装以及遇到的一些坑

 正文前先来一波福利推荐: 福利一: 百万年薪架构师视频,该视频可以学到很多东西,是本人花钱买的VIP课程,学习消化了一年,为了支持一下女朋友公众号也方便大家学习,共享给大家。 福利二: 毕业答辩以及工作上各种答辩,平时积累了不少精品PPT,现在共享给大家,大大小小加起来有几千套,总有适合你的一款,很多是网上是下载不到。 获取方式: 微信关注 精品3分钟...

python数据挖掘介绍

目录 一:什么是数据挖掘 二:数据挖掘的基本任务 三:数据挖掘流程 四:数据挖掘建模工具   在python对数据的处理方式中,数据挖掘和数据分析是两个重要的方式,目的是为了从数据中获取具有科研或者商业价值的信息。而数据挖则掘是从大量的数据中通过算法搜索隐藏在数据中隐含的、先前未知的并有潜在使用价值的信息的过程。本篇将讨论数据挖掘的一些入门知识。...

使用Python读写Kafka

本篇会给出如何使用python来读写kafka, 包含生产者和消费者. 以下使用kafka-python客户端 生产者 爬虫大多时候作为消息的发送端, 在消息发出去后最好能记录消息被发送到了哪个分区, offset是多少, 这些记录在很多情况下可以帮助快速定位问题, 所以需要在send方法后加入callback函数, 包括成功和失败的处理 # -*- co...