大数据之Zookeeper

B站视频学习地址

一。下载与安装

1.官网下载zookerper.tar.gz包并拷贝到linux下解压到指定目录
	下载地址:https://zookeeper.apache.org/releases.html
2.安装jdk  查看Linux有没有按照java直接输入命令"java"

本地安装模式:
	1.修改配置文件
	   a.将zookeeper/conf下的zoo_sample.cfg文件名称修改为zoo.cfg  
	   b.打开zoo.cfg,修改dataDir路径 dataDir=前面路径/zookeeper/zkData
	   c.在zookeeper下创建目录zkData
	2启动并查看是否启动
	    bin/zkServer.sh start  启动
	    jps                    里面有个QuorumPeerMain说明启动成功
    3.如果提示8080端口被占用,杀掉8080服务进程或者zoo.cfg添加admin.serverPort=8081
    4.如果启动成功了,但是java程序无法连接
    	a.修改本地 C:\Windows\System32\drivers\etc\hosts文件,添加47.101.196.203 aliyun
    	b.修改阿里云服务器上的 /etc/hosts文件的外网IP地址修改为内网IP地址
    	c.重启zookeeper

分布式安装:
	1.在三台机器上解压并配置zookeeper 参考上面下载安装
	2.配置服务器编号
	   a.在zkData目录下创建文件myid
	   b.编辑myid文件,在文件中添加与server对应的编号  如2   3   4
	   c.zoo.cfg文件在末尾添加如下内容
	      server.2=ip2:2888:3888       2 3 4为服务器编号myid
	      server.3=ip3:2888:3888       2888:是这个服务器与集群中的Leader服务器交换信息的端口  正常通信的端口
	      server.4=ip4:2888:3888       3888:选举时服务器相互通信的端口                     选举时的端口   
	3.分别启动zookeeper 

二。Shell命令操作

启动服务端                               bin/zkServer.sh start
退出服务端                               bin/zkServer.sh stop
查看进程是否启动                          jps  里面有个QuorumPeerMain说明启动成功
查看状态                                 bin/zkServer.sh status

启动客户端                                bin/zkCli.sh
退出客户端                                quit
显示所有操作命令                           help

查看当前znode中所包含的内容                 ls /   或者   ls /zookeeper
查看当前znode详细信息                      ls2
创建普通znode                            create /sanguo
修改节点数据值                             set /sanguo/weiguo "simayi"
节点值变化监听                            

三。java api

1.注册到zookeeper

1.pom加入依赖
	    <!--zkClient-->
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>

2.ZkClient 声明zookeeper的ip
	@Configuration
	public class BeanConfig {
	    @Bean
	    public ZkClient buildZKClient() {
	        return new ZkClient("47.101.196.203:2181", 15000);
	    }
	}

3.使用zkClient
	@Component
	public class ZKUtil {
	
	    @Autowired
	    private ZkClient zkClient;
	
	    /**
	     * 创建父级节点
	     *
	     * @param rootPath 父级节点
	     */
	    public void createRootNode(String rootPath) {
	        boolean exists = zkClient.exists(rootPath);
	        if (exists) {
	            return;
	        }
	        //创建 root
	        zkClient.createPersistent(rootPath);
	    }
	
	    /**
	     * 写入指定节点 临时目录
	     *
	     * @param path 临时目录
	     */
	    public void createNode(String path) {
	        zkClient.createEphemeral(path);
	    }
	
	    /**
	     * 删除节点
	     *
	     * @param path 路径
	     */
	    public void delete(String path) {
	        zkClient.delete(path);
	    }
	
	    /**
	     * 查询节点
	     *
	     * @param path 路径
	     * @return 节点
	     */
	    public List<String> getChildren(String path) {
	        return zkClient.getChildren(path);
	    }
	}

四。配置参数解读 内部原理 节点类型

1。配置参数解读

配置文件在 zookeeper/conf/zoo.cfg   本来叫zoo_sample.cfg

tickTime = 2000    心跳频率
initLimit=10       Leader和follower初始通信时限  10个心跳也就是2s*10=20s     刚启动时
syncLimit=5        Leader和follower通信时限      5个心跳也就是2s*5=10s     启动后
dataDir            数据文件目录 + 数据持久化路径
clientPort         客户端连接端口(类似tomcat服务器的端口号)

2。内部原理

1.选举机制(面试重点)
   a.半数机制:集群中半数以上机器存活,集群可用,所以Zookeeper适合安装奇数台服务器   
            1 2 3    1 2 3 4(坏2台就都不能用,所以4是浪费了)
   b.Zookeeper虽然在配置文件中并没有指定MasterStave,但是工作时是有一个Leader,其他为Follower,learder是通过内部
     的选举机制临时产生。
   c.选举机制介绍 
      

3.节点类型

持久:客户端和Zookeeper服务端断开连接后,创建的节点不删除
短暂:客户端和Zookeeper服务端断开连接后,创建的节点自己删除

五。zookeeper数据结构,hdfs也是这种结构

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飘然生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值