命令行操作Zookeeper

1、命令讲解

1、#####查看所有命令
    [zk: localhost:2181(CONNECTED) 5] help    
    ZooKeeper -server host:port cmd args
	connect host:port
	get path [watch]
	ls path [watch]
	set path data [version]
	rmr path
	delquota [-n|-b] path
	printwatches on|off
	create [-s] [-e] path data acl
	stat path [watch] 
	ls2 path [watch]
	history 
	listquota path
	setAcl path acl
	getAcl path
	sync path
	redo cmdno
	addauth scheme auth
	delete path [version]
	setquota -n|-b val path



2、#####部分常用命令讲解

创建节点:
    create [-s] [-e] path data acl
        -s:创建带顺序节点
        -e:创建临时节点
    示例:
        [zk: localhost:2181(CONNECTED) 8] create /clr clr
        Created /clr    #####节点创建成功

        [zk: localhost:2181(CONNECTED) 13] create /clr/dsg dsg
        Created /clr/dsg    #####子节点创建成功

        [zk: localhost:2181(CONNECTED) 15] create /hadoop/zk zookeeper
        Node does not exist: /hadoop/zk    #####不支持递归创建节点

        
查看节点:
    get path [watch]
    示例:
        [zk: localhost:2181(CONNECTED) 10] get /clr
        clr    #####节点内容
        cZxid = 0x6    #####创建id
        ctime = Fri Apr 12 10:34:55 CST 2019    #####修改时间
        mZxid = 0x6    #####修改id。未修改时数值和cZxid一样,修改过后就不一样了
        mtime = Fri Apr 12 10:34:55 CST 2019    #####修改时间
        pZxid = 0x6    #####父节点id
        cversion = 0    #####子节点更新的次数
        dataVersion = 0    #####节点的版本,每次修改版本号加1
        aclVersion = 0    #####acl版本
        ephemeralOwner = 0x0    #####是否是临时节点,0x0表示临时节点,否则为节点的session id
        dataLength = 3    #####节点长度
        numChildren = 0    #####有多少个子节点
    
    stat path [watch]
        该命令和get命令唯一区别是,该命令无法获得节点的内容,该命令等介于ls2

修改节点:
    set path data [version]
    示例:
        [zk: localhost:2181(CONNECTED) 11] set /clr clrdsg
        cZxid = 0x6
        ctime = Fri Apr 12 10:34:55 CST 2019
        mZxid = 0x7
        mtime = Fri Apr 12 10:58:49 CST 2019
        pZxid = 0x6
        cversion = 0
        dataVersion = 1
        aclVersion = 0
        ephemeralOwner = 0x0
        dataLength = 6
        numChildren = 0

    

修改节点:
    delete path [version]
    示例:
        [zk: localhost:2181(CONNECTED) 16] delete /clr
        Node not empty: /clr    #####使用delete不能递归删除非空目录
    
    rmr path
    示例:
        [zk: localhost:2181(CONNECTED) 18] rmr /clr
    
    
    

 面试题:
    zookeeper命令:ls和ls2有什么区别?   
    答:
    [zk: localhost:2181(CONNECTED) 4] ls /clr
    []    #####罗列出存在的子节点
    [zk: localhost:2181(CONNECTED) 5] ls2 /clr 
    []    #####罗列出存在的子节点和本节点的状态信息
    cZxid = 0xf
    ctime = Fri Apr 12 11:59:09 CST 2019
    mZxid = 0xf
    mtime = Fri Apr 12 11:59:09 CST 2019
    pZxid = 0xf
    cversion = 0
    dataVersion = 0
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 3
    numChildren = 0

2、zookeeper数据模型

a)节点:
    一说到节点,大家可能就想到了一台一台的服务器,但在zookeeper中,节点可以分为两类。
    一类是集群中的机器,另一类则是指数据模型中的数据单元。

b)数据节点(znode):
    数据模型:
        唯一。带版本,每次修改版本号加1。
        存储的数据量不宜太大。可以通过acl设置安全机制。
        可以设置监听器watcher。

    临时节点:
        只存在当前session中,session消失则节点消失(不是立即消失,有一个时间差),不存在子节点。
    永久节点:
        只能人为地删除。
    
    两种类型派生四种形式:

c)
    临时节点:
        create -e /eclr    eclr  
    带顺序的临时节点:
        create -e -s /esclr    esclr    
    永久节点:
         create  /clr    clr
    带顺序的永久节点:
        create  -s /sclr    sclr

    测试顺序:
        [zk: localhost:2181(CONNECTED) 9] create  -s /sclr    sclr
        Created /sclr0000000002
        [zk: localhost:2181(CONNECTED) 10] create  -s /sclr    sclr
        Created /sclr0000000003
        [zk: localhost:2181(CONNECTED) 11] create  -s /sclr    sclr
        Created /sclr0000000004
        [zk: localhost:2181(CONNECTED) 12] create  -s /sclr    sclr
        Created /sclr0000000005
        [zk: localhost:2181(CONNECTED) 13] create  -s /sclr    sclr
        Created /sclr0000000006
        [zk: localhost:2181(CONNECTED) 15] ls  /    
        [clr, zookeeper, sclr0000000006, sclr0000000002, sclr0000000003,         sclr0000000004, sclr0000000005]


3、监听器Watcher

属性:
  一次性的触发器。 
分类:
    节点监控:关注节点的创建删除和数据的修改
        NodeCreated、NodeDataChanged、NodeDeleted    
    子节点监控:只关注子节点的创建和删除,不关注子节点数据的修改
        NodeChildrenChanged    


节点监控:
stat/get path watch
    示例:
    [zk: localhost:2181(CONNECTED) 0] stat /clr watch
    Node does not exist: /clr
    [zk: localhost:2181(CONNECTED) 1] create /clr
    clr
    WATCHER::
    WatchedEvent state:SyncConnected type:NodeCreated path:/clr
    Created /clr
    示例:
    [zk: localhost:2181(CONNECTED) 3] stat /clr watch
    clrdsg
    [zk: localhost:2181(CONNECTED) 4] set /clr clrdsgy
    WATCHER::
    WatchedEvent state:SyncConnected type:NodeDataChanged path:/clr
    示例:
    [zk: localhost:2181(CONNECTED) 5] stat /clr watch  
    clrdsgy
    [zk: localhost:2181(CONNECTED) 6] delete /clr   
    WATCHER::
    WatchedEvent state:SyncConnected type:NodeDeleted path:/clr
注:
    get path watch无法监控到节点的创建


子节点监控:
ls/ls2 path watch
    示例:
    [zk: localhost:2181(CONNECTED) 4] ls /clr watch
    []
    [zk: localhost:2181(CONNECTED) 5] create /clr/dsg dsg
    WATCHER::    
    WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/clr
    Created /clr/dsg
    示例:
    [zk: localhost:2181(CONNECTED) 9] ls /clr watch      
    [dsg]
    [zk: localhost:2181(CONNECTED) 10] delete /clr/dsg    
    WATCHER::
    WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/clr

猜你喜欢

转载自blog.csdn.net/pengzonglu7292/article/details/89312363