Kafka 集群搭建过程

前言

跟着尚硅谷海哥文档搭建的Kafka集群环境,在此记录一下,侵删

注意:博主在服务器上搭建环境的时候使用的是一个服务器,所以这篇博客可能会出现一些xsync分发到其他服务器时候的错误,如果你在搭建的过程中出现了错误,欢迎评论来访,我们一起解决。

准备工作

准备三台服务器:hadoop102,hadoop103,hadoop104,在opt文件下先创建两个文件modulesoftware

Hadoop 部分(Hadoop如果不使用的话,可以不用安装Hadoop,但是在此阶段的环境搭建还要进行)

JDK的安装

1、用XShell传输工具将JDK导入到 opt 目录下的 software 文件夹下面

在这里插入图片描述

2、在software目录下解压JDK到/opt/module目录下

[root@hadoop102 software]# tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module

3、配置JDK环境变量

新建/etc/profile.d/my_env.sh文件

[root@hadoop102 /]# sudo vim /etc/profile.d/my_env.sh

添加一下内容,然后保存后退出

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin

source一下/etc/profile文件,让新的环境变量PATH生效

[root@hadoop102 /]# source /etc/profile

4、测试JDK是否安装成功

[root@hadoop102 /]# java -version

看到以下结果,代表Java安装成功

java version "1.8.0_212"

集群分发脚本:xsync

1、在/usr/bin中添加脚本

[root@hadoop102 /]# cd /usr/bin
[root@hadoop102 bin]# vim xsync

2、在该文件中编写以下代码

#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
thenecho Not Enough Arguement!exit;
fi
#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
doecho ==================== $host ====================#3. 遍历所有目录,挨个发送for file in $@do#4. 判断文件是否存在if [ -e $file ]then#5. 获取父目录pdir=$(cd -P $(dirname $file); pwd)#6. 获取当前文件的名称fname=$(basename $file)ssh $host "mkdir -p $pdir"rsync -av $pdir/$fname $host:$pdirelseecho $file does not exists!fidone
done

3、修改脚本 xsync 执行权限

[root@hadoop102 bin]# chmod +x xsync

4、同步jdk1.8.0_212到其他服务器

[root@hadoop102 /]# xsync jdk1.8.0_212

5、同步环境变量

[root@hadoop102 /]# sudo xsync /etc/profile.d/my_env.sh

6、在各自的服务器让环境变量生效

[root@hadoop102 /]# source /etc/profile

查看服务器Java进程脚本:jpsall

1、在/usr/bin中添加脚本

[root@hadoop102 /]# cd /usr/bin
[root@hadoop102 bin]# vim jpsall

2、输入以下内容,然后保存退出

#!/bin/bash
for host in hadoop102 hadoop103 hadoop104
doecho =============== $host ===============ssh $host jps
done

3、赋予脚本执行权限

[root@hadoop102 bin]# chmod +x jpsall

4、分发 jpsall 脚本,保证其在三台服务器上都可以使用

[root@hadoop102 /]# xsync /usr/bin

Zookeeper 部分

Zookeeper 本地安装

1、用XShell传输工具将Zookeeper导入到 opt 目录下的 software 文件夹下面

2、在software目录下解压JDK到/opt/module目录下

[root@hadoop102 software]# tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module

3、修改名称

[root@hadoop102 module]# mv apache-zookeeper-3.5.7-bin/ zookeeper-3.5.7

4、在/opt/module/zookeeper-3.5.7/这个目录下创建 zkData

[root@hadoop102 zookeeper-3.5.7]# mkdir zkData

5、在/opt/module/zookeeper-3.5.7/zkData 目录下创建一个 myid 的文件

[root@hadoop102 zkData]# vim myid

在文件中添加与server对应的编号,如hadoop102中填写2(上下不要用空行,左右不要有空格)

2

6、分发到其他服务器上

[root@hadoop102 /]# xsync zookeeper-3.5.7

并分别在 hadoop103、hadoop104上修改myid文件中的内容为3、4

7、将/opt/module/zookeeper-3.5.7/conf 这个路径下的 zoo_sample.cfg 修改为 zoo.cfg

[root@hadoop102 conf]# mv zoo_sample.cfg zoo.cfg

8、打开zoo.cfg文件,修改 dataDir 路径

[root@hadoop102 conf]# vim zoo.cfg
# 修改数据存储路径配置
dataDir=/opt/module/zookeeper-3.5.7/zkData
# 增加如下配置
#######################cluster##########################
server.2=hadoop102:2888:3888
server.3=hadoop103:2888:3888
server.4=hadoop104:2888:3888

9、同步zoo.cfg配置文件

[root@hadoop102 conf]# xsync zoo.cfg

10、分别启动Zookeeper

[root@hadoop102 zookeeper-3.5.7]$ bin/zkServer.sh start
[root@hadoop103 zookeeper-3.5.7]$ bin/zkServer.sh start
[root@hadoop104 zookeeper-3.5.7]$ bin/zkServer.sh start

11、查看状态

[root@hadoop102 zookeeper-3.5.7]$ bin/zkServer.sh status
[root@hadoop103 zookeeper-3.5.7]$ bin/zkServer.sh status
[root@hadoop104 zookeeper-3.5.7]$ bin/zkServer.sh status

ZK集群启动停止脚本:zk.sh

1、在/usr/bin中添加脚本

[root@hadoop102 bin]$ vim zk.sh

在脚本中编写如下内容

#!/bin/bashcase $1 in
"start"){for i in VM-16-14-centosdoecho ---------- zookeeper $i 启动 ------------ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh start"done
};;
"stop"){for i in VM-16-14-centosdoecho ---------- zookeeper $i 停止 ------------ ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh stop"done
};;
"status"){for i in VM-16-14-centosdoecho ---------- zookeeper $i 状态 ------------ ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh status"done
};;
esac

2、增加脚本执行权限

[root@hadoop102 bin]$ chmod u+x zk.sh

3、Zookeeper 集群启动脚本

[root@hadoop102 /]$ zk.sh start

4、Zookeeper 集群停止脚本

[root@hadoop102 /]$ zk.sh stop

6、同步脚本

[root@hadoop102 /]# xsync /usr/bin

Kafka 部分

Kafka 安装

1、用XShell传输工具将Zookeeper导入到 opt 目录下的 software 文件夹下面

2、在software目录下解压JDK到/opt/module目录下

[root@hadoop102 software]# tar -zxvf kafka_2.12-3.0.0.tgz -C /opt/module

3、修改解压的名称

[root@hadoop102 module]# mv kafka_2.12-3.0.0/ kafka

4、进入到/opt/module/kafka 目录,修改配置文件

[root@hadoop102 kafka]$ cd config/
[root@hadoop102 config]$ vim server.properties

5、修改 dataDir 路径

# broker 的全局唯一编号,不能重复,只能是数字。
broker.id=0# kafka 运行日志(数据)存放的路径,路径不需要提前创建,kafka 自动帮你创建,可以配置多个磁盘路径,路径与路径之间可以用","分隔
log.dirs=/opt/module/kafka/datas# 增加以下内容
# 配置连接 Zookeeper 集群地址(在 zk 根目录下创建/kafka,方便管理)
zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181/kafka

6、分发安装包到其他服务器

[root@hadoop102 module]$ xsync kafka/

7、分别在 hadoop103 和 hadoop104 上修改配置文件/opt/module/kafka/config/server.properties 中的 broker.id=1、broker.id=2(注:broker.id 不得重复,整个集群中唯一。)

[root@hadoop103 module]$ vim kafka/config/server.properties
# 修改:
# The id of the broker. This must be set to a unique integer for each broker.
broker.id=1
[root@hadoop104 module]$ vim kafka/config/server.properties
# 修改:
# The id of the broker. This must be set to a unique integer for each broker.
broker.id=2

8、在/etc/profile.d/my_env.sh 文件中增加 kafka 环境变量配置

[root@hadoop102 module]$ sudo vim /etc/profile.d/my_env.sh

增加如下内容:

#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin

9、source一下/etc/profile文件,让新的环境变量PATH生效

[root@hadoop102 /]# source /etc/profile

10、分发环境变量文件到其他节点,并 source。

[root@hadoop102 /]# sudo xsync /etc/profile.d/my_env.sh
[root@hadoop103 module]$ source /etc/profile
[root@hadoop104 module]$ source /etc/profile

11、先启动Zookeeper集群,在启动Kafka

[root@hadoop102 kafka]$ zk.sh start 

12、依次在 hadoop102、hadoop103、hadoop104上启动Kafka

[root@hadoop102 kafka]$ bin/kafka-server-start.sh -daemon config/server.properties
[root@hadoop103 kafka]$ bin/kafka-server-start.sh -daemon config/server.properties
[root@hadoop104 kafka]$ bin/kafka-server-start.sh -daemon config/server.properties

13、关闭集群

[root@hadoop102 kafka]$ bin/kafka-server-stop.sh 
[root@hadoop103 kafka]$ bin/kafka-server-stop.sh 
[root@hadoop104 kafka]$ bin/kafka-server-stop.sh 

Kafka集群启动停止脚本:kf.sh

1、在/usr/bin中添加脚本

[root@hadoop102 bin]$ vim zk.sh

在脚本中编写以下内容

#! /bin/bash
case $1 in
"start"){for i in hadoop102 hadoop103 hadoop104doecho " --------启动 $i Kafka-------"ssh $i "/opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties"done
};;
"stop"){for i in hadoop102 hadoop103 hadoop104doecho " --------停止 $i Kafka-------"ssh $i "/opt/module/kafka/bin/kafka-server-stop.sh "done
};;
esac

2、增加脚本执行权限

[root@hadoop102 bin]$ chmod u+x kf.sh

3、Kafka 集群启动脚本

[root@hadoop102 /]$ kf.sh start 

4、Kafka 集群停止脚本

[root@hadoop102 /]$ kf.sh stop

注意:停止 Kafka 集群时,一定要等 Kafka 所有节点进程全部停止后再停止 Zookeeper 集群。因为 Zookeeper 集群当中记录着 Kafka 集群相关信息,Zookeeper 集群一旦先停止, Kafka 集群就没有办法再获取停止进程的信息,只能手动杀死 Kafka 进程了。

总结

以上就是博主总结的 Kafka 搭建的过程了,在此过程中并没有使用SSL免密登录,每次执行脚本的时候需要输入服务器的登录密码,有点麻烦,如果想要实现SSL免密登录,可以看尚硅谷海哥的hadoop视频:尚硅谷大数据Hadoop教程,hadoop3.x搭建到集群调优,百万播放

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

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

相关文章

UE5.2程序发布及运行问题记录

发布后的程序默认是以全屏模式启动运行的,通过添加以下命令行参数,可实现程序的窗口模式运行: -ResX1280 -ResY720 -WINDOWED 发布后的程序,启动时,提示显卡驱动警告(如图1所示),但是…

k8s认证详解 k8s证书详解 2023推荐

推荐阅读 https://www.yii666.com/blog/478731.html?actiononAll 在 Kube-apiserver 中提供了很多认证方式,其中最常用的就是 TLS 认证,当然也有 BootstrapToken,BasicAuth 认证等,只要有一个认证通过,那么 Kube-api…

电脑msvcr120.dll丢失怎么修复,msvcr120.dll怎么安装?

msvcr120.dll是Microsoft Visual C Redistributable的一部分,它是Windows操作系统中的一个动态链接库文件。这个文件包含了一些用于C编程的函数和资源,它们被许多应用程序用于提供特定的功能和服务。如果你在运行某个程序时遇到了缺少msvcr120.dll的错误…

小知识积累

1、使用JSON.parse(JSON.stringify()) 深拷贝时会出现的问题 var obj {a: "zs",b: undefined,c: Symbol("score"),d: null,e: function () {console.log("show");},};console.log(JSON.parse(JSON.stringify(obj)));很明显undefined、函数、sym…

Java进阶篇--数据结构

目录 一.数组(Array): 1.1 特点: 1.2 基本操作: 1.3 使用数组的好处包括: 1.4 数组也有一些限制: 二.集合框架(Collections Framework): 2.1 列表…

爬虫的代理IP池写哪里了?

亲爱的程序员小伙伴们,想要提高爬虫效率和稳定性,组建一个强大的代理IP池是非常重要的一步!今天我就来和你分享一下,代理IP池到底应该写在哪里,以及如何打造一个令人瞩目的代理IP池!准备好了吗?…

每天一道leetcode:934. 最短的桥(图论中等广度优先遍历)

今日份题目: 给你一个大小为 n x n 的二元矩阵 grid ,其中 1 表示陆地,0 表示水域。 岛 是由四面相连的 1 形成的一个最大组,即不会与非组内的任何其他 1 相连。grid 中 恰好存在两座岛 。 你可以将任意数量的 0 变为 1 &#…

JVM——JDK 监控和故障处理工具总结

文章目录 JDK 命令行工具jps:查看所有 Java 进程jstat: 监视虚拟机各种运行状态信息 jinfo: 实时地查看和调整虚拟机各项参数jmap:生成堆转储快照**jhat**: 分析 heapdump 文件**jstack** :生成虚拟机当前时刻的线程快照 JDK 可视化分析工具JConsole:Java 监视与管理控制台连接…

尚硅谷css3笔记

目录 一、新增长度单位 二、新增盒子属性 1.border-box 怪异盒模型 2.resize 调整盒子大小 3.box-shadow 盒子阴影 案例:鼠标悬浮盒子上时,盒子有一个过度的阴影效果 三、新增背景属性 1.background-origin 设置背景图的原点 2.background-clip 设置背…

润和软件HopeStage操作系统正式上架阿里云、华为云、腾讯云商店

近日,润和软件HopeStage操作系统正式上架阿里云、华为云、腾讯云商店。 随着科技的发展,云服务成为现代社会信息和资讯的交换、共享、存储、检索、应用等重要方式。阿里云、华为云、腾讯云作为我国云服务市场三巨头,其云商店产品全面覆盖云、…

根据Dockerfile创建容器案例讲解

-f为dokerfile的路径, -t为新镜像的名称及版本。 后面这个点是寻址路径。

安防视频汇聚平台EasyCVR视频监控综合管理平台H.265转码功能更新,新增分辨率配置的具体步骤

安防视频集中存储EasyCVR视频监控综合管理平台可以根据不同的场景需求,让平台在内网、专网、VPN、广域网、互联网等各种环境下进行音视频的采集、接入与多端分发。在视频能力上,视频云存储平台EasyCVR可实现视频实时直播、云端录像、视频云存储、视频存储…

C语言:每日一练(选择+编程)

目录 选择题: 题一: 题二: 题三: 题四: 题五: 编程题: 题一:打印1到最大的n位数 示例1 思路一: 题二:计算日期到天数转换 示例1 思路一&#xf…

发掘Win10神奇工具:计划任务程序的自动化魔力

在Windows 10系统中,隐藏着许多不为人知的神奇工具,您了解多少呢?想象一下,如果有一种工具,能够像机器人一样在您设定的时间自动执行各种任务,您会不会觉得它是一件非常实用的利器?今天&#xf…

TensorFlow2.1 模型训练使用

文章目录 1、环境安装搭建2、神经网络2.1、解决线性问题2.2、FAshion MNIST数据集使用 3、卷积神经网络3.1、卷积神经网络使用3.2、ImageDataGenerator使用3.3、猫狗识别案例3.4、参数优化 1、环境安装搭建 链接: Windows 安装Tensorflow2.1、Pycharm开发环境 2、神经网络 1…

Linux:如何挂载Window的共享目录

本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux下怎么挂载Window中的共享目录”吧! 一、在Window下创建共享目录 1、首先,在Window下创建一个目录作为共享目录,此处创建的目录名为ShareDir 2、右键目录&#xff0c…

UDP协议详解

1、UDP协议的基本属性 什么是udp协议 udp也是传输层特别重要的协议;它提供一种无连接的、不可靠的、数据报传输服务。 udp协议的技术特性 无连接:发送端与接收端传输数据时不用建立连接;因此udp的传输速度快。 不可靠:这个不可靠…

mac上如何压缩视频大小?

mac上如何压缩视频大小?由于视频文件体积庞大,常常会占据我们设备的大量存储空间。通常情况下,我们选择删除视频以释放内存,但这将永久丢失它们。然而,有一种更好的方法可以在不删除视频的情况下减小内存占用&#xff…

Azure如何调整虚拟机的大小

参考 https://blog.csdn.net/m0_48468018/article/details/132267096 创建虚拟机进入资源,点击大小选项,并对大小进行调整 点击如下图的cloud shell,进入Azure CLI,使用az vm resize 进行大小调整 命令中的g对应资源组,n对应虚拟机名称&am…

马斯克为何说大模型中R语言会替代Python

为什么不是Python? 当今的LLM应用程序,包括推理应用程序和代理,大多是用 Python 编写的。但这种情况即将改变。对于新一波的开发人员来说,Python 实在是太慢、太臃肿,而且要命的是太笨拙了。事实上, LLVM、…