admin管理员组

文章数量:1566220

前言

本人是才学完大数据的无业游民,我将会总结学习收获或发表自己的学习心得,期望给初学者也为自己今后复习提供一些帮助。

我将陆续发布大数据阶段所学,包括但不限于(hadoop,hive,hbase,phoneix,flume,bdeaver,kafka,spark,kylin,flink,azkaban)。

为了减少犯错,我在写下自己的博客时,会查阅官方文档或类似文章,也会将出处标记于文章末尾。

如果你是一名初学者,有学习问题可以联系我,或许你将做的决定和会犯的错我也经历过。我们互相督促,共同进步吧!


目录

一、引入

1.zookeeper是什么

2.zookeeper能做什么

3.zookeeper优势是什么

4.zookeeper历史

5.为什么要学zookeeper

二、zookeeper详解

 1.zookeeper角色分配

Leader

Follower

Observer

 三、zookeeper伪集群搭建

前提条件

创建虚拟机并完成基础配置

1.创建虚拟机

2.虚拟机网络设置

3.虚拟机防火墙firewalld设置

4.虚拟机克隆以及基本配置

5.虚拟机之间免密

6.JDK安装以及环境变量配置

正式开始集群搭建

1.上传zookeeper安装包

2.zookeeper配置文件

3.zookeeper myid配置

4.拷贝与修改配置文件

四、zookeeper存储结构

储存结构

1.一个znode的格式

2. 节点的分类

五、zookeeper操作命令

六、zkServer的监听机制

七、 ACL权限控制与四字命令

权限设置

概述

SCHEME 采用何种方式授权

ID

permission 授予什么权限

ACL相关命令

四字命令

安装nc

使用方式

四字命令

总结

参考资料


一、引入

1.zookeeper是什么

  • zookeeper是一个开源的分布式协调器,是一个典型的分布式数据一致性解决方案,其设计目的是将复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的系统,并以一系列简单易用的原子操作提供给用户使用。
  • 它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。
  • 简单的说,zookeeper=文件系统+通知机制。

2.zookeeper能做什么

  1. 数据发布与订阅(配置中心)
  2. 分布式日志收集系统
  3. 负载均衡
  4. 命名服务(Naming Service)
  5. 分布式通知/协调
  6. 分布式锁
  7. 分布式队列

3.zookeeper优势是什么

  1. zookeeper对不同系统环境的支持都很好,在绝大多数主流的操作系统上都能够正常运行
  2. zookeeper的核心优势是,实现了分布式环境的数据一致性(也就是说,对zookeeper进行数据访问时,无论是什么时间,都不会引起脏读、重复读)

zookeeper提供的功能都是分布式系统中非常底层且必不可少的基本功能,如果开发者自己来实现这些功能而且要达到高吞吐、低延迟同时的还要保持一致性和可用性,实际上是非常困难的。因此,借助zookeeper提供的这些功能,开发者就可以轻松在zookeeper之上构建自己的各种分布式系统。

4.zookeeper历史

zookeeper最早起源于雅虎研究院的一个研究小组。在当时,研究人员发现,在雅虎内部很多大型系统基本都需要依赖一个类似的系统来进行分布式协调,但是这些系统往往都存在分布式单点问题。所以,雅虎的开发人员就试图开发一个通用的无单点问题的分布式协调框架,以便让开发人员将精力集中在处理业务逻辑上。

关于“ZooKeeper”这个项目的名字,其实也有一段趣闻。在立项初期,考虑到之前内部很多项目都是使用动物的名字来命名的(例如著名的Pig项目),雅虎的工程师希望给这个项目也取一个动物的名字。时任研究院的首席科学家RaghuRamakrishnan开玩笑地说:“在这样下去,我们这儿就变成动物园了!”此话一出,大家纷纷表示就叫动物园管理员吧一一一因为各个以动物命名的分布式组件放在一起,雅虎的整个分布式系统看上去就像一个大型的动物园了,而zookeeper正好要用来进行分布式环境的协调一一于是,zookeeper的名字也就由此诞生了。

5.为什么要学zookeeper

套用zookeeper官网的话来说:ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services。

这大概描述了zookeeper主要是一个分布式服务协调框架,实现同步服务,配置维护和命名服务等分布式应用。是一个高性能的分布式数据一致性解决方案。通俗地讲,zookeeper是动物园管理员,它是拿来管大象 Hadoop、鲸鱼 HBase、Kafka等的管理员。

就像是建房时需要先打地基一样,我们学习大数据,zookeeper是首要也是必要学习的。

二、zookeeper详解

 1.zookeeper角色分配

zookeeper有三种角色:

  • Leader(领导者)
  • Follower(跟随者)
  • Observer(观察者)。其中,Follower和Observer归类为Learner(学习者)

按重要性排序是Leader > Follower > Observer

Leader

Leader在集群中只有一个节点,是zookeeper集群的中心,负责协调集群中的其他节点。从性能的角度考虑,leader可以选择不接受客户端的连接。

主要作用有:

  1. 发起与提交写请求。

所有的跟随者Follower与观察者Observer节点的写请求都会转交给领导者Leader执行。Leader接受到一个写请求后,首先会发送给所有的Follower,统计Follower写入成功的数量。当有超过半数的Follower写入成功后,Leader就会认为这个写请求提交成功,通知所有的Follower commit这个写操作,保证事后哪怕是集群崩溃恢复或者重启,这个写操作也不会丢失。

  1. 与learner保持心跳
  2. 崩溃恢复时负责恢复数据以及同步数据到Learner

Follower

Follow在集群中有多个,主要的作用有:

  1. 与Leader保持心跳连接
  2. 当Leader挂了的时候,投票选取新的leader。leader的重新选举是由各个Follower内部投票决定的。
  3. 向leader发送消息与请求
  4. 处理leader发来的消息与请求

Observer

Observer是zookeeper集群中最边缘的存在。Observer的主要作用是提高zookeeper集群的读性能。通过leader我们知道zookeeper的一个写操作是要经过半数以上的Follower确认才能够写成功的。那么当zookeeper集群中的节点越多时,zookeeper的写性能就越差。为了在提高zookeeper读性能(也就是支持更多的客户端连接)的同时又不影响zookeeper的写性能,zookeeper集群多了一个儿子Observer,只负责:

  1. 与leader同步数据
  2. 不参与leader选举,没有投票权。也不参与写操作的提议过程。
  3. 数据没有事务化到硬盘。即Observer只会把数据加载到内存。

下图是zookeeper官方文档中不同节点的zookeeper集群的性能表现(节点角色只有leader和follower):

竖轴是每秒请求量,横轴是读请求的占比,不同颜色的曲线代表了不同数量的zookeeper节点,分别是3个节点,5个节点,7个节点,9个节点,13个节点。

可以看到,随着读请求所占的比例越来越多,zookeeper所能处理的请求数量是指数级得提升。除了三个节点的zookeeper集群外,当读请求占比达到100%时,从曲线上看其他数量的集群能够处理的请求几乎无穷大。

当读请求达到80%时,由于follower数量的增大导致写请求的耗时增长,节点数量越多的zookeeper吞吐量越小(三个节点的集群是个例外)。吞吐量排序是:5>7>3>9>13。

正常情况下所有的请求都是读请求是不可能的,肯定含有写请求。所以建议zookeeper集群的读写比例为7:3或8:2最好,机器数量为5或者7台,不仅成本低也有良好的性能表现。

 三、zookeeper伪集群搭建

zookeeper有三种运行模式:单机模式、伪集群模式和集群模式。

单机模式:这种模式一般适用于开发测试环境,一方面我们没有那么多机器资源,另外就是平时的开发调试并不需要极好的稳定性。

集群模式:一个 zookeeper集群通常由一组机器组成,一般 3 台以上就可以组成一个可用的 zookeeper集群了。组成 zookeeper集群的每台机器都会在内存中维护当前的服务器状态,并且每台机器之间都会互相保持通信。

伪集群模式:这是一种特殊的集群模式,即集群的所有服务器都部署在一台机器上。当你手头上有一台比较好的机器,如果作为单机模式进行部署,就会浪费资源,这种情况下,zookeeper允许你在一台机器上通过启动不同的端口来启动多个 zookeeper服务实例,以此来以集群的特性来对外服务。

前提条件

1.安装VMware (详情请微信关注pc软件之家)

傻瓜式安装,不多说。
百度云链接:https://pan.baidu/s/1OefZVl79hxn61xFJDPlLAA
提取码:f9yx
迅雷云链接:https://pan.xunlei/s/VMdzzlvS6W5_1g8Uo5tvNl3kA1
提取码:698g

2.下载镜像文件CentOS-7-x86_64-Minimal-2207-02.iso(安装虚拟机需要用到)

3.安装Xshell

Xshell 下载及安装教程

4.JDK下载(zookeeper集群需要安装jdk作为基础支持)

5.zookeeper linux安装包下载

创建虚拟机并完成基础配置

1.创建虚拟机

这里已经有博主做了总结,不再累述。

Linux虚拟机创建

2.虚拟机网络设置

本文标签: 学前集群详解保姆教程