IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Zookeeper整理之入门篇 -> 正文阅读

[大数据]Zookeeper整理之入门篇

在这里插入图片描述

Zookeeper

1 Zookeeper定义

Apache Zookeeper是一个开发和维护开源服务器得框架,它可以实现高度可靠的分布式协调。

2 Zookeeper的特点

  1. 半数以上存活即存活
  2. 搭建奇数台节点
  3. 生产中没有使用单台Zookeeper的情况,也就是至少3台
  4. 集群中只有一个leader,多个follower
  5. 全局数据保持一致,每个server保存一份相同的数据副本,client无论连接到哪一个server,数据都保持一致
  6. 分布式读写,更新请求转发,由leader实施(主从复制,读写分离)
  7. 更新请求顺序进行,来自同一个client的更新请求按照其发送的请求顺序执行(这个特点决定ZK不适合做海量数据的保存)
  8. 数据更新原子性,一次数据更新操作,要么全部成功,要么全部失败
  9. 实时性,在一定时间范围内,client能读到最新数据

3 Zookeeper安装

##1.解压缩
tar -zxvf zookeeper-3.4.5.tar.gz -C /opt/apps/
##2.配置环境变量
vim /etc/profile

export ZK_HOME=/opt/apps/zookeeper-3.4.5
export PATH=$PATH:$ZK_HOME/bin

source /etc/profile
##3.创建zkdata/myid,每个节点myid不同
eg1:192.168.130.110
mkdir zkdata
vim zkdata/myid
1
eg2:192.168.130.111
mkdir zkdata
vim zkdata/myid
2
eg2:192.168.130.112
mkdir zkdata
vim zkdata/myid
3
##4.配置zoo.cfg
mv conf/zoo_sample.cfg conf/zoo.cfg
vim zoo.cfg

dataDir=/opt/apps/zookeeper-3.4.5/zkdata

server.1=192.168.130.110:2888:3888
server.2=192.168.130.111:2888:3888
server.3=192.168.130.112:2888:3888

##5.启动

##服务端
sh zkServer.sh start/stop/status
##客户端
sh zkCli.sh

4 Zookeeper操作

指令作用案例
ls列举指定目录的子目录ls /
ls2列举指定目录的子目录以及元数据ls2 /
create创建新节点
-s 顺序节点
-e 临时节点
-c 容器节点
-t 可以给节点添加过期时间,默认禁用,
可以通过系统参数启用
create /hdfs hdfs
create -e /yarn yarn
create -s /mapreduce mr
get获取指定节点中的数据以及元数据get /hdfs
stat获取节点的元数据stat /hdfs
delete删除指定节点-要求它没有子节点delete /hdfs
rmr递归删除znodermr /hdfs
set修改指定节点的数据set /hdfs hadoop

5 Java API

5.1 导入Pom依赖

<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.4.6</version>
</dependency>

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.10</version>
</dependency>

5.2 配置本地的hosts

C:\Windows\System32\drivers\etc目录下的hosts文件,映射对应的IP

192.168.130.110 ha1

192.168.130.111 ha2

192.168.130.112 ha3

5.3 代码

  • Operation.java
package com.zookeeper;

import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooKeeper;
import org.junit.Test;

public class Operation {
    private static ZooKeeper zooKeeper = null;
    @Test
    public void init(){
        String connection = "ha1,ha2,ha3";
        int TimeOut = 3000;

        try {
            //操作zookeeper的服务器客户端对象
            zooKeeper = new ZooKeeper(connection, TimeOut, new Watcher() {
                @Override
                public void process(WatchedEvent watchedEvent) {
                    System.out.println("zookeeper");
                }
            });

            CURD.setZooKeeper(zooKeeper);
            /**
             * JavaAPI模拟指令
             */
            CURD curd = new CURD();

            //关闭连接
            zooKeeper.close();
        }catch (Exception e){
            e.printStackTrace();
        }
        //释放资源

    }
}
  • CURD.java
package com.zookeeper;

import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.ZooDefs;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.data.Stat;
import org.junit.Test;

import java.util.List;

public class CURD {
    private static ZooKeeper zooKeeper;

    public static ZooKeeper getZooKeeper() {
        return zooKeeper;
    }

    public static void setZooKeeper(ZooKeeper zooKeeper) {
        CURD.zooKeeper = zooKeeper;
    }
    //查看路径下所有子目录
    @Test
    public void lsAll(){
        try {
            List<String> children = zooKeeper.getChildren("/", true);
            for (String child:children){
                System.out.println(child);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    //创建节点
    @Test
    public void create(){
        try {
            zooKeeper.create("/hdfs","hdfs".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    //删除节点
    @Test
    public void delete(){
        try {
            zooKeeper.delete("/hadoop",1);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    //递归删除节点
    @Test
    public void rmr(){
        rmrs("/hdfs");
    }
    @Test
    public void rmrs(String path){
        try {
            String origin = path;
            //先获取子节点,判断有没有子节点
            List<String> children = zooKeeper.getChildren(path, true);
            //没有节点就删除
            if (children.size() == 0){
                zooKeeper.delete(path,0);
                return;
            }
            //有节点就删除
            for (String child : children){
                path = path + "/" + child;
                rmrs(path);
            }
            //删除自己本身节点
            zooKeeper.delete(origin,0);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    //获取指定节点中的数据以及元数据
    @Test
    public void get() {
        try {
            Stat stat = new Stat();//元数据
            byte[] data = zooKeeper.getData("hdfs", true, stat);
            System.out.println(new String(data));
            System.out.println(stat.getCtime());
            System.out.println(stat.getVersion());
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-07-28 13:26:30  更:2021-07-28 13:26:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/7 0:16:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码