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

Zookeeper搭建

目录

前言

初了解Zookeeper

搭建

准备

配置Zookeeper


前言

今天来介绍Zookeeper的搭建,其实Zookeeper的搭建很简单,但是为什么还要单独整一节呢,这就不得不先了解Zookeeper有什么功能了!而且现在很火的框架也离不开Zookeeper,比如说HaddopHA高可用框架,很多在Linux里面运行的Hbase数据库,Kafka也离不开Zookeeper所以在搭建前我们先来了解一下Zookeeper

初了解Zookeeper

首先我们先看来自Zookeeper官网对它的解释:

Apache ZooKeeper是一个开源的分布式协调服务,它为分布式应用程序提供了一系列的服务,包括配置维护、命名、分布式同步和组服务等。ZooKeeper的目标是为分布式应用程序提供一个高性能、高可用且具有严格顺序访问控制能力的分布式协调存储服务。它通过一个简单的接口提供了这些服务,使得开发人员无需从头开始编写这些服务,从而可以专注于实现应用程序的核心业务逻辑。

ZooKeeper使用Zab这种一致性协议来保证数据的一致性,这使得ZooKeeper成为一个经典的分布式数据一致性解决方案。此外,ZooKeeper也提供了丰富的API和工具,使得开发人员可以轻松地集成和使用ZooKeeper。

ZooKeeper是一个集中式的服务,它维护了一个类似于文件系统的目录树结构,用于存储和管理分布式应用程序的配置信息和状态信息。通过ZooKeeper,分布式应用程序可以实现集群管理、领导选举、分布式锁等功能,从而提高了系统的可靠性和性能。

那么简单来说就是,Apache ZooKeeper是一个功能强大、易于使用的分布式协调服务,它为分布式应用程序提供了高效、可靠、可扩展的协调机制,是构建大规模分布式系统的重要基础设施之一。从设计模式的角度来看Zookeeper是一个基于观察者模式设计的分布式服务管理框架。它负责存储和管理数据,并接受观察者的注册。一旦这些数据的状态发生变化,Zookeeper将负责通知已经在Zookeeper上注册的观察者,使其做出相应的反应。即 管理者

Zookeeper的核心特点是其集群结构,由一个领导者(Leader)和多个跟随者(Follower)组成。集群中只要有半数以上的节点存活,Zookeeper集群就能正常服务。此外,每个Server保存一份相同的数据副本,确保Client无论连接到哪个Server,数据都是一致的,这保证了Zookeeper的全局数据一致性

了解完了Zookeeper的大概之后,我们就可以进入搭建环节了

搭建

准备

紧接上一章hadoop完全分布式的搭建

我们继续使用上一章的集群即可

配置Zookeeper

与之前的步骤也大差不差

 解压

tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module/

配置环境

#ZOOKEPPER_HOME
export ZOOKEEPER_HOME=/opt/module/zookeeper-3.5.7
export PATH=$PATH:$ZOOKEEPER_HOME/bin

配置文件

在/zookeeper-3.5.7/conf目录下的zoo_sample.cfg文件

修改zoo_sample.cfg文件变为zoo.cfg,并修改其内容,并添加内容

修改其名字

 mv zoo_sample.cfg zoo.cfg

修改其内容

dataDir=/opt/module/zookeeper-3.5.7/zkData

添加

server.1=bigdata1:2888:3888
server.2=bigdata2:2888:3888
server.3=bigdata3:2888:3888

在/zookeeper-3.5.7目录下创建zkData

mkdir zkData

在zkData目录下创建myid文件

touch myid
vim myid
#或者直接使用vim myid命令,vim一个不存在的文件,系统会自动为你创建这个文件

三台服务器中的myid的内容分别是

1
2
3

分发

和之前一样

xsync /opt/module/
xsync /etc/profile

xsync脚本上一章有,自行查看提取,xsync底层逻辑用的是scp和rsync

验证:

三台服务器分别启动,一定要先分别启动才可以去查看状态

./zkServer.sh start

三台服务器分别查看状态

./zkServer.sh status

出现一个领导者(Leader)和多个跟随者(Follower)就算成功

补充:

​​​​​​如果三台节点的zookeeper启动都没问题,但是查看状态的时候报错

报错信息为:Error contacting service. It is probably not running. 到这里不要担心,这是个常见问题,我们要试着去解决这个问题

1.防火墙是不是没有关闭

输入以下命令,查看防火墙状态

systemctl status firewalld

如果防火墙正在运行就关闭它,输入以下命令,关闭防火墙

systemctl stop firewalld

输入以下命令 ,禁止防火墙随着系统启动而启动,如果不设置每当你启动节点的时候都会自动帮你开启防火墙,很多功能都实现不了,在学习阶段一定要设置

systemctl disable firewalld

再启动Zookeeper,查看状态,一般就成功了。有一般就会有特殊情况

2.端口被占用导致

我们的端口是 2181

输入以下命令,检查端口2181是否被占用 

netstat -apn | grep 2181

如果有进程占用了2181端口,输入以下命令,杀死 带编号的进程(这里编号拟为14979)

kill -9 14979
  •  -9:是强制杀死,不管你是什么,非常危险,看准在删,因为有的进程一旦杀死就起不来了

再输入检查命令,看是否有占用。若有继续删除,若没有则重新启动Zookeeper

到这里了基本上也不会有什么问题了

相关文章:

Zookeeper搭建

目录 前言 初了解Zookeeper 搭建 准备 配置Zookeeper 前言 今天来介绍Zookeeper的搭建,其实Zookeeper的搭建很简单,但是为什么还要单独整一节呢,这就不得不先了解Zookeeper有什么功能了!而且现在很火的框架也离不开Zookeepe…...

2.Datax数据同步之Windows下,mysql和sqlserver之间的自定义sql文数据同步

目录 前言步骤操作大纲步骤明细mysql 至 sqlServersqlServer 至 mysql执行同步语句中报 前言 上一篇文章实现了不同的mysql数据库之间的数据同步,在此基础上本篇将实现mysql和sqlserver之间的自定义sql文数据同步 准备工作: JDK(1.8以上,推…...

commonjs和esmodule

commonjs的模块导出和引用写法: lib.js 导出一个模块 let a 1 let b 2 function aPlus1() {return a } module.exports {a,b,aPlus1 } index.js引用一个模块 const {a,b,aPlus1} require(./lib.js) console.log(hh:,a) esmodule的模块导出和引用方法&#x…...

Android的编译系统

安卓的编译真的太多吐槽的地方了,有必须到croot下编译的,有随便改个.c就要七八分钟编译的。我有时候真的不知道这么多开发人员是怎么挺过来的。 今晚简单看看这个编译系统soong吧。 算了,下面这个写的很好了,我先看看吧。。。 …...

Midjourney指控Stability AI夜袭数据,网络风波一触即发

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

JVM知识整体学习

前言:本篇没有任何建设性的想法,只是我很早之前在学JVM时记录的笔记,只是想从个人网站迁移过来。文章其实就是对《深入理解JVM虚拟机》的提炼,纯基础知识,网上一搜一大堆。 一、知识点脑图 本文只谈论HotSpots虚拟机。…...

蓝桥杯--日期统计

目录 一、题目 二、解决代码 三、代码分析 ​四、另一种思路 五、关于set文章推荐 一、题目 二、解决代码 #include <bits/stdc.h> using namespace std; int main() {int arr[100] { 5,6,8,6,9,1,6,1,2,4,9,1,9,8,2,3,6,4,7,7,5,9,5,0,3,8,7,5,8,1,5,8,6,1,8,3,0,…...

[leetcode~dfs]1261. 在受污染的二叉树中查找元素

给出一个满足下述规则的二叉树&#xff1a; root.val 0 如果 treeNode.val x 且 treeNode.left ! null&#xff0c;那么 treeNode.left.val 2 * x 1 如果 treeNode.val x 且 treeNode.right ! null&#xff0c;那么 treeNode.right.val 2 * x 2 现在这个二叉树受到「污…...

PyQt5使用

安装Pyqt5信号与槽使用可视化界面编辑UI (Pyside2)ui生成之后的使用(两种方法)1 ui转化为py文件 进行import2 动态调用UI文件 安装Pyqt5 pip install pyqt5-tools这时候我们使用纯代码实现一个简单的界面 from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButto…...

利用GPT开发应用005:Codex、Turbo、ChatGPT、GPT-4

文章目录 一、GPT-3 Codex二、GPT-3.5 Turbo二、ChatGPT三、GPT-4 一、GPT-3 Codex 2022年3月&#xff0c;OpenAI 发布了 GPT-3 Codex 的新版本。 这个新模型具有编辑和插入文本的能力。它们是通过截至 2021 年 6 月的数据进行训练的&#xff0c;并被描述为比之前版本更强大。到…...

制造行业大数据应用:四大领域驱动产业升级与智慧发展

一、大数据应用&#xff1a;制造行业的智慧引擎 随着大数据技术的不断突破与普及&#xff0c;制造行业正迎来一场前所未有的变革。大数据应用&#xff0c;如同智慧引擎一般&#xff0c;为制造行业注入了新的活力&#xff0c;推动了产业升级与创新发展。 二、大数据应用在制造行…...

25.5 MySQL 聚合函数

1. 聚合函数 聚合函数(Aggregate Function): 是在数据库中进行数据处理和计算的常用函数. 它们可以对一组数据进行求和, 计数, 平均值, 最大值, 最小值等操作, 从而得到汇总结果.常见的聚合函数有以下几种: SUM: 用于计算某一列的数值总和, 可以用于整数, 小数或者日期类型的列…...

多维时序 | Matlab实现VMD-CNN-LSTM变分模态分解结合卷积神经网络结合长短期记忆神经网络多变量时间序列预测

多维时序 | Matlab实现VMD-CNN-LSTM变分模态分解结合卷积神经网络结合长短期记忆神经网络多变量时间序列预测 目录 多维时序 | Matlab实现VMD-CNN-LSTM变分模态分解结合卷积神经网络结合长短期记忆神经网络多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介…...

用Python进行机器学习:Scikit-learn的入门与实践【第126篇—Scikit-learn的入门】

用Python进行机器学习&#xff1a;Scikit-learn的入门与实践 随着机器学习在各个领域的广泛应用&#xff0c;Python成为了一个备受欢迎的机器学习工具之一。在众多机器学习库中&#xff0c;Scikit-learn因其简单易用、功能强大而备受青睐。本文将介绍Scikit-learn的基本概念&am…...

2024年G3锅炉水处理证模拟考试题库及G3锅炉水处理理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年G3锅炉水处理证模拟考试题库及G3锅炉水处理理论考试试题是由安全生产模拟考试一点通提供&#xff0c;G3锅炉水处理证模拟考试题库是根据G3锅炉水处理最新版教材&#xff0c;G3锅炉水处理大纲整理而成&#xff0…...

常用的gpt网站

ChatGPT是一款基于人工智能技术的对话型AI助手&#xff0c;能够进行自然语言交互并提供个性化的对话服务。通过先进的深度学习模型&#xff0c;ChatGPT能够理解用户输入的文本&#xff0c;并生成有逻辑、连贯性的回复。它可以回答各种问题、提供建议、分享知识&#xff0c;还能…...

java中string类型常用的37个函数

java中string类型常用的37个函数—无极低码 int indexOf(int ch, int fromIndex) 、int indexOf(int ch) 、int indexOf(String str, int fromIndex) 、int indexOf(String str) 、int lastIndexOf(int ch, int fromIndex) 、int lastIndexOf(int ch) 、int lastIndexOf(Strin…...

【JVM】字节码指令 getstatic

在Java虚拟机&#xff08;JVM&#xff09;中&#xff0c;getstatic 是一个字节码指令&#xff0c;用于从类的静态字段&#xff08;Static Field&#xff09;获取值&#xff0c;并将这个值压入当前方法的操作数栈顶。这个操作仅适用于类级别的静态变量&#xff0c;而非实例变量。…...

P1179 [NOIP2010 普及组] 数字统计

#include <bits/stdc.h> using namespace std;int main(){int l;int r;cin>>l>>r;int sum 0;for (int i l;i < r;i){int temp 0;int j i;while(j){if(j % 10 2){temp;}j j/10;}sum sum temp;}cout << sum;return 0; }[NOIP2010 普及组] 数字…...

使用Java的等待/通知机制实现一个简单的阻塞队列

Java的等待/通知机制 Java的等待通知机制是多线程间进行通信的一种方式。 有三个重要的方法&#xff1a;wait()&#xff0c;notify() 和以及notifyAll() wait()&#xff1a;该方法用于让当前线程&#xff08;即调用该方法的线程&#xff09;进入等待状态并且释放掉该对象上的…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

.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 适用场…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

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

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

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...