zookeeper

Zookeeper学习

Zookeeper概念

Zookeeeper是Apache Hadoop项目下的一个子项目,是一个树形目录

Zookeeper翻译过来就是动物管理员,它是用来管Hadoop(大象)、Hive(蜜蜂)、Pig(小猪)的管理员,简称zk

Zookeeper是一个分布式的、开源的、分布式应用程序的协调服务

Zookeeper提供的主要功能包括:

  • 配置管理
  • 分布式锁
  • 集群管理

Zookeeper命令操作

Zookeeper数据模型

Zookeeper是一个树形目录服务,其数据模型和Unix的文件系统目录数很相似,拥有一个层次化结构

这里面的每一个节点都被称为:ZNode,每个节点上都会保存自己的数据和节点信息

节点可以拥有子节点,同时也允许少量(1MB)数据存储在该节点之下

节点可以分为四大类:

  • PERSISTENT 持久化节点
  • EPHEMERAL 临时节点
  • PERSISTENT_SEQUENTITIAL 持久化顺序节点 : -s
  • EPHEMERAL_SEQUENTIAL 临时顺序节点 ; -es
    在这里插入图片描述

Zookeeper服务端常用命令

  • 启动 ZooKeeper 服务: ./zkServer.sh start
  • 查看 ZooKeeper 服务状态: ./zkServer.sh status
  • 停止 ZooKeeper 服务: ./zkServer.sh stop
  • 重启 ZooKeeper 服务: ./zkServer.sh restart

高版本不搭建集群无法查看服务

Zookeeper客户端常用命令

连接zookeeper服务器

./zkCli.sh –server ip:port

断开连接

quit

查看命令帮助

help

显示指定目录下节点

ls 目录

创建节点

crete /节点path value

获取节点值

get /节点path

设置节点值

set  /节点值path value

删除节点

delete /节点path

创建临时节点

create -e /节点path value

创建顺序节点

create -s /节点path value

查询节点详细信息

ls -s /节点path

ZookeeperJavaAPI操作

Curator介绍

Curator是ApacheZookeeper的java客户端库

常见的Zookeeper Java API

  • 原生Java API
  • ZkClient
  • Curator

Curator项目的目标是简化ZooKeeper客户端

CuratorAPI常用操作

建立连接

//建立连接
    @Test
    public void testConnect(){
   
        //第一种方式
        /**
         * @param connectString      连接字符串 192.168.7.134:2181
         * @param sessionTimeoutMs    会话超时时间 单位ms
         * @param connectionTimeoutMs 连接超时时间
         * @param retryPolicy         重试策略
         */
      RetryPolicy retryPolicy=new ExponentialBackoffRetry(3000,10);
        /*CuratorFramework client = CuratorFrameworkFactory.newClient("192.168.7.134:2181", 60 * 1000, 15 * 1000, retryPolicy);
        //开启连接
        client.start();*/
        //第二种方式
        CuratorFramework client = CuratorFrameworkFactory.builder().connectString("192.168.7.134:2181").sessionTimeoutMs(60 * 1000)
                .connectionTimeoutMs(15 * 1000).retryPolicy(retryPolicy).namespace("ybp").build();
        client.start();
    }

添加节点

    /**创建节点 create 持久,临时,顺序,设置数据
     * 基本创建
     * 创建节点,带有数据
     * 设置节点的类型
     * 创建多级节点
     */
    @Test
    public void testCreate() throws Exception {
   
        //基本创建
        //如果创建节点没有指定数据,则默认将当前客户端的ip作为数据存储
        //client.create().forPath("/app1");

        //如果创建节点,没有指定数据,则默认将当前客户端的ip作为数据存储
        //client.create().forPath("/app2","hehe".getBytes());

        //设置节点类型
        //默认类型:持久化
        //String path = client.create().withMode(CreateMode.EPHEMERAL).forPath("/app3");

        //创建多级节点
        String path = client.create().creatingParentsIfNeeded().forPath("/app4/p1");


        System.out.println(path);

    }

删除节点

 /**
     * 删除节点 delete deleteall
     *  删除单个节点
     *  删除带有子节点的节点
     *  必须成功删除
     *  回调
     */
    @Test
    public void testDelete() throws Exception {
   
        //删除单个节点
        //client.delete().forPath("/app1");
        //删除带有子节点的节点
        client.delete().deletingChildrenIfNeeded().forPath("/app4");
        //必须删除成功
        client.delete().guaranteed().forPath("/app2");
        //回调
        
        client.delete().guaranteed().inBackground(new BackgroundCallback() {
   
            @Override
            p
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值