[Hadoop] Zookeeper
Ref: 大数据zookeeper精讲视频课程
Ref: Zookeeper底层原理解析
目的,这个东西,很多东西都基于此,有必要系统地了解下。
前言
一、做什么
Hive优化 -> MapReduce优化
MySQL优化 --> SQL语句的优化
Zookeeper是个啥?负责各个组件的协调服务。
-
- Hadoop:大象
- Hive:小蜜蜂
- Hbase:海豚
Hadoop高可用模式HA,有两个主节点:一个active,一个standby。
Standby通过zookeeper了解active的节点是否还活着。
二、安装
Java写的,需要JDK成功。
防火墙 must 关闭!
conf目录下:
"以下只是基本的注意事项,详细内容看原视频"。
log4j.properties 日志文件
myid文件内容要与server.id保持一致。
zoo_sample.cfg 配置文件参照模
添加集群信息
server.1=hadoop01:2888:3000
server.2=hadoop02:2888:3000
server.3=hadoop03:2888:3000
2888, 3888 为内部通信端口。
启动 zk:
三个安装节点都需要单独启动。
zkServer.sh start
JPS: 启动完成后出现相应的进程 QuorumPeerMain。
但,不代表启动成功。
需要在其他节点也要启动。
zkServer.sh status
出现 Model: follower/leader,一主多从的架构。
投票机制:
第一次,每个人都会给自己投票,没有leader选出。
第二次,serverid低的 主动vote to serverid高的。
7-15个是比较优的选择。
三、Zookeeper来源
—— 解决分布式的数据一致性。
Namenode HA
namenode存在单点故障的问题 --> HA可以配置多个namenode,但只有一个是active的。
???
CAP理论
C: Consistency
A: Availability
P: Partition Tolerance
* Consistency 一致性:
强一致性:全部real time保持一致。
弱一致性:大部分保持一致即可。
最终一致性:接收一定时间的延迟。例如:HDFS
* Availability 可用性:
高可用,可持续对外提供服务。
* Tolerance 分区容错性:
对外提供满足一致性和可用性的服务。
BASE理论
Basically Available 基本可用
Soft State: 软状态
Eventually Consistent: 最终一致性
基于Paxos算法,希腊帮主选举算法
“过半”即可,有效投票。
Zookeeper是该算法的最完美实现。
Zookeeper 文件系统
一、八大特点
1. 在任意一个节点执行:zkCli.sh 都可以进入客户端。
2. 参看所有命令:help
connect hadoop02:2181
ls path
get path # 不存在文件也不存在目录。只是具备“类似的功能”,based on "znode"。
...
3. znode的分类方式一:按照生命周期
(a) 持久的znode:create 绝对路径 data ----> 例如:create /bd1803 ""
(b) 临时的znode:create -e 绝对路径 data ----> 不能有子节点
3. znode的分类方式二:按照有无编号
(a) 持久无编号节点 create path ""
(b) 持久有编号节点 create -s path ""
(c) 临时无编号节点 create -e path ""
(d) 临时有编号节点 create -e -s path ""
总之,共八大特点,详见视频:zookeeper的文件系统
二、znode 属性
通过zk shell来探索。
三、监听机制
分布式一致性依赖监听机制,监听znode。
四、Zookeeper 的api开发
本质上讲,就是通过Java编程控制znode,基本的操作类似上述已讲的内容。
/* implement */
Zookeeper的应用场景
一、命名服务 namespace
解决:分布式系统上可能的命名冲突。既可以保证全局唯一的命名,又可以保证全局统一的命名。
文件系统+监听
有编号的节点,可以多次创建。故,需要一个“无编号”的临时节点。
Nodecreate后,通过“监听”反馈给各个节点。
二、配置文件管理
Hadoop的时候,修改了配置文件 ---- 远程拷贝的。
集群中有几个节点就的修改几个节点,直到最后一个节点修改完成才能最终生效,时间延迟就是个问题。
修改一个文件,其他节点自动update。
三、集群管理
datanode的死亡和添加等。
将datanode作为zookeeper的一个znode。
四、锁
(1) 读锁 - 共享锁
(2) 写锁 - 排他锁
(3) 时序锁 - 先后顺序的锁
五、分布式队列
(1) 同步队列:当一个队列的成员都聚齐时,这个队列才有用,否则一直等待所有成员。
(2) fifo:队列按照fifo方式进行入队和出队操作。
其他参考:Zookeeper到底是干嘛的
End.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律