【八】Zookeeper3.7.1集成Hadoop3.3.4集群安装
文章目录
- 1.基本原理
- 2.下载并解压ZooKeeper
- 3.配置环境变量
- 4.配置ZooKeeper
- 5.创建数据目录并初始化myid
- 6.启动ZooKeeper
- 7.配置ZooKeeper集成到Hadoop
- 8.重启Hadoop
- 9.ZooKeeper状态检查
1.基本原理
ZooKeeper 是一个分布式协调服务,用于分布式系统中管理配置信息、命名、同步和集群服务。它提供了一种简单的接口来访问存储在其文件系统中的数据,同时为复杂的分布式系统提供了高可用性和一致性保障。以下是 ZooKeeper 的基本原理:
1 . 数据模型和 ZNode
- 数据模型:ZooKeeper 以分层命名空间的方式存储数据,类似于文件系统。每个节点称为一个 ZNode。
- ZNode:ZNode 是 ZooKeeper 中的基本数据单元,可以存储少量数据。它有两种类型:
- 持久节点(Persistent ZNode):即使客户端断开连接或系统重启,节点数据也会一直存在。
- 临时节点(Ephemeral ZNode):客户端会话结束时自动删除。
- 顺序节点(Sequential ZNode):自动在名称末尾附加一个单调递增的数字。
2 . 一致性保证
ZooKeeper 提供了一致性保障,确保以下条件:
- 原子性:操作要么成功,要么失败,没有中间状态。
- 顺序一致性:所有操作按照它们的执行顺序进行。
- 单一系统映像:所有客户端无论连接到哪个 ZooKeeper 服务器,看到的数据都是一致的。
- 耐久性:一旦操作成功执行,数据将被持久化,不会丢失。
- 及时性:在合理的时间内,客户端可以看到最近的系统状态。
3 . Leader 选举和复制
- 集群角色:ZooKeeper 集群由多个服务器(节点)组成,其中一个节点是 Leader,其余是 Follower。
- Leader 选举:在集群启动或 Leader 故障时,ZooKeeper 使用选举算法(如基于 ZAB 协议的选举)选举新的 Leader。
- 数据复制:Leader 负责处理所有的写请求,并将更新同步到所有 Follower,从而保持数据一致性。读请求可以由任何 Follower 处理。
- 会话和 Watcher
- 会话:客户端与 ZooKeeper 服务器之间的连接称为会话。会话有超时机制,如果客户端在指定时间内没有发送心跳包,ZooKeeper 将认为会话结束。
- Watcher:ZooKeeper 提供了一种监控机制,称为 Watcher。客户端可以在 ZNode 上设置 Watcher,当节点状态发生变化时,ZooKeeper 会通知客户端。这种机制常用于配置管理、命名服务和分布式锁等场景。
5 . 高可用性和容错
- 高可用性:ZooKeeper 依赖于集群的多台服务器提供服务,即使部分节点故障,也能继续提供服务。
- 容错性:ZooKeeper 能容忍少数节点的故障,而无需停止服务。只要集群中的活跃节点数量超过总节点数的一半(即超过多数节点),ZooKeeper 就能继续正常工作。
6 . ZAB 协议
ZooKeeper 使用的 ZAB 协议(ZooKeeper Atomic Broadcast)是一种基于投票的协议,确保了事务的顺序一致性和数据的复制。它包括两部分:选举阶段(用于选举 Leader)和 广播阶段(用于复制数据)。
7 . 典型应用
ZooKeeper 常用于分布式系统中的服务注册和发现、分布式锁、配置管理、分布式消息队列等。其高可用性和一致性特性使其成为这些场景中的关键组件。
总之,ZooKeeper 通过提供可靠的分布式协调机制和数据一致性保障,为分布式系统的构建和管理提供了强有力的支持。
2.下载并解压ZooKeeper
1 . 环境准备
hostname | ip |
---|---|
ubuntu1 | 172.16.167.131 |
ubuntu2 | 172.16.167.132 |
ubuntu3 | 172.16.167.133 |
2 . 下载ZooKeeper 3.7.1(或其他兼容版本)的二进制文件
https://archive.apache.org/dist/zookeeper/zookeeper-3.7.1/
3 . 解压缩文件并将其移动到适当的目录:
tar -xzf apache-zookeeper-3.7.1-bin.tar.gz
mv apache-zookeeper-3.7.1-bin /usr/local/zookeeper
3.配置环境变量
1 . 编辑/etc/profile
文件,添加ZooKeeper的环境变量:
vim /etc/profile
2 . 添加以下内容:
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
3 . 刷新环境变量:
source /etc/profile
4 . 将环境变量分发到其他节点并刷新
4.配置ZooKeeper
1 . 进入ZooKeeper的配置目录:
cd /usr/local/zookeeper/conf
2 . 复制zoo_sample.cfg
为zoo.cfg
:
cp zoo_sample.cfg zoo.cfg
3 . 编辑zoo.cfg
文件,进行基本配置:
vim zoo.cfg
根据你的集群环境修改以下内容,目录一定要注意:
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
initLimit=10
syncLimit=5server.1=ubuntu1:2888:3888
server.2=ubuntu2:2888:3888
server.3=ubuntu3:2888:3888
tickTime
:ZooKeeper中两个心跳之间的基本时间单位,以毫秒为单位。dataDir
:存储快照的目录。clientPort
:客户端连接到ZooKeeper服务器的端口。initLimit
:允许追随者(Follwer)在连接并同步到Leader之前可以进行的心跳数。syncLimit
:Leader与Follower之间发送消息、请求和响应时间的数量。server.X
:ZooKeeper集群中服务器的配置,ubuntu1
,ubuntu2
,ubuntu3
是你的服务器主机名或IP地址。- 用scp命令,将zookeeper分发到所有节点。
5.创建数据目录并初始化myid
1 . 在每个ZooKeeper节点上创建数据目录:
mkdir -p /var/lib/zookeeper
chmod -R 755 /var/lib/zookeeper
2 . 在每个节点的数据目录中创建myid
文件,并写入对应的服务器编号(1,2,3):
echo "1" > /var/lib/zookeeper/myid # 在ubuntu1上
echo "2" > /var/lib/zookeeper/myid # 在ubuntu2上
echo "3" > /var/lib/zookeeper/myid # 在ubuntu3上
6.启动ZooKeeper
1 . 在每个节点上启动ZooKeeper服务:
zkServer.sh start
2 . 验证每个节点ZooKeeper是否正常启动:
zkServer.sh status
7.配置ZooKeeper集成到Hadoop
1 . 修改Hadoop的core-site.xml
文件,添加ZooKeeper的Quorum配置:
vim $HADOOP_HOME/etc/hadoop/core-site.xml
2 . 添加以下内容:
<property><name>ha.zookeeper.quorum</name><value>ubuntu1:2181,ubuntu2:2181,ubuntu3:2181</value>
</property>
8.重启Hadoop
1 . 重新启动Hadoop集群以应用新的配置:
stop-all.sh
start-all.sh
9.ZooKeeper状态检查
- 使用ZooKeeper命令行客户端检查ZooKeeper的状态:
zkCli.sh -server ubuntu1:2181
- 在ZooKeeper命令行客户端中,可以输入以下命令来检查集群状态:
ls /
stat
创建一个新的节点:
create /mytest "testdata"
验证节点创建:
ls /
删除节点:
delete /mytest
相关文章:

【八】Zookeeper3.7.1集成Hadoop3.3.4集群安装
文章目录 1.基本原理2.下载并解压ZooKeeper3.配置环境变量4.配置ZooKeeper5.创建数据目录并初始化myid6.启动ZooKeeper7.配置ZooKeeper集成到Hadoop8.重启Hadoop9.ZooKeeper状态检查 1.基本原理 ZooKeeper 是一个分布式协调服务,用于分布式系统中管理配置信息、命名…...

【C/C++笔记】:易错难点3 (二叉树)
选择题 🌈eg1 一棵有15个节点的完全二叉树和一棵同样有15个节点的普通二叉树,叶子节点的个数最多会差多少个()? 正确答案: C A. 3 B. 5 C. 7 D. 9 解析:普通二叉树的叶子节…...
一篇文章解决Webpack
一:什么是webpack webpack是一个用于现代JavaScript应用程序的静态模块打包工具。本质是一个软件包, 静态模块包括以下:html、css、js、图片等固定内容的文件 二:webpack工作原理 当 webpack 处理应用程序时,它会在内…...
速盾:cdn如何解析php文件中的图片?
CDN(Content Delivery Network)是一种通过分布在全球各地的服务器来加速网络内容传输的技术。CDN通过将内容缓存在离用户最近的服务器上,提供更快的访问速度和更好的用户体验。在解析PHP文件中的图片时,CDN可以起到以下几个方面的…...

如何快速实现MODBUS TCP转Profinet——泗博网关EPN-330
泗博网关EPN-330可作为PROFINET从站,支持与西门子S7-200 SMART/300/400/1200/1500全系列PLC以及具有PROFINET主站的系统无缝对接,而Modbus TCP端,可以与Modbus TCP从站设备、主站PLC、DCS系统以及组态软件等进行数据交互。 通过EPN-330&…...

什么是实时数据仓库?它有哪些不可替代之处?
【实时数据仓库】可以分开来理解: ✅【实时数据】:即能够快速处理数据,且几乎无延迟的提供最新的数据的能力。 ✅【仓库管理】:可以理解为对仓库的库存控制、对仓库的存储优化以及协调物流。 那么实时数据仓库就是:…...

《Ubuntu22.04环境下的ROS2学习笔记1》
一、在ROS2环境下创建工作空间 ROS2相比ROS1来说工作空间的创建有较大的不同,同时工作空间中的四个目录被更换为src(存放源码) , build(存放编译的中间文件) , install(存放可执行文件) , log(日志)。同时命令行也有些许变化&…...
Jupyter nbextensions安装与使用
Jupyter nbextensions的安装与使用主要包括以下几个步骤: 一、安装步骤 确保已安装Jupyter Notebook 如果尚未安装Jupyter Notebook,可以使用pip命令进行安装: pip install jupyter 安装nbextensions 使用pip命令安装nbextensions包&#x…...

java.nio.charset.MalformedInputException: Input length = 1
1、问题 项目启动报错: Exception in thread "main" org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length 1提示原因: Caused by: java.nio.charset.MalformedInputException: Input length 1…...
yarn的安装和配置使用
文章目录 一、前言二、yarn简介三、yarn的特点四、yarn安装五、配置yarn5.1 全局配置5.2 项目配置 五、使用yarn六、yarn常用命令七、版本管理 一、前言 Yarn是facebook发布的一款取代npm的包管理工具,本文给大家介绍yarn的安装和使用,最详细教程&#…...

JVM知识总结(即时编译)
文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 即时编译 Java编译器经过解释执行,其执行速度必然会比…...

【网络】TCP协议——TCP连接相关、TCP连接状态相关、TCP数据传输与控制相关、TCP数据处理和异常、基于TCP应用层协议
文章目录 Linux网络1. TCP协议1.1 TCP连接相关1.1.1 TCP协议段格式1.1.2 确定应答(ACK)机制1.1.3 超时重传机制 1.2 TCP连接状态相关1.2.1 TIME_WAIT状态1.2.2 CLOSE_WAIT 状态 1.3 TCP数据传输与控制相关1.3.1 滑动窗口1.3.2 流量控制1.3.3 拥塞控制1.3.4 延迟应答1.3.5 捎带应…...
一起看看JavaAgent到底是干啥用的
JavaAgent 简介 定义: JDK提供的一种能力,允许开发者在运行时对已有class代码进行注入和修改。用途: 增强和修改类执行,如IntelliJ IDEA使用JavaAgent增强JVM行为实现调试功能。 JavaAgent 工作原理 premain 方法: JavaAgent的入口点,接收…...

k8s工作负载控制器--DaemonSet
文章目录 一、概述二、适用场景三、基本操作1、官网的DaemonSet资源清单2、字段解释3、编写DaemonSet资源清单4、基于yaml创建DaemonSet5、注意点5.1、必须字段5.2、DaemonSet 对象的名称5.3、.spec.selector 与 .spec.template.metadata.labels之间的关系 6、查看DaemonSet6.1…...

探索Python文档自动化的奥秘:MkDocs的神奇之旅
文章目录 **探索Python文档自动化的奥秘:MkDocs的神奇之旅**第一部分:背景为什么选择MkDocs? 第二部分:MkDocs是什么?MkDocs:文档生成的瑞士军刀 第三部分:如何安装MkDocs?一键安装&…...
树莓派边缘计算网关搭建:集成MQTT、SQLite与Flask的完整解决方案
一、项目概述 随着物联网(IoT)的快速发展,边缘计算的应用越来越广泛。边缘计算可以将数据处理和分析推向离数据源更近的地方,从而降低延迟,提高效率。本文将介绍如何利用树莓派构建一个多协议边缘计算网关,…...

如何通过GD32 MCU内部ADC参考电压通道提高采样精度?
ADC采样精度受很多因素影响,比如电源波动、参考电压波动、输入信号波动等,GD32 MCU内部提供了一个参考电压通道,理论上可以优化由于电源和参考电压较大波动引入的采样误差。 如下图所示,GD32F303 ADC内部17通道为VREFINT参考电压…...
Centos安装OpenSearch
Centos安装OpenSearch 下载并安装OpenSearch下载OpenSearch RPM包导入公共GNU Privacy Guard(GPG)密钥。此密钥验证您的OpenSearch实例是否已签名安装RPM包安装完设置开机自启动OpenSearch启动OpenSearch验证OpenSearch是否正确启动 测试OpenSearch向服务…...

【pkill pgrep】Centos/Linux pkill命令详细介绍
【pkill & pgrep】Centos/Linux pkill命令详细介绍 简介 基础语法 选项介绍 退出状态 基本用法 注意事项 简介 系统版本:Centos7.6 pkill命令用于杀死一个进程,会根据进程名称和其他属性杀死进程(默认会向进程发送SIGTERM信号&…...
Java如何使用 HTTP 请求下载图片
工具类: public FileInputStream fileDownload(String fileLink) throws Exception {System.out.println("开始下载"fileLink);// 转码中文URL url new URL(encodeURLChinese(fileLink));System.out.println("fileLink:"url);// 开始下载Trust…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...

Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

Golang——9、反射和文件操作
反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...
作为测试我们应该关注redis哪些方面
1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...