hadoop集群中zookeeper的搭建与原理解释

搭建zookeeper

将zookeeper的apache-zookeeper-3.5.7-bin.tar.gz解压到/export/servers下

bash 复制代码
tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /export/servers

为了方便后期使用解压后的文件夹改名为zookeeper-3.5.7

bash 复制代码
mv apache-zookeeper-3.5.7-bin zookeeper-3.5.7

先进入zoo_sample.cfg模版所在的位置,复制并修改他

bash 复制代码
cd /export/servers/zookeeper-3.5.7/zoo_sample.cfg
cp zoo_sample.cfg zoo.cfg

用vi zoo.cfg开始配置文件,文件配置内容如下

bash 复制代码
1.先定位到第12行,来指定数据持久化目录
dataDir=/export/data/zookeeper/zkdata
2.再到文件尾部添加每个zookeeper对应的服务地址以及端口号
server.1=hadoop01:2888:3888
server.2=hadoop02:2888:3888
server.3=hadoop03:2888:3888
其中hadoop01、hadoop02、hadoop03都是自己创建的主机名

在每一台都创建数据持久化目录

bash 复制代码
mkdir -p /export/data/zookeeper/zkdata

在每一台机器上创建myid文件

bash 复制代码
1. 在hadoop01的可持久化目录下创建文件并在文件中写入值1
echo 1 > /export/data/zookeeper/zkdata/myid
2. 在hadoop02的可持久化目录下创建文件并在文件中写入值1
echo 2 > /export/data/zookeeper/zkdata/myid
3. 在hadoop03的可持久化目录下创建文件并在文件中写入值1
echo 3 > /export/data/zookeeper/zkdata/myid

配置环境变量,先打开vi /etc/profile文件,后再结尾配置

bash 复制代码
export ZK_HOME=/export/servers/zookeeper-3.5.7
export PATH=$PATH:$ZK_HOME/bin

分发zookeeper的安装目录

bash 复制代码
scp -r /export/servers/zookeeper-3.5.7 root@hadoop01:/export/servers
scp -r /export/servers/zookeeper-3.5.7 root@hadoop02:/export/servers

分发系统变量,让zookeeper的指令在全局都可以用

bash 复制代码
scp -r /etc/profile root@hadoop02:/etc/
scp -r /etc/profile root@hadoop03:/etc/

分发完后记得激活哦

bash 复制代码
source /etc/profile

启动每一台的zookeeper服务

bash 复制代码
zkServer.sh start

查看每一台机器的主从关系

bash 复制代码
zkServer.sh status

此时zookeeper已经搭建完成啦,那么你会发现hadoop02是leader,其他2台是follower那么为什么会是hadoop02是leader而不是hadoop01或者是hadoop03呢?如果想自定义leader该怎么操作呢?

答:zookeeper中选取leader的依据有2个,投票数(与启动的先后顺序有关),id的大小(id越大的被选举leader的可能性越大在配置zoo.cfg文件的结尾server.1=hadoop01:2888:3888其中server后面的1就是hadoop01的id。),比如要想让hadoop03主机当上leader,你可以先将hadoop03的id配置为最大或者是第2大,然后先启动hadoop03的zookeeper服务,再启动其他台(最后再启动比自己id大的主机,因为比你小的机器都把票投给你了,而最后启动的id虽然比你大,但是他只有一票,而你却已经有2票了,而那一票是你投给他的),这样你就可以实现自定义leader啦。

zookeeper的成功搭建为高可用hadoop集群的搭建奠定了基础,接下来让我们一起走进高可用集群的搭建吧!

相关推荐
Piper蛋窝4 小时前
深入 Go 语言垃圾回收:从原理到内建类型 Slice、Map 的陷阱以及为何需要 strings.Builder
后端·go
六毛的毛7 小时前
Springboot开发常见注解一览
java·spring boot·后端
AntBlack7 小时前
拖了五个月 ,不当韭菜体验版算是正式发布了
前端·后端·python
31535669137 小时前
一个简单的脚本,让pdf开启夜间模式
前端·后端
诗旸的技术记录与分享7 小时前
Flink-1.19.0源码详解-番外补充3-StreamGraph图
大数据·flink
uzong7 小时前
curl案例讲解
后端
资讯分享周7 小时前
Alpha系统联结大数据、GPT两大功能,助力律所管理降本增效
大数据·gpt
一只叫煤球的猫8 小时前
真实事故复盘:Redis分布式锁居然失效了?公司十年老程序员踩的坑
java·redis·后端
G皮T9 小时前
【Elasticsearch】深度分页及其替代方案
大数据·elasticsearch·搜索引擎·scroll·检索·深度分页·search_after
大鸡腿同学9 小时前
身弱武修法:玄之又玄,奇妙之门
后端