大数据 ZooKeeper(一):基本知识和集群搭建
发布时间:2022-10-26 10:59:55 所属栏目:大数据 来源:
导读: 基本知识和集群搭建一、基础知识1、ZooKeeper概述
Zookeeper是一个分布式协调服务的开源框架。主要用来解决分布式集群中应用系统的一致性问题。
ZooKeeper本质上是一个分布式的小文件存储系统。
Zookeeper是一个分布式协调服务的开源框架。主要用来解决分布式集群中应用系统的一致性问题。
ZooKeeper本质上是一个分布式的小文件存储系统。
|
基本知识和集群搭建一、基础知识1、ZooKeeper概述 Zookeeper是一个分布式协调服务的开源框架。主要用来解决分布式集群中应用系统的一致性问题。 ZooKeeper本质上是一个分布式的小文件存储系统。提供基于类似于文件系统的目录树方式的数据存储,并且可以对树中的节点进行有效管理。从而用来维护和监控你存储的数据的状态变化。通过监控这些数据状态的变化,从而可以达到基于数据的集群管理。 2、ZooKeeper特性全局数据一致:集群中每个服务器保存一份相同的数据副本,client无论连接到哪个服务器,展示的数据都是一致的,这是最重要的特征;可靠性:如果消息被其中一台服务器接受,那么将被所有的服务器接受。顺序性:包括全局有序和偏序两种:全局有序是指如果在一台服务器上消息a在消息b前发布,则在所有Server上消息a都将在消息b前被发布;偏序是指如果一个消息b在消息a后被同一个发送者发布,a必将排在b前面。数据更新原子性:一次数据更新要么成功(半数以上节点成功),要么失败,不存在中间状态;实时性:Zookeeper保证客户端将在一个时间间隔范围内获得服务器的更新信息,或者服务器失效的信息。3、ZooKeeper集群角色 Leader: Zookeeper集群工作的核心 事务请求(写操作)的唯一调度和处理者,保证集群事务处理的顺序性; 集群内部各个服务器的调度者。 对于create,setData,delete等有写操作的请求,则需要统一转发给leader处理,leader需要决定编号、执行操作,这个过程称为一个事务。 Follower: 处理客户端非事务(读操作)请求,转发事务请求给Leader; 参与集群Leader选举投票。 此外,针对访问量比较大的zookeeper集群,还可新增观察者角色。 Observer: 观察者角色,观察Zookeeper集群的最新状态变化并将这些状态同步过来,其对于非事务请求可以进行独立处理,对于事务请求,则会转发给Leader服务器进行处理。 不会参与任何形式的投票只提供非事务服务,通常用于在不影响集群事务处理能力的前提下提升集群的非事务处理能力。 4、Zookeeper数据模型 图中的每个节点称为一个Znode。 每个Znode由3部分组成: ZooKeeper的数据模型,在结构上和标准文件系统的非常相似,拥有一个层次的命名空间,都是采用树形层次结构,ZooKeeper树中的每个节点被称为—Znode。和文件系统的目录树一样,ZooKeeper树中的每个节点可以拥有子节点。但也有不同之处: 1. Znode兼具文件和目录两种特点,既像文件一样维护着数据、元信息、ACL、时间戳等数据结构,又像目录一样可以作为路径标识的一部分,并可以具有子Znode。用户对Znode具有增、删、改、查等操作(权限允许的情况下)。 2. Znode具有原子性操作,读操作将获取与节点相关的所有数据,写操作也将替换掉节点的所有数据。另外,每一个节点都拥有自己的ACL(访问控制列表),这个列表规定了用户的权限,即限定了特定用户对目标节点可以执行的操作。 3. Znode存储数据大小有限制,ZooKeeper虽然可以关联一些数据,但并没有被设计为常规的数据库或者大数据存储,相反的是,它用来管理调度数据,比如分布式应用中的配置文件信息、状态信息、汇集位置等等。这些数据的共同特性就是它们都是很小的数据,通常以KB为大小单位。ZooKeeper的服务器和客户端都被设计为严格检查并限制每个Znode的数据大小至多1M,当时常规使用中应该远小于此值。 4. Znode通过路径引用,如同Unix中的文件路径。路径必须是绝对的,因此他们必须由斜杠字符来开头。除此以外,他们必须是唯一的,也就是说每一个路径只有一个表示,因此这些路径不能改变。在ZooKeeper中,路径由Unicode字符串组成,并且有一些限制。字符串"/zookeeper"用以保存管理信息,比如关键配额信息。 ① stat:此为状态信息, 描述该Znode的版本, 权限等信息 ② data:与该Znode关联的数据 ③ children:该Znode下的子节点 5、Zookeeper节点类型 Znode有两种,分别为临时节点和永久节点。 节点的类型在创建时即被确定,并且不能改变。 临时节点:该节点的生命周期依赖于创建它们的会话。一旦会话结束,临时节点将被自动删除,当然可以也可以手动删除。临时节点不允许拥有子节点。永久节点:该节点的生命周期不依赖于会话,并且只有在客户端显示执行删除操作的时候,他们才能被删除。 Znode还有一个序列化的特性,如果创建的时候指定的话,该Znode的名字后面会自动追加一个不断增加的序列号。序列号对于此节点的父节点来说是唯一的,这样便会记录每个子节点创建的先后顺序。它的格式为“d”(10位数字,没有数值的数位用0补充,例如“0000000001”)。 这样便会存在四种类型的Znode节点,分别对应: PERSISTENT:永久节点 EPHEMERAL:临时节点 PERSISTENT_SEQUENTIAL:永久节点、序列化 EPHEMERAL_SEQUENTIAL:临时节点、序列化 二、ZooKeeper 集群搭建 Zookeeper 集群搭建指的是 ZooKeeper 分布式模式安装。通常由 2n+1 台 server 组成。这是因为为了保证 Leader 选举(基于 Paxos 算法的实现)能过得到多数的支持,所以 ZooKeeper 集群的数量一般为奇数。 Zookeeper 运行需要 java 环境,所以需要提前安装 jdk。对于安装 leader+follower 模式的集群,大致过程如下: 如果要想使用 Observer 模式,可在对应节点的配置文件添加如下配置: peerType=observer 其次,必须在配置文件指定哪些节点被指定为 Observer,如: server.1:node1:2181:3181:observer 其次,必须在配置文件指定哪些节点被指定为 Observer,如:server.1:localhost:2181:3181:observer 这里,我们安装的是 leader+follower 模式 1、下载 zookeeeper 的压缩包 下载网址如下 Index of /dist/zookeeper 我们在这个网址下载我们使用的 zk 版本为 3.4.6 下载完成之后,上传到我们的 linux 的/export/software 路径下准备进行安装 2、解压 在 node1 主机上,解压 zookeeper 的压缩包到/export/server 路径下去,然后准备进行安装 cd /export/software tar -zxvf zookeeper-3.4.6.tar.gz -C /export/server/ 3、修改配置文件 在 node1 主机上,修改配置文件 cd /export/server/zookeeper-3.4.6/conf/ cp zoo_sample.cfg zoo.cfg vim zoo.cfg 修改以下内容 #Zookeeper的数据存放目录 dataDir=/export/servers/zookeeper-3.4.6/zkdatas # 保留多少个快照 autopurge.snapRetainCount=3 # 日志多少小时清理一次 autopurge.purgeInterval=1 # 集群中服务器地址 server.1=node1:2888:3888 server.2=node2:2888:3888 server.3=node3:2888:3888 4、添加 myid 配置 在 node1 主机的/export/server/zookeeper-3.4.6/zkdatas/这个路径下创建一个文件大数据存储系统,文件名为 myid ,文件内容为 1 echo 1 > /export/server/zookeeper-3.4.6/zkdatas/myid 5、安装包分发并修改 myid 的值 在 node1 主机上,将安装包分发到其他机器第一台机器上面执行以下两个命令 scp -r /export/server/zookeeper-3.4.6/ node2:/export/server/ scp -r /export/server/zookeeper-3.4.6/ node3:/export/server/ 第二台机器上修改 myid 的值为 2 echo 2 > /export/server/zookeeper-3.4.6/zkdatas/myid 第三台机器上修改 myid 的值为 3 echo 3 > /export/server/zookeeper-3.4.6/zkdatas/myid 6、三台机器启动 zookeeper 服务 三台机器分别启动 zookeeper 服务 这个命令三台机器都要执行 /export/server/zookeeper-3.4.6/bin/zkServer.sh start 三台主机分别查看启动状态 /export/server/zookeeper-3.4.6/bin/zkServer.sh status (编辑:财气旺网 - 海宁网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐

