【Zookeeper搭建】Zookeeper分布式集群搭建完整指南

Zookeeper分布式集群搭建

(一)克隆前准备工作

一、时钟同步

步骤:

1、输入date命令可以查看当前系统时间,可以看到此时系统时间为PDT(部分机器或许为EST),并非中国标准时间。我们在中国地区,因此要把系统时间改为CST(中国标准时间)

2、修改时间类型:

sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime  

修改完后再次使用date命令查看是否更改成功。

二、Zookeeper的安装和部署

步骤:

1、使用XFTP把安装包zookeeper-3.4.6.tar.gz传输到虚拟机主目录(/home/hadoop)下,然后解压:

cd ~  
tar -zxvf zookeeper-3.4.6.tar.gz  

2、配置环境变量,在.bashrc文件中添加内容。先执行以下命令打开.bashrc文件:

vim ~/.bashrc  

在文件末尾加上以下语句:

export ZOOKEEPER_HOME=/home/hadoop/zookeeper-3.4.6  
export PATH=$ZOOKEEPER_HOME/bin:$PATH  

添加完成后保存,然后控制台执行以下命令刷新即可:

source ~/.bashrc  

3、修改zoo.cfg配置文件:

该文件需要新建,并保存在zookeeper安装路径的conf子目录中:

cd ~/zookeeper-3.4.6/conf  
vim zoo.cfg  

4、大概配置内容如下:

initLimit=10  
syncLimit=5  
#此处为数据保存目录,需自行创建  
dataDir=/home/hadoop/zkdata  
#此处为日志保存目录,需自行创建  
dataLogDir=/home/hadoop/zklog  
clientPort=2181  
server.1=master:2888:3888  
server.2=slave1:2888:3888  
server.3=slave2:2888:3888  

[注意:此处标红的两组数字,前面的1、2、3是每个节点服务的编号,后面的主机名是对应节点服务器的IP地址,这里的配置需要和后面克隆后的配置信息对应上。]{.underline}

[节点服务编号的值是一个整型数字,且不能重复。]{.underline}

5、创建数据和日志目录:

mkdir /home/hadoop/zkdata  
mkdir /home/hadoop/zklog  

此时,可以开始克隆虚拟机了。

(二)克隆Linux虚拟机

前言:

克隆开始之前,可以保存一下虚拟机的快照,或者完整地备份一下自己的虚拟机,这样就不必担忧后续集群使用过程中出现严重的问题需要重来。

一、克隆出两台虚拟机

步骤:

1、使用stop-all.sh命令关闭hadoop集群后,关闭Linux虚拟机;

2、右键选中master,管理-克隆;

3、在弹出的克隆虚拟机向导中,选择克隆自虚拟机中的当前状态;

4、创建完整克隆;

5、虚拟机名称建议为slave1、slave2;位置选择F盘你自己的目录;

6、点击完成开始克隆;

二、把三台虚拟机都启动起来

步骤:略

(三)克隆虚拟机后配置

一、为两台新的虚拟机修改IP地址

由于是克隆的虚拟机,因此他们的配置都是一样的,所以开机以后第一步,先把两台slave机器的ip地址修改一下,否则IP地址会发生冲突。

只需修改最后的部分即可,即192.168.203.XXX中标红的一节;设置方式参考前面教程。

二、为两台新的虚拟机修改主机名

步骤:

1、修改slave1主机的/etc/hostname文件,将其主机名修改为slave1

sudo vim /etc/hostname  

2、重复上述步骤,也把slave2的主机名修改为slave2

三、为三台机器配置hosts文件

步骤:

1、先在master主机修改/etc/hosts文件,建立主机名与ip地址的映射:

sudo vim /etc/hosts  

在末尾添加两行:

192.168.203.XXX slave1  
192.168.203.XXX slave2  

其中的ip地址要对应上一步你自己为每一台主机设置的ip地址。

2、为另外两台slave1、slave2主机也重复上面步骤。

四、为master主机配置NTP服务器,用于时钟同步

步骤:

1、配置NTP服务器:

我们选择master节点来配置NTP服务器,后续其他节点定时同步master节点的时间。CentOS系统一般已经安装有NTP服务,因此直接修改配置文件ntp.conf即可,该文件位于/etc文件夹内:

sudo vim /etc/ntp.conf  

打开后如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传{width=“4.813379265091863in” height=“3.261459973753281in”}

2、修改一:

找到#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap这一行,然后在其下方添加:

restrict 192.168.240.129 mask 255.255.255.0 nomodify notrap  

其中标红的ip地址需改成你master主机的ip地址。

3、修改二:

注释掉下面的4行server域名配置:

#server 0.centos.pool.ntp.org iburst  
#server 1.centos.pool.ntp.org iburst  
#server 2.centos.pool.ntp.org iburst  
#server 3.centos.pool.ntp.org iburst  

4、修改三:

注释完以后在下方添加两行:

server 127.127.1.0  
fudge 127.127.1.0 stratum 10  

5、修改完后大体如图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传{width=“4.6292465004374455in” height=“1.8431157042869641in”}

6、在master执行以下命令启动服务:

systemctl start ntpd  

7、执行以下命令可以让master每次启动机器时,都自动开启NTP服务:

chkconfig ntpd on  

8、在其他节点配置定时同步时间:

使用Linux的crontab命令配置定时任务,定时执行ntpdate时间同步命令即可。

在slave1、slave2都使用crontab -e命令打开vim编辑器编辑定时命令脚本,在其中添加此行命令:

0-59/10 * * * * sudo /usr/sbin/ntpdate master  

其中标红的需改成你上述配置了ntp服务器的主机名。

设置完成后,后续slave1、slave2将定期每10分钟自动与master主机同步时间。

五、创建Zookeeper各节点服务编号

在各个机器的/home/hadoop/zkdata目录,创建一个myid文件,然后分别输入服务编号即可,下面以master为例设置,执行以下命令:

cd /home/hadoop/zkdata  
touch myid  
echo 1 > myid  

其中编号1即为master机器的编号,此处必须按照前面Zookeeper安装与部署步骤4中对应的主机与编号进行设置。

自行重复上述步骤,把三台机器都配置完毕。

六、启动Zookeeper集群

在每一台机器上,分别执行以下命令启动Zookeeper服务:

zkServer.sh start  

一段时间后使用以下命令查看状态:

zkServer.sh status  

如果Zookeeper集群中,出现一个节点为Leader,另外两个为Follower,则说明Zookeeper集群安装部署成功。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/73695.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MVC基础概念及相应代码示例

(旧的)代码实现方法 一个功能模块的代码逻辑(显示处理,数据处理,逻辑判定)都写在一起(耦合) (新的)代码MVC分层实现方法 显示部分实现(View视图) 数据处理实…

nginx优化(持续更新!!!)

1.调整文件描述符 # 查看当前系统文件描述符限制 ulimit -n# 永久修改文件描述符限制 # 编辑 /etc/security/limits.conf 文件,添加以下内容 * soft nofile 65535 * hard nofile 65535# 编辑 /etc/sysctl.conf 文件,添加以下内容 fs.file-max 655352.调…

apache连接池机制讨论

apache连接池的连接有效性 server一般会配置keep-alive超时时间,过了这个时间还没新请求到来,则关闭连接。客户端从连接池里拿出连接时,会检查一下连接是否已关闭,如已关闭,会丢弃掉该连接,并尝试从连接池…

【QT5 多线程示例】条件变量

文章目录 条件变量使用 wakeOne()使用 wakeAll() 条件变量 QT的条件变量类是QWaitCondition,有wakeOne() 和 wakeAll() 两个方法 wakeOne():仅唤醒一个等待的线程。wakeAll():唤醒所有等待的线程。 使用 wakeOne() https://github.com/Bi…

备赛蓝桥杯之第十六届模拟赛第1期职业院校组第四题:世纪危机(人口增长推算)

提示:本篇文章仅仅是作者自己目前在备赛蓝桥杯中,自己学习与刷题的学习笔记,写的不好,欢迎大家批评与建议 由于个别题目代码量与题目量偏大,请大家自己去蓝桥杯官网【连接高校和企业 - 蓝桥云课】去寻找原题&#xff0…

从零构建大语言模型全栈开发指南:第三部分:训练与优化技术-3.2.3预训练任务设计:掩码语言建模(MLM)与下一句预测(NSP)

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 3.2.3 预训练任务设计:`掩码语言建模(MLM)`与下一句预测(NSP)1. 掩码语言建模(`Masked Language Modeling, MLM`)1.1 MLM的核心原理与数学形式1.2 高级掩码优化技术1.2.1 `Span Masking(SpanBER…

OpenBMC:BmcWeb 生效路由2 Trie字典树

OpenBMC:BmcWeb 生效路由1 基于method分类路由_openbmc web-CSDN博客 可以看到,在internalAdd中: std::vector<BaseRule*> rules; rules.emplace_back(ruleObject); trie.add(rule, static_cast<unsigned>(rules.size() - 1U)); ruleObject首先被放入了每个meth…

Appium中元素定位之一组元素定位API

应用场景 和定位一个元素相同&#xff0c;但如果想要批量的获取某个相同特征的元素&#xff0c;使用定位一组元素的方式更加方便 在 Appium 中定位一组元素的 API 与定位单个元素的 API 类似&#xff0c;但它们返回的是一个元素列表&#xff08;List<MobileElement>&am…

第五周日志-重新学汇编(2)

机器语言 汇编语言(直接在硬件上工作——硬件系统结构&#xff09;&#xff1a; 1.机器语言 每一种微处理器硬件设计和内部结构不同&#xff08;决定了电信号不同&#xff0c;进而需要不同的机器指令&#xff09; #早期通过纸带机/卡片机输入计算机&#xff0c;进行运算 2…

【9】Strongswan collections —— enumerator

//以目录枚举为例子&#xff0c;说明enumerator&#xff0c;从源码剥离可运行 #include <stdio.h> #include <stdbool.h> #include <dirent.h> #include <errno.h> #include <string.h> #include <sys/types.h> #include <sys/stat.h&…

谈谈对spring IOC的理解,原理和实现

一、IoC 核心概念 1. 控制反转&#xff08;Inversion of Control&#xff09; 传统编程中对象自行管理依赖&#xff08;主动创建&#xff09;&#xff0c;而IoC将控制权转移给容器&#xff0c;由容器负责对象的创建、装配和管理&#xff0c;实现依赖关系的反向控制。 2. 依赖…

【Hugging Face 开源库】Diffusers 库 —— 扩散模型

Diffusers 的三个主要组件1. DiffusionPipeline&#xff1a;端到端推理工具__call__ 函数callback_on_step_end 管道回调函数 2. 预训练模型架构和模块UNetVAE&#xff08;Variational AutoEncoder&#xff09;图像尺寸与 UNet 和 VAE 的关系EMA&#xff08;Exponential Moving…

甘肃旅游服务平台+论文源码视频演示

4 系统设计 4.1系统概要设计 甘肃旅游服务平台并没有使用C/S结构&#xff0c;而是基于网络浏览器的方式去访问服务器&#xff0c;进而获取需要的数据信息&#xff0c;这种依靠浏览器进行数据访问的模式就是现在用得比较广泛的适用于广域网并且没有网速限制要求的小程序结构&am…

路由选型终极对决:直连/静态/动态三大类型+华为华三思科配置差异,一张表彻底讲透!

路由选型终极对决&#xff1a;直连/静态/动态三大类型华为华三思科配置差异&#xff0c;一张表彻底讲透&#xff01; 一、路由&#xff1a;互联网世界的导航系统二、路由类型深度解析三者的本质区别 三、 解密路由表——网络设备的GPS华为&#xff08;Huawei&#xff09;华三&a…

【RAG综述系列】之 RAG 相关背景和基本原理

系列文章&#xff1a; 【RAG综述系列】之 RAG 相关背景和基本原理 【RAG综述系列】之 RAG 特点与挑战以及方法与评估 【RAG综述系列】之 RAG 先进方法与综合评估 【RAG综述系列】之 RAG 应用和未来方向 正文&#xff1a; 检索增强生成&#xff08;Retrieval-Augmented Gen…

CMake 构建的Qt 项目中的构建套件的配置

在Qt 框架中&#xff0c;使用CMake 构建工具时&#xff0c;需要自己给构建套件添加相关配置&#xff0c;否则已经添加的构建套件将不可选择使用。 创建CMake 项目后&#xff0c;如果打开项目配置时&#xff0c;出现如下构建套件不可选的情况&#xff0c; 需要先确认是否安装…

本地化智能运维助手:基于 LangChain 数据增强 和 DeepSeek-R1 的K8s运维文档检索与问答系统 Demo

写在前面 博文内容为基于 LangChain 数据增强 和 Ollams 本地部署 DeepSeek-R1实现 K8s运维文档检索与问答系统 Demo通过 Demo 对 LEDVR 工作流&#xff0c; 语义检索有基本认知理解不足小伙伴帮忙指正 &#x1f603;,生活加油 我看远山&#xff0c;远山悲悯 持续分享技术干货…

Kotlin when 表达式完全指南:从基础到高级的12种实战用法

掌握 when 的灵活运用&#xff0c;告别繁琐的 if-else 链 以下是 Kotlin 中 when 表达式的 12种核心用法 的全面总结&#xff0c;涵盖基础到高级场景&#xff0c;并附带实用示例&#xff1a; 一、基础用法 1. 替代 Java 的 switch-case when (x) {1 -> println("一&qu…

新加坡 PSB 认证:安全标准、证书特点及申请注意事项

目录 什么是PSB认证&#xff1f; 涉及产品范围 强制性认证产品类别 自愿性认证产品 认证项目与测试标准 1. 安全测试 2. 电磁兼容性&#xff08;EMC&#xff09;测试 3. 能效测试&#xff08;特定产品&#xff09; 认证流程详解 第一步&#xff1a;准备阶段 第二步&a…

UE4学习笔记 FPS游戏制作26 UE中的UI

文章目录 几个概念创建一个UI蓝图添加UI获取UI的引用 切换设计器和UI蓝图将UI添加到游戏场景锚点轴点slotSizeToContent三种UI数据更新方式函数绑定属性绑定事件绑定 九宫格分割图片 几个概念 UMG&#xff1a;UE的UI编辑器 slate UI: UE的UI的编辑语言 创建一个UI蓝图 右键用…