zookeeper数据工具类介绍及编译安装过程
2017-11-10 20:08
351 查看
1.ACL
传统的文件系统中,ACL分为两个维度,一个是所属组,一个是权限,子目录/文件默认继承父目录的ACL。在zookeeper中,它利用一个三元组来定义客户端的访问权限:(scheme:expression, perms) 。Perms:标识了操作权限, scheme:定义了expression的含义。如:(host:host1.corp.com,READ),标识了一个名为host1.corp.com的主机,有该数据节点的读权限;(ip:19.22.0.0/16, READ),表示IP地址以19.22开头的主机,有该数据节点的读权限。
private int perms;
private org.apache.zookeeper.data.Id id;
( private String scheme; private String id;)
当然也可以从三个维度来理解:一是scheme; 二是user; 三是permission,scheme对应于采用哪种方案来进行权限管理。zookeeper-3.4.4缺省支持下面几种scheme:
客户端使用方式:
2.Stat
cZxid: 是节点的创建时间所对应的Zxid格式时间戳。
mZxid:是节点的修改时间所对应的Zxid格式时间戳。
zxid是一个64为的数字,它高32位是epoch用来标识leader关系是否改变,每次一个leader被选出来,它都会有一个 新的epoch。低32位是个递增计数。
version 节点数据版本号
cversion 子节点版本号
aversion 节点所拥有的ACL版本号
ctime 节点被创建的时间
mtime 节点被修改的时间
如果节点为临时节点,该值为这个节点拥有者的会话id,否则为0
最新修改的zxid
ZooKeeper状态的每一次改变, 都对应着一个递增的Transaction id, 该id称为zxid. 由于zxid的递增性质, 如果zxid1小于zxid2, 那么zxid1肯定先于zxid2发生. 创建任意节点, 或者更新任意节点的数据, 或者删除任意节点, 都会导致Zookeeper状态发生改变, 从而导致zxid的值增加.
3.zookeeper源码编译
a. 下载Zookeeper源码包https://github.com/apache/zookeeper
b. ant eclipse进行编译,直至出现BUILD SUCCESSFUL Total time: 20 seconds等文字。
c. 导入至eclipse,找到项目中的build.xml文件,右健,选择Run As -> Ant Build,出现 BUILD SUCCESSFUL, Total time: 8 seconds.
注意点,ant安装,java安装。 本人使用Apache Ant(TM) version 1.9.2 compiled on June 10 2014, java version “1.8.0_111”, 编译起来很顺利,没有错误。
之后进入到编译目录里面,conf目录下面将zoo_sample.cfg改名为zoo.cfg,在bin目录下,运行zkServer.sh命令,启动zookeeper。单机模式启动,log信息如下。
参考文献
1. http://blog.csdn.net/xinguan1267/article/details/38423019
2. http://nettm.iteye.com/blog/1721778
3. http://blog.csdn.net/tswisdom/article/details/41522069
传统的文件系统中,ACL分为两个维度,一个是所属组,一个是权限,子目录/文件默认继承父目录的ACL。在zookeeper中,它利用一个三元组来定义客户端的访问权限:(scheme:expression, perms) 。Perms:标识了操作权限, scheme:定义了expression的含义。如:(host:host1.corp.com,READ),标识了一个名为host1.corp.com的主机,有该数据节点的读权限;(ip:19.22.0.0/16, READ),表示IP地址以19.22开头的主机,有该数据节点的读权限。
private int perms;
private org.apache.zookeeper.data.Id id;
( private String scheme; private String id;)
当然也可以从三个维度来理解:一是scheme; 二是user; 三是permission,scheme对应于采用哪种方案来进行权限管理。zookeeper-3.4.4缺省支持下面几种scheme:
world: 它下面只有一个id, 叫anyone, world:anyone代表任何人,zookeeper中对所有人有权限的结点就是属于world:anyone的 auth: 它不需要id, 只要是通过authentication的user都有权限(zookeeper支持通过kerberos来进行authencation, 也支持username/password形式的authentication) digest: 它对应的id为username:BASE64(SHA1(password)),它需要先通过username:password形式的authentication ip: 它对应的id为客户机的IP地址,设置的时候可以设置一个ip段,比如ip:192.168.1.0/16, 表示匹配前16个bit的IP段 super: 在这种scheme情况下,对应的id拥有超级权限,可以做任何事情(cdrwa)
客户端使用方式:
List<ACL> acls = new ArrayList<ACL>(2); Id id1 = new Id("digest", DigestAuthenticationProvider.generateDigest("admin:admin123")); ACL acl1 = new ACL(ZooDefs.Perms.ALL, id1); Id id2 = new Id("digest", DigestAuthenticationProvider.generateDigest("guest:guest123")); ACL acl2 = new ACL(ZooDefs.Perms.READ, id2); acls.add(acl1); acls.add(acl2); ZooKeeper zk = new ZooKeeper("127.0.0.1:2181", 10000, new DefaultWatcher()); zk.create("/test", new byte[0], acls, CreateMode.PERSISTENT);
2.Stat
private long czxid; private long mzxid; private long ctime; private long mtime; private int version; private int cversion; private int aversion; private long ephemeralOwner; private int dataLength; private int numChildren; private long pzxid;
cZxid: 是节点的创建时间所对应的Zxid格式时间戳。
mZxid:是节点的修改时间所对应的Zxid格式时间戳。
zxid是一个64为的数字,它高32位是epoch用来标识leader关系是否改变,每次一个leader被选出来,它都会有一个 新的epoch。低32位是个递增计数。
version 节点数据版本号
cversion 子节点版本号
aversion 节点所拥有的ACL版本号
ctime 节点被创建的时间
mtime 节点被修改的时间
如果节点为临时节点,该值为这个节点拥有者的会话id,否则为0
最新修改的zxid
ZooKeeper状态的每一次改变, 都对应着一个递增的Transaction id, 该id称为zxid. 由于zxid的递增性质, 如果zxid1小于zxid2, 那么zxid1肯定先于zxid2发生. 创建任意节点, 或者更新任意节点的数据, 或者删除任意节点, 都会导致Zookeeper状态发生改变, 从而导致zxid的值增加.
3.zookeeper源码编译
a. 下载Zookeeper源码包https://github.com/apache/zookeeper
b. ant eclipse进行编译,直至出现BUILD SUCCESSFUL Total time: 20 seconds等文字。
c. 导入至eclipse,找到项目中的build.xml文件,右健,选择Run As -> Ant Build,出现 BUILD SUCCESSFUL, Total time: 8 seconds.
注意点,ant安装,java安装。 本人使用Apache Ant(TM) version 1.9.2 compiled on June 10 2014, java version “1.8.0_111”, 编译起来很顺利,没有错误。
之后进入到编译目录里面,conf目录下面将zoo_sample.cfg改名为zoo.cfg,在bin目录下,运行zkServer.sh命令,启动zookeeper。单机模式启动,log信息如下。
2017-11-10 07:00:56,156 [myid:] - INFO [main:QuorumPeerConfig@118] - Reading configuration from: /home/cheung/workspace/zookeeper/zookeeper/bin/../conf/zoo.cfg 2017-11-10 07:00:56,161 [myid:] - INFO [main:QuorumPeerConfig@331] - clientPortAddress is 0.0.0.0/0.0.0.0:2181 2017-11-10 07:00:56,162 [myid:] - INFO [main:QuorumPeerConfig@335] - secureClientPort is not set 2017-11-10 07:00:56,164 [myid:] - INFO [main:DatadirCleanupManager@78] - autopurge.snapRetainCount set to 3 2017-11-10 07:00:56,165 [myid:] - INFO [main:DatadirCleanupManager@79] - autopurge.purgeInterval set to 0 2017-11-10 07:00:56,165 [myid:] - INFO [main:DatadirCleanupManager@101] - Purge task is not scheduled. 2017-11-10 07:00:56,165 [myid:] - WARN [main:QuorumPeerMain@124] - Either no config or no quorum defined in config, running in standalone mode 2017-11-10 07:00:56,166 [myid:] - INFO [main:ManagedUtil@46] - Log4j found with jmx enabled. 2017-11-10 07:00:56,177 [myid:] - INFO [main:QuorumPeerConfig@118] - Reading configuration from: /home/cheung/workspace/zookeeper/zookeeper/bin/../conf/zoo.cfg 2017-11-10 07:00:56,177 [myid:] - INFO [main:QuorumPeerConfig@331] - clientPortAddress is 0.0.0.0/0.0.0.0:2181 2017-11-10 07:00:56,177 [myid:] - INFO [main:QuorumPeerConfig@335] - secureClientPort is not set 2017-11-10 07:00:56,177 [myid:] - INFO [main:ZooKeeperServerMain@117] - Starting server 2017-11-10 07:00:56,189 [myid:] - INFO [main:Environment@109] - Server environment:zookeeper.version=3.6.0-SNAPSHOT-1392a8b3d8ac3d042a51dac18e33e144674b1b5b, built on 11/10/2017 11:52 GMT 2017-11-10 07:00:56,190 [myid:] - INFO [main:Environment@109] - Server environment:host.name=localhost 2017-11-10 07:00:56,190 [myid:] - INFO [main:Environment@109] - Server environment:java.version=1.8.0_111 2017-11-10 07:00:56,190 [myid:] - INFO [main:Environment@109] - Server environment:java.vendor=Oracle Corporation 2017-11-10 07:00:56,192 [myid:] - INFO [main:Environment@109] - Server environment:java.home=/home/jdk1.8.0_111/jre 2017-11-10 07:00:56,192 [myid:] - INFO [main:Environment@109] - Server environment:java.class.path=/home/cheung/workspace/zookeeper/zookeeper/bin/../build/classes:/home/cheung/workspace/zookeeper/zookeeper/bin/../build/lib/slf4j-log4j12-1.7.5.jar:/home/cheung/workspace/zookeeper/zookeeper/bin/../build/lib/slf4j-api-1.7.5.jar:/home/cheung/workspace/zookeeper/zookeeper/bin/../build/lib/netty-3.10.5.Final.jar:/home/cheung/workspace/zookeeper/zookeeper/bin/../build/lib/log4j-1.2.17.jar:/home/cheung/workspace/zookeeper/zookeeper/bin/../build/lib/jline-2.11.jar:/home/cheung/workspace/zookeeper/zookeeper/bin/../build/lib/jetty-util-9.2.18.v20160721.jar:/home/cheung/workspace/zookeeper/zookeeper/bin/../build/lib/jetty-servlet-9.2.18.v20160721.jar:/home/cheung/workspace/zookeeper/zookeeper/bin/../build/lib/jetty-server-9.2.18.v20160721.jar:/home/cheung/workspace/zookeeper/zookeeper/bin/../build/lib/jetty-security-9.2.18.v20160721.jar:/home/cheung/workspace/zookeeper/zookeeper/bin/../build/lib/jetty-io-9.2.18.v20160721.jar:/home/cheung/workspace/zookeeper/zookeeper/bin/../build/lib/jetty-http-9.2.18.v20160721.jar:/home/cheung/workspace/zookeeper/zookeeper/bin/../build/lib/javax.servlet-api-3.1.0.jar:/home/cheung/workspace/zookeeper/zookeeper/bin/../build/lib/jackson-mapper-asl-1.9.11.jar:/home/cheung/workspace/zookeeper/zookeeper/bin/../build/lib/jackson-core-asl-1.9.11.jar:/home/cheung/workspace/zookeeper/zookeeper/bin/../build/lib/commons-cli-1.2.jar:/home/cheung/workspace/zookeeper/zookeeper/bin/../build/lib/audience-annotations-0.5.0.jar:/home/cheung/workspace/zookeeper/zookeeper/bin/../lib/*.jar:/home/cheung/workspace/zookeeper/zookeeper/bin/../zookeeper-*.jar:/home/cheung/workspace/zookeeper/zookeeper/bin/../src/java/lib/ivy-2.4.0.jar:/home/cheung/workspace/zookeeper/zookeeper/bin/../src/java/lib/ant-eclipse-1.0-jvm1.2.jar:/home/cheung/workspace/zookeeper/zookeeper/bin/../conf:.:/home/jdk1.8.0_111/lib/dt.jar:/home/jdk1.8.0_111/lib/tools.jar 2017-11-10 07:00:56,192 [myid:] - INFO [main:Environment@109] - Server environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib 2017-11-10 07:00:56,192 [myid:] - INFO [main:Environment@109] - Server environment:java.io.tmpdir=/tmp 2017-11-10 07:00:56,192 [myid:] - INFO [main:Environment@109] - Server environment:java.compiler=<NA> 2017-11-10 07:00:56,192 [myid:] - INFO [main:Environment@109] - Server environment:os.name=Linux 2017-11-10 07:00:56,193 [myid:] - INFO [main:Environment@109] - Server environment:os.arch=amd64 2017-11-10 07:00:56,193 [myid:] - INFO [main:Environment@109] - Server environment:os.version=3.10.0-514.2.2.el7.x86_64 2017-11-10 07:00:56,193 [myid:] - INFO [main:Environment@109] - Server environment:user.name=cheung 2017-11-10 07:00:56,193 [myid:] - INFO [main:Environment@109] - Server environment:user.home=/home/cheung 2017-11-10 07:00:56,193 [myid:] - INFO [main:Environment@109] - Server environment:user.dir=/home/cheung/workspace/zookeeper/zookeeper/bin 2017-11-10 07:00:56,193 [myid:] - INFO [main:Environment@109] - Server environment:os.memory.free=109MB 2017-11-10 07:00:56,193 [myid:] - INFO [main:Environment@109] - Server environment:os.memory.max=889MB 2017-11-10 07:00:56,193 [myid:] - INFO [main:Environment@109] - Server environment:os.memory.total=117MB 2017-11-10 07:00:56,195 [myid:] - INFO [main:ZooKeeperServer@911] - minSessionTimeout set to 4000 2017-11-10 07:00:56,195 [myid:] - INFO [main:ZooKeeperServer@920] - maxSessionTimeout set to 40000 2017-11-10 07:00:56,196 [myid:] - INFO [main:ZooKeeperServer@159] - Created server with tickTime 2000 minSessionTimeout 4000 maxSessionTimeout 40000 datadir /tmp/zookeeper/version-2 snapdir /tmp/zookeeper/version-2 2017-11-10 07:00:56,215 [myid:] - INFO [main:Log@186] - Logging initialized @462ms 2017-11-10 07:00:56,268 [myid:] - WARN [main:ContextHandler@1339] - o.e.j.s.ServletContextHandler@58ceff1{/,null,null} contextPath ends with /* 2017-11-10 07:00:56,269 [myid:] - WARN [main:ContextHandler@1350] - Empty contextPath 2017-11-10 07:00:56,284 [myid:] - INFO [main:Server@327] - jetty-9.2.18.v20160721 2017-11-10 07:00:56,324 [myid:] - INFO [main:ContextHandler@744] - Started o.e.j.s.ServletContextHandler@58ceff1{/,null,AVAILABLE} 2017-11-10 07:00:56,343 [myid:] - INFO [main:AbstractConnector@266] - Started ServerConnector@fad3bac{HTTP/1.1}{0.0.0.0:8080} 2017-11-10 07:00:56,344 [myid:] - INFO [main:Server@379] - Started @593ms 2017-11-10 07:00:56,345 [myid:] - INFO [main:JettyAdminServer@112] - Started AdminServer on address 0.0.0.0, port 8080 and command URL /commands 2017-11-10 07:00:56,351 [myid:] - INFO [main:ServerCnxnFactory@135] - Using org.apache.zookeeper.server.NIOServerCnxnFactory as server connection factory 2017-11-10 07:00:56,355 [myid:] - INFO [main:NIOServerCnxnFactory@673] - Configuring NIO connection handler with 10s sessionless connection timeout, 1 selector thread(s), 8 worker threads, and 64 kB direct buffers. 2017-11-10 07:00:56,357 [myid:] - INFO [main:NIOServerCnxnFactory@686] - binding to port 0.0.0.0/0.0.0.0:2181 2017-11-10 07:00:56,375 [myid:] - INFO [main:ZKDatabase@118] - zookeeper.snapshotSizeFactor = 0.33 2017-11-10 07:00:56,386 [myid:] - INFO [main:FileTxnSnapLog@347] - Snapshotting: 0x0 to /tmp/zookeeper/version-2/snapshot.0 2017-11-10 07:00:56,390 [myid:] - INFO [main:FileTxnSnapLog@347] - Snapshotting: 0x0 to /tmp/zookeeper/version-2/snapshot.0 2017-11-10 07:00:56,414 [myid:] - INFO [main:ContainerManager@64] - Using checkIntervalMs=60000 maxPerMinute=10000
参考文献
1. http://blog.csdn.net/xinguan1267/article/details/38423019
2. http://nettm.iteye.com/blog/1721778
3. http://blog.csdn.net/tswisdom/article/details/41522069
相关文章推荐
- 数据挖掘RapidMiner工具使用----产品介绍与安装过程
- 大数据生态系统基础:Apache Spark(一):介绍和编译、安装
- 大数据之Hadoop平台(四)Centos6.5(64bit)Hadoop2.5.1、Zookeeper3.4.6、Hbase0.98.6.1安装使用过程中错误及解决方法
- FL2440下的QT安装编译过程介绍
- zookeeper介绍,安装,以及在大数据中的使用场景介绍
- linux编译安装过程介绍
- 本文介绍在VC 6.0中编译和使用OpenSSL的过程
- 编写、编译、安装、移除一个内核模块的基本过程,不能再简单了的
- QT4.3.3+VC6.0安装编译过程详解
- FFMPEG在windows平台编译的详细过程,包括环境安装
- C++编译过程中"没有找到MFC80UD.DLL,因此这个程序未能启动.重新安装应用程序可能会修复此问题"? 的彻底解决
- Solaris的图形介绍安装过程
- 如何把安装过程中的数据传到反安装过程中
- 【转】C++编译过程中"没有找到MFC80UD.DLL,因此这个程序未能启动.重新安装应用程序可能会修复此问题"? 的彻底解决
- Pureftp 编译安装过程
- 我的arm-gcc工具编译安装过程
- php 5.3.0 red hat enterpirse 编译安装全过程 包括出错,除错
- Microsoft BizTalk的介绍和安装过程
- mysql 5.0.18 编译安装过程
- sqlite-3.3.6编译安装与交叉编译全过程详细记录