JDK ZOOKEEPER KAFKA安装

JDK17下载安装

mkdir -p /usr/local/develop

cd /usr/local/develop

将下载的包上传服务器指定路径

解压文件

tar -zxvf jdk-17.0.14_linux-x64_bin.tar.gz -C /usr/local/develop/

修改文件夹名

mv /usr/local/develop/jdk-17.0.14 /usr/local/develop/java17

配置环境变量

vim /etc/profile

export JAVA_HOME=/usr/local/develop/17

export PATH=JAVA_HOME/bin:PATH

export CLASSPATH=.:$JAVA_HOME/lib

保存之后让环境变量生效

source /etc/profile

KAFKA下载安装

kafka.apache.org

将下载的包放到/usr/local/develop路径下

解压

tar -xvf kafka_2.13-3.9.0.tgz -C /usr/local/develop/

Kafka 的版本命名方式 kafka_2.13-3.9.0 可以拆分成两部分:

  1. 2.13 :指的是 Scala 版本
  2. 3.9.0 :指的是 Kafka 的版本号

cd kafka_2.13-3.9.0

命令区别

在解压JDK和KAFKA时候

JDK用了tar -zxvf 而KAFKA用了 tar -xvf的原因

Kafka启动方式

kafka基于Scala开发,需要Java8+环境

有两种启动方式

1种是基于zookeeper 另外一种是基于KRaft(用于取代Zookeeper)

基于ZOOKEEPER启动

(zookeeper也是java开发的)

进去kafka的bin目录

cd /usr/local/develop/kafka_2.13-3.9.0/bin

先启动zookeeper 并指定Zookeeper的配置文件 即使不指定应该也是用的这个配置文件

nohup ./zookeeper-server-start.sh ../config/zookeeper.properties > /usr/local/develop/zookeeper.log 2>&1 &

启动kafka

nohup ./kafka-server-start.sh ../config/server.properties > /usr/local/develop/zookeeper.log 2>&1 &

关闭kafka

./kafka-server-stop.sh

关闭zookeeper

./zookeeper-server-stop.sh

可以通过

netstat -nlpt 查看使用的端口

基于KRaft启动(无需zookeeper)

cd /usr/local/develop/kafka_2.13-3.9.0/bin

生成 Cluster UUID(集群ID)

./kafka-storage.sh random-uuid 可以多次执行 每次生成的UUID不同

格式化存储 format -t 后面是集群ID 然后指定配置

./kafka-storage.sh format -t zvalKa2rSxmM_NUp6hOxxQ -c ../config/kraft/server.properties &

启动 Kafka

nohup ./kafka-server-start.sh ../config/kraft/server.properties > /usr/local/develop/zookeeper.log 2>&1 &

关闭

./kafka-server-stop.sh

解释:事实上UUID可以随意 但是当第一次启动之后 在/tmp/kraft-combined-logs 中已经将zvalKa2rSxmM_NUp6hOxxQ集群ID写入 可以

rm -rf /tmp/kraft-combined-logs 这样的话 集群ID是123也可以启动

./kafka-storage.sh format -t 123 -c ../config/kraft/server.properties &

使用独立zookerper

kafka自带了zookerper

zookeeper下载安装

都一样 随便点击下载 或者用wget下载

cd /usr/local/develop

wget https://dlcdn.apache.org/zookeeper/zookeeper-3.9.3/apache-zookeeper-3.9.3-bin.tar.gz

解压

tar -zxvf apache-zookeeper-3.9.3-bin.tar.gz -C /usr/local/develop/

cd apache-zookeeper-3.9.3-bin

配置zookeeper

cd /usr/local/develop/apache-zookeeper-3.9.3-bin/conf

cp zoo_sample.cfg zoo.cfg

启动zookeeper

./zkServer.sh start 默认就会用zoo.cfg的配置

./zkServer.sh stop 关闭zookeeper

netstat -nlpt 查看使用的端口和pid

zookeeper会启用一个8080端口 为避免端口冲突 修改下配置

‌**ZooKeeper的8080端口主要用于管理界面和REST API服务**‌。ZooKeeper的默认管理端口是8080,通过这个端口可以访问ZooKeeper的管理界面和REST API,从而进行配置管理、监控和调试等操作‌

kill之后重启zookeeper 或者在zookeeper的bin目录下执行 ./zkServer.sh stop

‌****ZooKeeper的8080端口主要用于管理界面和REST API服务‌。ZooKeeper的默认管理端口是8080,通过这个端口可以访问ZooKeeper的管理界面和REST API,从而进行配置管理、监控和调试等操作‌

不了解之前 安全组还是关闭的好

用独立zookeeper启动kafka

先启动zookeeper

nohup/usr/local/develop/apache-zookeeper-3.9.3-bin/bin/zkServer.sh start

启动kafka

nohup /usr/local/develop/kafka_2.13-3.9.0/bin/kafka-server-start.sh /usr/local/develop/kafka_2.13-3.9.0/config/server.properties > /usr/local/develop/zookeeper.log 2>&1 后面加& 不加是前台启动

关闭kafka

/usr/local/develop/kafka_2.13-3.9.0/bin/kafka-server-start.sh

关闭zookeeper

ps -ef|grep zoo

或者

netstat -nlpt

然后kill

通过Docker安装kafka

1.安装docker

查看是否安装过docker

yum list installed|grep docker

卸载docker

sudo yum remove docker \

docker-client \

docker-client-latest \

docker-common \

docker-latest \

docker-latest-logrotate \

docker-logrotate \

docker-engine

安装最新版本docker

设置docker的下载镜像 这个适合国外,国内可能有点慢

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

国内用这个

sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

上面两个命令-->/etc/yum.repos.d/ 目录中新增一个 .repo 配置文件 ,让 yum 能够从指定的 Docker 仓库下载软件包。 docker-ce.repo作用是指定去哪里下载镜像 镜像源配置文件

/etc/yum.repos.d

sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

sudo systemctl start docker

设置docker开机自启

sudo systemctl enable docker

配置docker镜像加速器

vim /etc/docker/daemon.json

{

"registry-mirrors": [

"https://dockerproxy.com",

"https://mirror.baidubce.com",

"https://docker.m.daocloud.io",

"https://docker.nju.edu.cn",

"https://docker.mirrors.sjtug.sjtu.edu.cn"

]

}

加载配置

sudo systemctl daemon-reload

如果无法启动 配置vim /etc/docker/daemon.json的时候格式有误

sudo systemctl restart docker

systemctl status docker 查看docker状态

systemctl stop docker 停止docker

也可以使用

service docker start 启动

service docker stop 停止

service docker restart 重启

2.docker安装kafka

docker search kafka

可以查看kafka文档

也可以上docker查看

我这里就按kafka官方推荐的

拉取镜像也可以直接run 没有就会自动下载

复制代码
docker pull apache/kafka-native:3.9.0

默认基于KRaft启动 不需要zookeeper

复制代码
docker run -d --name dckafka -p 9092:9092 apache/kafka:3.9.0

Docker配置Kafka

以上方式启动kafka的话,用于本地测试,外部无法连接

https://hub.docker.com/r/apache/kafka

Docker容器的kafka三种配置方式,

1.就是默认配置 (因没有配置,外部无法连接,只有本地测试可用)

2.文件输入:提供一个本地kafka属性配置文件,替换docker容器中kafka的默认配置

3.环境变量:通过-e 变量 在启动时候覆盖默认配置中的对应属性值

在kafka的docker容器内部 /etc/kafka/docker 下有个server.properties

需要将这个文件放到宿主机

mkdir -p /usr/local/develop/docker/kafka/config

cd /usr/local/develop/docker/kafka/config

cranky_beaver是我的容器名 可以用id或者容器名 将配置文件复制出来

docker cp cranky_beaver:/etc/kafka/docker/server.properties ./

创建Topic

这里暂时用传统方式启动zookeeper和kafka 用kafka自带的zookeeper

进去kafka的bin目录

cd /usr/local/develop/kafka_2.13-3.9.0/bin

先启动zookeeper

nohup ./zookeeper-server-start.sh ../config/zookeeper.properties > /usr/local/develop/zookeeper.log 2>&1 &

启动kafka

nohup ./kafka-server-start.sh ../config/server.properties > /usr/local/develop/zookeeper.log 2>&1 &

1. 创建主题 --bootstrap-server localhost:9092指要连接的kafka服务器

./kafka-topics.sh --create --topic quickstart-events --bootstrap-server localhost:9092

./kafka-topics.sh --create --topic quickstart-events2 --partitions 2 --bootstrap-server localhost:9092 指定分区数量

修改分区数量(分区数量只能加 不能减 (删了重新创建))

./kafka-topics.sh --alter --topic quickstart-events2 --partitions 5 --bootstrap-server localhost:9092

2. 列出所有主题

./kafka-topics.sh --list --bootstrap-server localhost:9092

3. 显示主题详细信息

./kafka-topics.sh --describe --topic quickstart-events2 --bootstrap-server localhost:9092

4. 删除主题

./kafka-topics.sh --delete --topic quickstart-events --bootstrap-server localhost:9092

Kafka和EMQX的区别

生产者消费者通信(发送接收)

示例:

创建Topic

./kafka-topics.sh --create --topic topic-0 --bootstrap-server localhost:9092

生产者发送消息

./kafka-console-producer.sh --topic topic-0 --bootstrap-server localhost:9092 回车后建立生产者的连接通道,消息就会被发送到 Kafka topic-0 主题中。

消费者读消息(拉取) --from-beginning 消费拉取该topic所有历史消息 (因此每次启动都可以重复消费)

./kafka-console-consumer.sh --topic topic-0 --from-beginning --bootstrap-server localhost:9092

没有--from-beginning 只会消费(拉取)新消息 消费者启动之后生产者发送的消息

./kafka-console-consumer.sh --topic topic-0 --bootstrap-server localhost:9092

相关推荐
杨运交1 分钟前
[071][验证码模块]基于Spring拦截器的验证码认证设计思想
java·后端·spring
Geek-Chow17 分钟前
CountDownLatch in Java
java
SL_staff1 小时前
从RBAC到场景化授权:《无忧·企业文档》三级权限模型的技术实践解析
java·开源·产品
传奇开心果编程2 小时前
【springboot基础语法学与练】第 1 课:从零开始
java·spring boot·后端·学习
SL_staff2 小时前
财务系统慎用低代码?从数据模型闭环看合规落地的技术实践
java·低代码·全栈
滕州市燕猫虎计算机科技工作室个体工商户2 小时前
IDEA:Command line is too long
java·ide·intellij-idea
步行cgn2 小时前
Spring p 命名空间注入详解
java·前端·spring
YatHinLay2 小时前
MyBatis 流式查询实战:ResultHandler 处理海量数据
java
天天被压力3 小时前
【跨市场数据实战 #08】可转债折价机会怎么筛:3个接口抓比价、列表和实时盘口
java·人工智能·python
张某布响丸辣3 小时前
附件下载的安全边界:路径白名单、NAS 哨兵文件与 Redis Lua 一次性令牌
java·redis·redis lua·nas哨兵