大数据之Zookeeper
1. Zookeeper入门
1.1 概述
Zookeeper就是一个协调者,它存储和管理着集群数据(是一个文件系统,此数据是各个节点的状态),并且当某个节点下线后,它负责通知客户端,告知集群状况(通知机制)。
所以我总结,Zookeeper = 文件系统 + 通知机制的框架。
1.2特点
①全局数据一致(各个节点的数据是一致的)。
②数据更新时,全部的节点更新成功才叫成功。
③去中心化集群,集群中只要有半数以上节点存活,Zookeeper集群就能正常服务。
1.3 数据结构
Zookeeper的数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称作一个ZNode。每一个ZNode默认能够存储1MB的数据,每个节点都可以通过其路径唯一标识。
好了,这里概念可能抽象,我来解释一下,每一个节点它是文件也是一个值,也就说它有文件的属性也有值的属性。
1.4 应用场景
其实Zookeeper的应用场景很多,我们在Hadoop入门里面就有一张框架图,Zookeeper它的位置大家记得的话,它是直接竖着的,所以说很多框架都会和Zookeeper交互。我就来说一下常用的场景:
①去中心化集群、协调出临时主机(当主机挂掉时再协调新的主机)(HA)
②提供主从结耦服务(Hbase,主机挂掉,短时间内从机不受影响)
2. Zookeeper的安装
本地安装部署
①拷贝Zookeeper安装包到Linux系统下
②解压到/opt/module目录下[atguigu@hadoop102 software]$ tar -zxvf zookeeper-3.5.7.tar.gz -C /opt/module/
③修改环境变量
[atguigu@hadoop102 ~]$ vim /etc/profile.d/my_env.sh
#JAVA_HOME export JAVA_HOME=/opt/module/jdk1.8.0_212 export PATH=$PATH:$JAVA_HOME/bin #HADOOP_HOME export HADOOP_HOME=/opt/module/hadoop-3.1.3 export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin #ZOOKEEPER_HOME export ZOOKEEPER_HOME=/opt/module/zookeeper export PATH=$PATH:$ZOOKEEPER_HOME/bin
④将/opt/module/zookeeper/conf这个路径下的zoo_sample.cfg,拷贝一份为zoo.cfg;(我在进行这部操作之前将Zookeeper解压的名字改成了Zookeeper)
[atguigu@hadoop102 conf]$ cp zoo_sample.cfg zoo.cfg
修改zoo.cfg文件
[atguigu@hadoop102 zookeeper]$ vim zoo.cfg
修改内容如下:
dataDir=/opt/module/zookeeper/zkData
大家在这里注意到了,我们没有ZkData这个文件夹,所以需要创建一个ZkData文件夹
[atguigu@hadoop102 zookeeper]$ mkdir zkData
这个时候就可以启动Zookeeper了
[atguigu@hadoop102 ~]$ zkServer.sh start
查看一下启动状态
[atguigu@hadoop102 ~]$ jps 4352 NodeManager 4753 JobHistoryServer 75173 Jps 3388 DataNode 1773 QuorumPeerMain 3183 NameNode
启动客户端
[atguigu@hadoop102 ~]$ zkCli.sh
退出客户端
[zk: localhost:2181(CONNECTED) 0] quit
3.Zookeeper操作
3.1 分布式安装部署
1.集群规划
在hadoop102、hadoop103、hadoop104上面部署Zookeeper。
2. 配置服务器编号
我们之前创建了一个ZkData文件夹没有使用,现在我们需要在这个文件夹下面创建一个myid的文件[atguigu@hadoop102 zkData]$ touch myid
编辑一下myid文件
[atguigu@hadoop102 zkData]$ vi myid 2
同步一下文件到hadoop103和hadoop104上面
[atguigu@hadoop102 zkData]$ xsync myid
分别将hadoop103和hadoop104上面的内容改为3和4。
3.配置zoo.cfg文件
打开zoo.cfg文件[atguigu@hadoop102 conf]$ vim zoo.cfg
增加如下配置
dataDir=/opt/module/zookeeper/zkData server.2=hadoop102:2888:3888 server.3=hadoop103:2888:3888 server.4=hadoop104:2888:3888
同步zoo.cfg文件
4.配置群起Zookeeper
我们在/opt/module/zookeeper/bin目录下创建一个脚本zk.sh[atguigu@hadoop102 bin]$ mkdir zk.sh
添加如下内容
#!/bin/bash if (($#==0)) then exit 1; fi for i