当前位置: 首页 > 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;进入等待状态并且释放掉该对象上的…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发&#xff0c;实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构&#xff0c;服务器端使用Java Servlet处理请求&#xff0c;数据库采用MySQL存储信息&#xff0…...