Kafka 集群搭建过程
前言
跟着尚硅谷海哥文档搭建的Kafka集群环境,在此记录一下,侵删
注意:博主在服务器上搭建环境的时候使用的是一个服务器,所以这篇博客可能会出现一些xsync分发到其他服务器时候的错误,如果你在搭建的过程中出现了错误,欢迎评论来访,我们一起解决。
准备工作
准备三台服务器:hadoop102,hadoop103,hadoop104,在opt
文件下先创建两个文件module
和software
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搭建到集群调优,百万播放
相关文章:
Kafka 集群搭建过程
前言 跟着尚硅谷海哥文档搭建的Kafka集群环境,在此记录一下,侵删 注意:博主在服务器上搭建环境的时候使用的是一个服务器,所以这篇博客可能会出现一些xsync分发到其他服务器时候的错误,如果你在搭建的过程中出现了错…...
【算法随记】在计算过程中模的情况
https://leetcode.cn/problems/power-of-heroes/ 计算过程中,可以放心模的情况: 加减乘 先模再加再模和直接加再模一样 a m o d m b m o d m ≡ a b ( m o d m ) a\mod mb\mod m ≡ ab \ (\mod m) amodmbmodm≡ab (modm) 先模再减再模和直接减再模…...
MSTP多生成树协议(第二课)
MSTP负载均衡 实验 需求 1)PC1属于 vlan 10 ,IP地址为 192.168.10.1/24, 网关为 192.168.10.2542)PC2属于 vlan 20 ,IP地址为 192.168.20.1/24, 网关为 192.168.20.254**3)确保PC1与PC2互通4…...
数组指针、函数指针、指针数组、函数 指针数组、指针函数详细总结
1.数组指针概念和应用 首先数组指针应该是一个数组,它的定义如下: 数组指针,指的是数组名的指针,即数组首元素地址的指针。即是指向数组的指针。例:int (*p)[10]; p即为指向数组的指针,又称数组指针。 数…...
Linux存储学习笔记
相关文章 Linux 存储系列|请描述一下文件的 io 栈? - tcpisopen的文章 - 知乎 https://zhuanlan.zhihu.com/p/478443978 深入学习 Linux 操作系统的存储 IO 堆栈 - KaiwuDB的文章 - 知乎 https://zhuanlan.zhihu.com/p/636720297 linux存储栈概览 - st…...
ubuntu执行jmeter端口不够用报错(Address not available)
ubuntu执行jmeter端口不够用报错(Address not available) 解决方案 // 增加本地端口范围 echo 1024 65000 > /proc/sys/net/ipv4/ip_local_port_range// 启用快速回收TIME_WAIT套接字 sudo sysctl -w net.ipv4.tcp_tw_recycle 1// 启用套接字的重用 sudo sysctl -w net.ipv4…...
MongoDB:简单的增删改查操作
一.概述 本篇文章介绍在Navicat中对MongoDB数据库进行增删改查操作,在后面会介绍在Spring Boot中使用MongoTemplate对MongoDB数据库进行相关操作.如有必要可以先看看前面几篇文章. MongoDB:MySQL,Redis,ES,MongoDB的应用场景 MongoDB:数据库初步应用 二.在Navicat进行增删改…...
网络编程(域套接字)
一、域套接字的概念 1.只能做一台主机内的进程间通信,协议族(地址族)指定为:AF_UNIX AF_LOCAL 2.bsp-lcd: s类型文件,就是域套接字 3.如果客户端不手动绑定,则操作系统不会创建一个套接字文件…...
探索短视频小程序/小年糕
短视频小程序的兴起,为创作者提供了一个全新的平台,让他们能够以更专业的方式展现自己的作品。这种创作形式不仅要求作品内容足够精彩还需要有深度的思考和逻辑性的呈现。本文将探索短视频小程序的专业与深度的创作之道,帮助创作者更好地发挥…...
基于MATLAB开发AUTOSAR软件应用层Code mapping专题-part 7 Function callers标签页介绍
不知不觉这个code-mapping专题已经写了6篇文章了,今天是我们这个专题的最后一篇文章了介绍Function callers 这个其实很简单,以前的文章里也有提到CS接口实现两个SWC之间的CS调用,我们在从Code-mapping的角度在说下 首先还是看下模型 我们还记得在simulink里我们用function…...
ARM开发(cortex-A7核中断实验)
1.实验目的:实现KEY1/LEY2/KE3三个按键,中断触发打印一句话,并且灯的状态取反; key1 ----> LED3灯状态取反; key2 ----> LED2灯状态取反; key3 ----> LED1灯状态取反; 2.分析框图: …...
关于融合项目点云pointpillars检测不显示三维检测框问题的解决
这个问题主要还是launch文件中出现了一些偏差。 launch文件的第26行 这里原先是0.6,在检测kitti的时候是0.6,由于kitti是64线激光雷达,我个人用的是16线激光雷达,所以把0.6降到了0.2.出现了三维检测框,问题解决...
spring复习:(57)PropertyOverrideConfigurer用法及工作原理
一、属性配置文件 dataSource.urljdbc:mysql://xxx.xxx.xxx.xxx/test dataSource.usernameroot dataSource.passwordxxxxxx dataSource.driverClassNamecom.mysql.jdbc.Driver #dataSource.typecom.alibaba.druid.pool.DruidDataSource二、spring配置文件 <?xml version&…...
在axios中获取文件上传进度
1.在axios 全局配置的文件中加入一个postFile 方法在上传文件时调用。 export function postFile(url, params,config) {return new Promise((resolve, reject) > {axios.post(url, params,config).then(res > {resolve(res);}).catch(err > {reject(err);})}) } 2.…...
黑马头条-kafka配置
生产者配置 NAMEDESCRIPTIONTYPEDEFAULTVALID VALUESIMPORTANCEbootstrap.servershost/port列表,用于初始化建立和Kafka集群的连接。列表格式为host1:port1,host2:port2,…,无需添加所有的集群地址,kafka会根据提供的地址发现其他的地址&…...
PMP P-01 Basic Knowledge
PMP基础知识...
java八股文面试[数据结构]——ArrayList和LinkedList区别
ArrayList和LinkedList的异同 二者的线程都不安全,相对线程安全的Vector,执行效率高。此外,ArrayList时实现了基于动态数组的数据结构,LinkedList基于链表的数据结构,对于随机访问get和set,ArrayList觉得优于LinkedLis…...
OpenCV中QR二维码的生成与识别(CIS摄像头解析)
1、QR概述 QR(Quick Response)属于二维条码的一种,意思是快速响应的意思。QR码不仅信息容量大、可靠性高、成本低,还可表示汉字及图像等多种文字信息、其保密防伪性强而且使用非常方便。更重要的是QR码这项技术是开源的,在移动支付、电影票、…...
常见排序集锦-C语言实现数据结构
目录 排序的概念 常见排序集锦 1.直接插入排序 2.希尔排序 3.选择排序 4.堆排序 5.冒泡排序 6.快速排序 hoare 挖坑法 前后指针法 非递归 7.归并排序 非递归 排序实现接口 算法复杂度与稳定性分析 排序的概念 排序 :所谓排序,就是使一串记录&#…...
css 实现四角边框样式
效果如图 此图只实现 左下与右下边角样式 右上与左上同理 /* 容器 */ .card-mini {position: relative; } /* 左下*/ .card-mini::before {content: ;position: absolute;left: 0;bottom: 0;width: 20px;height: 20px;border-bottom: 2px solid #253d64;border-left: 2px so…...
机器学习深度学习——自注意力和位置编码(数学推导+代码实现)
👨🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习&&深度学习——注意力分数(详细数学推导代码实现) 📚订阅专栏:机器学习…...
02.案列项目Demo
1.创建项目 1. 创建项目 用pycharm 选择对应的编译器,输入对应的文件名,点击创建项目。删除默认外层生成的template和DIRS 配置项: 2. 创建App 创建appo1的命令: python manage.py startapp app01 如果使用pycharm>tool>…...
PDF校对:追求文档的精准与完美
随着数字化时代的到来,PDF已经成为了多数机构和个人首选的文件格式,原因在于它的稳定性、跨平台特性以及统一的显示效果。但是,对于任何需要公开或正式发布的文档,确保其内容的准确性是至关重要的,这就是PDF校对显得尤…...
低代码解放生产力,助力企业高效发展
近年来,随着数字化转型的推进,企业对于软件开发的需求日益显著。然而,传统的软件开发模式通常需要耗费大量时间和资源,限制了企业的快速响应能力。为了解决这一难题,低代码开发平台应运而生,成为企业和开发…...
【前端从0开始】CSS——9、浮动
1. 浮动(float) 1.1 定义 float 属性定义元素向哪个方向浮动。之前这个属性应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动。浮动元素会生成一个块级框,不论它本身是何种元素。 取值…...
如何在Moonriver网络上向社区代表委托投票权利
我们之前介绍了「社区代表」这一概念,想必大家对社区代表在治理中扮演的角色和地位有了一定的了解。 本文将介绍如何将您的投票权利委托给社区代表。请注意,在委托Token给社区代表这一过程中,并非将您的Token转移给任何人,而且此…...
时序预测 | MATLAB实现基于CNN-GRU卷积门控循环单元的时间序列预测-递归预测未来(多指标评价)
时序预测 | MATLAB实现基于CNN-GRU卷积门控循环单元的时间序列预测-递归预测未来(多指标评价) 目录 时序预测 | MATLAB实现基于CNN-GRU卷积门控循环单元的时间序列预测-递归预测未来(多指标评价)预测结果基本介绍程序设计参考资料 预测结果 基本介绍 MATLAB实现基于CNN-GRU卷积…...
【李群李代数】李群控制器(lie-group-controllers)介绍——控制 SO(3) 空间中的系统的比例控制器Demo...
李群控制器SO(3)测试 测试代码是一个用于控制 SO(3) 空间中的系统的比例控制器。它通过计算控制策略来使当前状态逼近期望状态。该控制器使用比例增益 kp 进行参数化,然后进行一系列迭代以更新系统状态,最终检查状态误差是否小于给定的阈值。这个控制器用…...
DP读书:鲲鹏处理器 架构与编程(六)PCI Express 总线
处理器与服务器:PCI Express 总线 PCI Express 总线1. PCI Express 总线的特点a. 高速差分传输b. 串行传输c. 全双工端到端连接d. 基于多通道的数据传输方式e. 基于数据包的传输 2. PCI Express 总线的组成与拓扑结构a. 根复合体b. PCI Express桥c. 功能单元 3. PCI…...
Pyqt5-开源工具分解功能(文本拖拽)
开源第四篇:功能实现之拖拽功能与配置文件。 写这个功能的初衷,是因为,每次调试我都要手动敲命令,太麻烦了,想偷个懒,所以直接给这功能加上了,顺便衍生出了另一个想法,配置文件自动填写相关数据。 先看个简单的拖拽功能: 很明显吧,还是比较便捷的。所以我们本章,就在…...
装饰设计室内公司/seo关键词优化要多少钱
概述rdesktop是一个开源的远程桌面客户端,用来从Linux机器连接到Windows机器。它遵循RDP协议(Remote Desktop Protocol),并且操作简洁,功能比较完备。安装在Debian发行版上,可以直接用apt-get命令安装:1sudo apt-get install rdes…...
网站建设与管理专业找暑假工/邯郸seo排名
两个虚拟机产品Sun VirtualBox 和 VMware Workstation,两家公司Sun Microsystems, Inc.(被Oracle收购)和VMware, Inc.,两种模式开源和商业。 由于新买了电脑,cpu支持vt-x(intel的硬件支持虚拟化加速&#x…...
网站后台密码怎么改/影视后期培训班一般要多少钱
目录 1. HashShuffleManager 2. 优化的 HashShuffleManager 3 spark SortShuffle流程 4 Tungsten Sort Shuffle 运行机制 5 SortShuffle具体详解 5.1 map阶段 5.2 Reduce阶段 1. HashShuffleManager shuffle write 阶段,主要就是在一个 stage 结束计算之后&…...
云南定制化网站建设/网络优化工程师证书
1.删除数组中的多个元素,也就是去掉数组中不符合条件的选项 分析:用for或者forEach遍历数组的话在方法体内部 splice后数组长度发生了变化,最后得不到正确的结果。 filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。…...
做网站的主要作用/网站建设的基本流程
皮尔逊Pearson 相关系数:使用前提:大小一致、连续、服从正态分布的数据集;斯皮尔曼spearman等级相关系数:皮尔逊Pearson 相关系数使用前提任何一个条件不满足时可以考虑使用该系数;肯德尔等级kendallta相关系数&#x…...
深圳商城网站哪家做的好/万网官网域名查询
我正在拍摄照片并将其存储到SD卡中,然后将其从SD卡中查看到ImageView中,但获得轮换…我在纵向模式下捕获它,但在横向模式下获得结果图像…有什么我想念的吗?/*** Displaying captured image/video on the screen* */private void previewMedia(boolean isImage) {//…...