当前位置: 首页 > news >正文

【八】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 处理。
  1. 会话和 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 . 环境准备

hostnameip
ubuntu1172.16.167.131
ubuntu2172.16.167.132
ubuntu3172.16.167.133

2 . 下载ZooKeeper 3.7.1(或其他兼容版本)的二进制文件

https://archive.apache.org/dist/zookeeper/zookeeper-3.7.1/

image.png

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 . 将环境变量分发到其他节点并刷新

image.png

4.配置ZooKeeper

1 . 进入ZooKeeper的配置目录:

cd /usr/local/zookeeper/conf

2 . 复制zoo_sample.cfgzoo.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分发到所有节点。

image.png

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

image.png

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>

image.png

8.重启Hadoop

1 . 重新启动Hadoop集群以应用新的配置:

stop-all.sh
start-all.sh

image.png

9.ZooKeeper状态检查

  • 使用ZooKeeper命令行客户端检查ZooKeeper的状态:
zkCli.sh -server ubuntu1:2181
  • 在ZooKeeper命令行客户端中,可以输入以下命令来检查集群状态:
ls /
stat

创建一个新的节点:

create /mytest "testdata"

验证节点创建:

ls /

删除节点:

delete /mytest

image.png

相关文章:

【八】Zookeeper3.7.1集成Hadoop3.3.4集群安装

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

【C/C++笔记】:易错难点3 (二叉树)

选择题 &#x1f308;eg1 一棵有15个节点的完全二叉树和一棵同样有15个节点的普通二叉树&#xff0c;叶子节点的个数最多会差多少个&#xff08;&#xff09;&#xff1f; 正确答案&#xff1a; C A. 3 B. 5 C. 7 D. 9 解析&#xff1a;普通二叉树的叶子节…...

一篇文章解决Webpack

一&#xff1a;什么是webpack webpack是一个用于现代JavaScript应用程序的静态模块打包工具。本质是一个软件包&#xff0c; 静态模块包括以下&#xff1a;html、css、js、图片等固定内容的文件 二&#xff1a;webpack工作原理 当 webpack 处理应用程序时&#xff0c;它会在内…...

速盾:cdn如何解析php文件中的图片?

CDN&#xff08;Content Delivery Network&#xff09;是一种通过分布在全球各地的服务器来加速网络内容传输的技术。CDN通过将内容缓存在离用户最近的服务器上&#xff0c;提供更快的访问速度和更好的用户体验。在解析PHP文件中的图片时&#xff0c;CDN可以起到以下几个方面的…...

如何快速实现MODBUS TCP转Profinet——泗博网关EPN-330

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

什么是实时数据仓库?它有哪些不可替代之处?

【实时数据仓库】可以分开来理解&#xff1a; ✅【实时数据】&#xff1a;即能够快速处理数据&#xff0c;且几乎无延迟的提供最新的数据的能力。 ✅【仓库管理】&#xff1a;可以理解为对仓库的库存控制、对仓库的存储优化以及协调物流。 那么实时数据仓库就是&#xff1a;…...

《Ubuntu22.04环境下的ROS2学习笔记1》

一、在ROS2环境下创建工作空间 ROS2相比ROS1来说工作空间的创建有较大的不同&#xff0c;同时工作空间中的四个目录被更换为src(存放源码) &#xff0c; build(存放编译的中间文件) &#xff0c; install(存放可执行文件) &#xff0c; log(日志)。同时命令行也有些许变化&…...

Jupyter nbextensions安装与使用

Jupyter nbextensions的安装与使用主要包括以下几个步骤&#xff1a; 一、安装步骤 确保已安装Jupyter Notebook 如果尚未安装Jupyter Notebook&#xff0c;可以使用pip命令进行安装&#xff1a; pip install jupyter 安装nbextensions 使用pip命令安装nbextensions包&#x…...

java.nio.charset.MalformedInputException: Input length = 1

1、问题 项目启动报错&#xff1a; Exception in thread "main" org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length 1提示原因&#xff1a; Caused by: java.nio.charset.MalformedInputException: Input length 1…...

yarn的安装和配置使用

文章目录 一、前言二、yarn简介三、yarn的特点四、yarn安装五、配置yarn5.1 全局配置5.2 项目配置 五、使用yarn六、yarn常用命令七、版本管理 一、前言 Yarn是facebook发布的一款取代npm的包管理工具&#xff0c;本文给大家介绍yarn的安装和使用&#xff0c;最详细教程&#…...

JVM知识总结(即时编译)

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 即时编译 Java编译器经过解释执行&#xff0c;其执行速度必然会比…...

【网络】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提供的一种能力&#xff0c;允许开发者在运行时对已有class代码进行注入和修改。用途: 增强和修改类执行&#xff0c;如IntelliJ IDEA使用JavaAgent增强JVM行为实现调试功能。 JavaAgent 工作原理 premain 方法: JavaAgent的入口点&#xff0c;接收…...

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文档自动化的奥秘&#xff1a;MkDocs的神奇之旅**第一部分&#xff1a;背景为什么选择MkDocs&#xff1f; 第二部分&#xff1a;MkDocs是什么&#xff1f;MkDocs&#xff1a;文档生成的瑞士军刀 第三部分&#xff1a;如何安装MkDocs&#xff1f;一键安装&…...

树莓派边缘计算网关搭建:集成MQTT、SQLite与Flask的完整解决方案

一、项目概述 随着物联网&#xff08;IoT&#xff09;的快速发展&#xff0c;边缘计算的应用越来越广泛。边缘计算可以将数据处理和分析推向离数据源更近的地方&#xff0c;从而降低延迟&#xff0c;提高效率。本文将介绍如何利用树莓派构建一个多协议边缘计算网关&#xff0c…...

如何通过GD32 MCU内部ADC参考电压通道提高采样精度?

ADC采样精度受很多因素影响&#xff0c;比如电源波动、参考电压波动、输入信号波动等&#xff0c;GD32 MCU内部提供了一个参考电压通道&#xff0c;理论上可以优化由于电源和参考电压较大波动引入的采样误差。 如下图所示&#xff0c;GD32F303 ADC内部17通道为VREFINT参考电压…...

Centos安装OpenSearch

Centos安装OpenSearch 下载并安装OpenSearch下载OpenSearch RPM包导入公共GNU Privacy Guard&#xff08;GPG&#xff09;密钥。此密钥验证您的OpenSearch实例是否已签名安装RPM包安装完设置开机自启动OpenSearch启动OpenSearch验证OpenSearch是否正确启动 测试OpenSearch向服务…...

【pkill pgrep】Centos/Linux pkill命令详细介绍

【pkill & pgrep】Centos/Linux pkill命令详细介绍 简介 基础语法 选项介绍 退出状态 基本用法 注意事项 简介 系统版本&#xff1a;Centos7.6 pkill命令用于杀死一个进程&#xff0c;会根据进程名称和其他属性杀死进程&#xff08;默认会向进程发送SIGTERM信号&…...

Java如何使用 HTTP 请求下载图片

工具类&#xff1a; public FileInputStream fileDownload(String fileLink) throws Exception {System.out.println("开始下载"fileLink);// 转码中文URL url new URL(encodeURLChinese(fileLink));System.out.println("fileLink:"url);// 开始下载Trust…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...

【LeetCode】算法详解#6 ---除自身以外数组的乘积

1.题目介绍 给定一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O…...

SQL Server 触发器调用存储过程实现发送 HTTP 请求

文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...

spring boot使用HttpServletResponse实现sse后端流式输出消息

1.以前只是看过SSE的相关文章&#xff0c;没有具体实践&#xff0c;这次接入AI大模型使用到了流式输出&#xff0c;涉及到给前端流式返回&#xff0c;所以记录一下。 2.resp要设置为text/event-stream resp.setContentType("text/event-stream"); resp.setCharacter…...

Netty自定义协议解析

目录 自定义协议设计 实现消息解码器 实现消息编码器 自定义消息对象 配置ChannelPipeline Netty提供了强大的编解码器抽象基类,这些基类能够帮助开发者快速实现自定义协议的解析。 自定义协议设计 在实现自定义协议解析之前,需要明确协议的具体格式。例如,一个简单的…...

python可视化:俄乌战争时间线关键节点与深层原因

俄乌战争时间线可视化分析&#xff1a;关键节点与深层原因 俄乌战争是21世纪欧洲最具影响力的地缘政治冲突之一&#xff0c;自2022年2月爆发以来已持续超过3年。 本文将通过Python可视化工具&#xff0c;系统分析这场战争的时间线、关键节点及其背后的深层原因&#xff0c;全面…...