浅显易懂入门大数据系列:三、Zookeeper(超详细)

本文涉及的产品
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 浅显易懂入门大数据系列:三、Zookeeper(超详细)


前面的过程已经学习完了Hadoop的三大组件了,那么就可以去学习新的东西了,原本是应该学习HBase的。但是,因为 HBase严重依赖Zookeeper组件,所以,我们先简单将Zookeeper总结完,再学习HBase。


一、Zookeeper在Hadoop生态圈的位置


分布式环境下常见的问题

集群的管理问题,如何检测各个节点的生命状态

如何实现分布式锁

如何统一管理集群的配置文件

集群中某个节点的信息更新如何同步到整个集群的机器

集群内部的选举问题如何实现

抢占资源的时候,容易出现死锁和活锁,当处于活锁时每个线程都抢不到资源,会造成CPU的耗费,如何减少消耗

了解完分布式环境下所面临的问题后,其实我们接下来所要介绍的组件,就可以很轻松地来解决这些情况。我们继续来看一下什么是Zookeeper,Zookeeper的英文意思是动物管理员。Zookeeper在Hadoop生态圈里面,是处于一个分布式协调的服务,请看下面Hadoop生态圈的图:


微信图片_20220618203224.png

Hadoop生态圈中包含了很多组件,一眼望去,几乎所有组件的头像都是动物,唯独这个Zookeeper,是一个人的形象。我们都知道,我们人是要比动物高级的,其实也可以说明一个问题,我们的Zookeeper其实在大数据环境中,是一个非常重要的角色,主要体现在可以协调我们的其他组件。


二、Zookeeper的概念及特点


Zookeeper的概念

什么是Zookeeper?其实可以用一句简单的话来总结:Zookeeper是一个长得像Linux系统,但是每个目录又是可以存放内容的小型数据库。Zookeeper的每个目录,其实是称为我们Zookeeper里面的节点。操作起Zookeeper,其实就像在操作Linux系统一样。每个节点,又可以存放内容,比如说,可以简单存一下HBase(分布式列式数据库,数据主要存放在HDFS上)与HDFS的路由信息等。


Zookeeper的特点

部署Zookeeper的时候是要单独部署、单独配置,但是多个Zookeeper也将会组成一个集群。整个集群对外展示的是一个完整统一的视图,比如我们去操作Zookeeper集群,只需要对其中一台操作即可,其会同步到整个集群。

Zookeeper集群往往是部署奇数台,这是由于其内部选举机制所限制的。


Zookeeper的相关名词解释

节点:即目录,目录里面可以存放内容,各种应用场景,与节点的特性密切相关。

节点的特性有两种维度,第一维度为是持久还是临时,另一维度为是否有序。组合成四种类型:

1、临时节点(EPHEMERAL):创建者超时连接或者失去连接时,节点会被删除

2、持久节点(PERSISTENT):节点创建后会被持久化,客户端与Zookeeper断开连接后,该节点依旧存在

3、临时有序节点(EPHEMERAL_SEQUENTIAL)与持久有序节点(PERSISTENT_SEQUENTIAL)

创建的节点名称后会自动添加序号,如节点名称为"node",自动添加为"node1",顺序添加为"node2",以此类似,序号不断添加。

watcher机制:我们都知道Zookeeper是一个分布式协调服务,那么是怎么协调的呢?其实Zookeeper自己本身有一个watcher机制,监控着我们的节点变化的,就像是我们人的眼睛,可以监控着你的大数据集群里面哪些动物(服务器)出问题了,出了问题又会怎么操作,这些都离不开Zookeeper的watcher机制。


三、Zookeeper的常用应用场景


1、配置文件的同步:当集群里面,往往很多台服务器都使用相同的配置,如果突然配置文件里面的配置有改变,那么需要去修改每一台服务器的配置,这个时候就非常地麻烦,如果有了Zookeeper,那么我们可以在Zookeeper里的一个节点上存放好配置文件,因为我们的Zookeeper拥有监控机制,所以,当一台服务器的节点发生变化的时候,会被Zookeeper监控到,然后将改变结果,同步到Zookeeper集群,即同步到其他服务器。

2、分布式锁实现:每个用户都去Zookeeper里面创建临时序列节点,创建的节点是有序的,而且是临时的。我们可以让最小的有序节点来获取分布式锁,当获得锁的用户执行完程序,则删除其对应的节点,然后其他节点就是最小节点了,此时执行其他节点,以此类型进行下去,达到分布式锁的作用…

3、各个组件的HA(High Availability:高可用性)的实现:比如说,我们前面的HDFS集群,master节点上有一个Namenode进程,其余slaves节点分别有一个Datanode进程,当Namenode进程挂掉之后,整一个集群就挂了,这在大数据场景里面是不允许的。此时就可以用上我们的Zookeeper,监控集群的状态,比如说部署两个Namenode,其中一个是活跃状态,一个是备用状态,当活跃的Namenode服务器挂掉后,Zookeeper会监控到情况,并自动地切换备用状态Namenode会活跃状态。


四、配套教程详解


配套教程六之Zookeeper集群的安装与配置

教程:Zookeeper集群的安装与配置

此教程主要有两个步骤:

一、解压、配置Zookeeper


首先需要进入Zookeeper/conf路径下,将样本配置文件复制一份出来,当然更改名字也可以。配置主要配置两个东西,即datadir目录和log目录,一个是存放数据的,一个是存放日志的。配置好之后 ,教程里是先配置好环境变量就启动了,环境变量在前面已经说过了,启动后可以看到Zookeeper的主进程,但目前,Zookeeper是单节点的,不是集群的,下面我们来进行集群的配置。


1、给集群添加关系

我们继续编辑Zookeeper的配置文件,在里面添加服务器之间的关系,我们现在的情况是master、slave1、slave2,一共三台服务器,我们都准备安装Zookeeper,现在分配角色,比如说例子为:


server.0=hadoop-master:8880:7770
server.1=hadoop-slave1:8881:7771
server.2=hadoop-slave2:8882:7772


server.0,0表示此机器的机器标识符,hadoop-master为自己的集群的主机名,然后主机名后面是加上了两个端口,一个8880,一个是7770,前者是用来集群通讯的,后者是用来选举使用的,此端口号可以改变,但不可以冲突。所以,此处的配置是master为标识0,slave1为标识1,slave2为标识2,在后面我们还会用到此标识符。


2、加上标识符

在前面配置的datadir文件夹里面新建一个文件,叫myid,然后在里面添加上自己的标识符,比如说,master的为0。


二、同步Zookeeper到slavas节点并修改配置

修改好后,就可以同步master上的Zookeeper文件夹到从节点上了。同步完后,记得要修改各自的标识符,关系不需要改变,因为大家都是一样的,但myid记得要改。


同步后之后,就可以启动各自的Zookeeper了,启动后查看自己各自的状态,会发现其中一个为leader、两个为follower。


五、常见错误总结


1、很多初学者在配置Zookeeper集群关系的时候,经常忘记添加域名后面的两个端口号。

2、在Docker上安装Zookeeper,有时会没那么稳定,这跟资源使用情况也有关系,注意留意报错信息。

3、server.0的0需要与myid对应上,不对应上会报错。


文章总览


一、Zookeeper在Hadoop生态圈的位置

二、Zookeeper的概念及特点

Zookeeper的概念

Zookeeper的特点

Zookeeper的相关名词解释

三、Zookeeper的常用应用场景

四、配套教程详解

配套教程六之Zookeeper集群的安装与配置

五、常见错误总结

文章总览


后期更精彩

Zookeeper客户端实操?

Zookeeper的选举机制原理?

通过实操观察四种节点的特点?

通过实操理解Zookeeper三大应用场景?

通过实操实现HDFS的HA配置等等?


因为此文章仅根据个人了解,用白话形式记录,所以难免有些地方使用描述地不够恰当,甚至也会理解错误,恳请读者们指正,谢谢!我们努力提供更加友好的资料,不误导人。如果您想要加入我们,请与我们联系,谢谢。


相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
6月前
|
SQL 存储 分布式计算
ODPS开发大全:入门篇(3)
ODPS开发大全:入门篇
277 19
|
6月前
|
SQL 存储 分布式计算
ODPS开发大全:入门篇(1)
ODPS开发大全:入门篇
582 14
|
3月前
|
消息中间件 监控 Ubuntu
大数据-54 Kafka 安装配置 环境变量配置 启动服务 Ubuntu配置 ZooKeeper
大数据-54 Kafka 安装配置 环境变量配置 启动服务 Ubuntu配置 ZooKeeper
121 3
大数据-54 Kafka 安装配置 环境变量配置 启动服务 Ubuntu配置 ZooKeeper
|
5月前
|
分布式计算 资源调度 Hadoop
Hadoop入门基础(五):Hadoop 常用 Shell 命令一网打尽,提升你的大数据技能!
Hadoop入门基础(五):Hadoop 常用 Shell 命令一网打尽,提升你的大数据技能!
|
5月前
|
SQL 存储 分布式计算
MaxCompute 入门:大数据处理的第一步
【8月更文第31天】在当今数字化转型的时代,企业和组织每天都在产生大量的数据。有效地管理和分析这些数据变得至关重要。阿里云的 MaxCompute(原名 ODPS)是一个用于处理海量数据的大规模分布式计算服务。它提供了强大的存储能力以及丰富的数据处理功能,让开发者能够快速构建数据仓库、实时报表系统、数据挖掘等应用。本文将介绍 MaxCompute 的基本概念、架构,并演示如何开始使用这一大数据处理平台。
820 0
|
6月前
|
SQL 分布式计算 MaxCompute
ODPS开发大全:入门篇(2)
ODPS开发大全:入门篇
194 14
|
5月前
|
分布式计算 大数据 Java
Scala 入门指南:从零开始的大数据开发
Scala 入门指南:从零开始的大数据开发
|
6月前
|
存储 SQL 机器学习/深度学习
阿里云数加大数据计算服务MaxCompute学习路线图:从入门到精通
将所学知识应用于实际工作中并不断进行实践和创新是提升技术能力的关键所在。用户可以结合业务需求和技术发展趋势积极探索新的应用场景和解决方案,并在实践中不断总结经验和教训以提升自己的技术水平和实践能力。
|
6月前
|
分布式计算 大数据 Java
大数据开发语言Scala入门
大数据开发语言Scala入门
|
6月前
|
IDE 大数据 Java
「AIGC」大数据开发语言Scala入门
Scala,融合OOP和FP的多范式语言,在JVM上运行,常用于大数据处理,尤其与Apache Spark配合。要开始学习,安装Scala,选择IDE如IntelliJ。基础包括变量、数据类型、控制结构、函数。Scala支持类、对象、不可变数据结构、模式匹配和强大的并发工具。利用官方文档、教程、社区资源进行学习,并通过实践提升技能。
86 0

热门文章

最新文章