首页 > 其他分享 >kafka教程

kafka教程

时间:2024-12-24 13:21:21浏览次数:4  
标签:教程 -- server topic sh kafka soft

kafka的安装以及使用

kafka依赖jdkzookeeper,jdk安装这里就不叙述了,从zookeeper开始介绍。

一、zookeeper安装及使用

1.单节点安装

1.1安装

tar -zxvf apache-zookeeper-3.8.0-bin.tar.gz -C /soft/
ln -sv /soft/apache-zookeeper-3.8.0-bin /soft/zookeeper
cat >>/etc/profile.d/kafka.sh <<'EOF'
#!/bin/bash
export ZK_HOME=/soft/zookeeper
export PATH=$PATH:$ZK_HOME/bin
EOF
source /etc/profile.d/kafka.sh

1.2 修改配置文件

主要就修改一下数据存放路径dataDir

cp /soft/apache-zookeeper-3.8.0-bin/conf/{zoo_sample.cfg,zoo.cfg}
mkdir -p /soft/apache-zookeeper-3.8.0-bin/data
vim /soft/apache-zookeeper-3.8.0-bin/conf/zoo.cfg
...
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/soft/apache-zookeeper-3.8.0-bin/data
clientPort=2181
...

1.3 启动zookeeper

#启动
zkServer.sh start
#查看状态
zkServer.sh status
#关闭
zkServer.sh stop

2.zookeeper的znode的基本操作

2.1、查看:

查看“/”路径下的所有znode列表:ls /
查看“/kafka-3_2_0/cluster/id”znode的值:get /kafka-3_2_0/cluster/id

2.2、创建:

创建一个“/guojie-linux01”znode:create /guojie-linux01
多级zonde创建时,其⽗znode必须存在:create /guojie-linux01/语言/python #错误示范
创建znode时可以指定数据:create /guojie-linux01/语言/python 好难

2.3、修改:

修改⼀个znode的值:set /guojie-linux01/语言/python 好像没那么难

2.4、删除:

删除空的znode:delete /guojie-linux01/语言/python
删除非空的znode,即递归删除:deleteall /guojie-linux01

二.kafka部署

2.1 单节点部署

tar -zxvf kafka_2.12-3.2.0.tgz -C /soft/
ln -sv /soft/kafka_2.12-3.2.0 /soft/kafka
cat >>/etc/profile.d/kafka.sh <<'EOF'
export KAFKA_HOME=/soft/kafka
export PATH=$PATH:$KAFKA_HOME/bin
EOF
source /etc/profile.d/kafka.sh

2.2修改配置文件

vim /soft/kafka/config/server.properties
...
#broker.id集群里要唯一
broker.id=13
#zookeeper连接地址,在后面加版本号或者其它用于区分
zookeeper.connect=elk3:2181/kafka-3_2_0
...

2.3kafka启动

#启动
kafka-server-start.sh -daemon /soft/kafka/config/server.properties
#连接zookeeper查看
zkCli.sh
ls /
#停止
kafka-server-stop.sh

三.kafka集群部署

3.1 参考单节点部署,做以下调整

install -d /soft/kafka_2.12-3.2.0/data

3.2 所有节点配置

vim /soft/kafka/config/server.properties
...
#broker.id集群里要唯一,每个节点都要不一样
broker.id=13
#修改数据存放路径
log.dirs=/soft/kafka_2.12-3.2.0/data
#zookeeper连接地址,在后面加版本号或者其它用于区分
zookeeper.connect=elk3:2181/kafka-3_2_0
...

3.3 所有节点启动kafka

#zookeeper节点要启动
zkServer.sh start
#所有节点启动kafka
kafka-server-start.sh -daemon /soft/kafka/config/server.properties

3.4zookeeper节点验证

zkCli.sh ls /kafka-3_2_0/brokers/ids | grep "^\["

四.kafka的基本应用

4.1 kafka的topic管理

4.1.1 创建topic

(1)创建一个名为“my-topic1”的topic,分区数量为3,副本数为3
kafka-topics.sh --bootstrap-server elk1:9092 --create --topic my-topic1 --partitions 3 --replication-factor 3
(2)创建一个名为“my-topic2”的topic,分区数量为20,副本数量为3
kafka-topics.sh --bootstrap-server elk1:9092 --create --topic my-topic2 --partitions 20 --replication-factor 3

温馨提示:
	1)topic已存在则无法创建;
	2)副本的数量是1~32767
    3)副本数量 >= broker数量

4.1.2 列出kafka集群可用的topic

kafka-topics.sh --bootstrap-server elk3:9092 --list

4.1.3 查看所有topic的详细信息

#查看所有topic的详细信息
kafka-topics.sh --bootstrap-server elk1:9092 --describe
#查看单个topic的详细信息
kafka-topics.sh --bootstrap-server elk1:9092 --describe --topic my-topic1

4.1.4 修改分区数量

#修改主分区数量
kafka-topics.sh --bootstrap-server elk1:9092 --topic my-topic1 --alter --partitions 5
温馨提示:
	1)分区数量只能调大,无法调小;
    2)"--alter"和"--replication-factor"无法同时使用,简而言之,就是不能直接修改副本;
    3)分区数量重平衡及修改副本数量,比较复杂,不在记录,有兴趣查阅资料。

4.1.5 删除topic

#删除单个topic
kafka-topics.sh --bootstrap-server elk1:9092 --delete --topic my-topic1
#删除多个topic,使用逗号隔开即可
kafka-topics.sh --bootstrap-server elk1:9092 --delete --topic my-topic1,my-topic2

4.2 消费者组

4.2.1 启动一个消费者和生产者

#启动生产者
kafka-console-producer.sh --bootstrap-server elk1:9092 --topic my-topic1
#启动消费者1
kafka-console-consumer.sh --bootstrap-server elk1:9092 --topic my-topic1
#启动消费者2,加--from-beginning选项表示从头开始消费
kafka-console-consumer.sh --bootstrap-server elk1:9092 --topic my-topic1 --from-beginning

4.2.2 查看消费者组信息

#查看所有消费者组列表
kafka-consumer-groups.sh --bootstrap-server elk1:9092 --list
#查看所有消费者组的详细信息
kafka-consumer-groups.sh --bootstrap-server elk1:9092 --describe --all-groups
#查看某个消费者组的详细信息
kafka-consumer-groups.sh --bootstrap-server elk1:9092 --describe --group console-consumer-60340

4.2.3 消费者组案例

#启动一个生产者
kafka-console-producer.sh --bootstrap-server elk1:9092 --topic my-topic1
#启动消费者1并指定消费者组
kafka-console-consumer.sh --bootstrap-server elk1:9092 --topic my-topic1 --from-beginning --consumer-property group.id="group1"
#启动消费者2并指定消费者组
kafka-console-consumer.sh --bootstrap-server elk1:9092 --topic my-topic1 --from-beginning --consumer-property group.id="group1"

温馨提示:
	1)同一个消费者组(consumer group)的消费者(consumer)不能同时去同一个分区(parition)读取数据,避免数据重复消费;
	2)当一个topic的分区数量增大时,消费者组的各个消费者将重新分配(rebalance),即重新分配待消费分区的所属权;
    3)当同一个消费者组的消费者数量发生变化时,也会触发rebalance,即重新分配待消费者的所属权;

五、kafka性能测试(拓展)

5.1 kafka开源监控组件-kafka-eagle

5.1.1 安装mariadb

#使用yum安装
yum -y install mariadb-server
#启动并设置开机自启动
systemctl enable mariadb --now

#创建数据库
create database if not exists `kafka` default character set utf8mb4 collate
utf8mb4_unicode_ci;
#创建用户并授权
create user 'admin'@'localhost' identified by '123456';
grant all privileges on kafka.* to 'admin'@'localhost';
flush privileges;

#测试
mysql -uadmin -p123456

5.1.2 安装kafka-eagle

tar -zxvf kafka-eagle-bin-2.0.8.tar.gz -C /soft/
tar -zxvf /soft/kafka-eagle-bin-2.0.8/efak-web-2.0.8-bin.tar.gz
cat >>/etc/profile.d/kafka.sh<<'EOF'
export EFAK_HOME=/soft/kafka-eagle-bin-2.0.8/efak-web-2.0.8
export PATH=$PATH:$EFAK_HOME/bin
EOF
source /etc/profile.d/kafka.sh

修改配置文件
vim /soft/kafka-eagle-bin-2.0.8/efak-web-2.0.8/conf/system-config.properties

5.1.3 修改kafka脚本开启JMX

关闭kafka之后修改
vim /soft/kafka/bin/kafka-run-class.sh
找到# JMX port to use将其注释并添加如下内容

# JMX port to use
#if [  $JMX_PORT ]; then
 # KAFKA_JMX_OPTS="$KAFKA_JMX_OPTS -Dcom.sun.management.jmxremote.port=$JMX_PORT "
#fi
JMX_PORT=9999
JMX_RMI_PORT=9998
ISKAFKASERVER="false"
if [[ "$*" =~ "kafka.Kafka" ]]; then
        ISKAFKASERVER="true"
fi
if [  $JMX_PORT ] && [ "true" == "$ISKAFKASERVER" ]; then
        KAFKA_JMX_OPTS="$KAFKA_JMX_OPTS -Dcom.sun.management.jmxremote.port=$JMX_PORT -Dcom.sun.management.jmxremote.rmi.port=$JMX_RMI_PORT "
        echo set KAFKA_JMX_PORT:$KAFKA_JMX_OPTS
fi

5.1.4 启动并访问

ke.sh start

标签:教程,--,server,topic,sh,kafka,soft
From: https://www.cnblogs.com/luguojie/p/18627203

相关文章

  • Win10 系统安装 Linux 子系统教程(WSL2 + Ubuntu 20.04 + xlaunch桌面 )
    安装WSL1安装WSL1(1)启用“适用于Linux的Windows子系统”可选功能需要先启用“适用于Linux的Windows子系统”可选功能,然后才能在Windows上安装Linux分发。可以使用命令行的方式,也可以使用图形界面的方式。图形界面方式在【设置->更新与安全->开发者选项】中开......
  • #渗透测试 kioptix level 2靶机通关教程及提权
    声明!文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!工具链接:https://pan.quark.cn/s/530656ba5503一、准备阶段复现请将靶机ip换成自己的kali:192.168.108.130靶机:192.168.108.1361.找出ip端口和服务信息扫出ip......
  • 中年程序员的新赛道:摆摊?(附赠原味牛杂和卤味摆摊教程)
    中年程序员的职业困境在当今竞争激烈的职场环境中,中年程序员面临着诸多挑战。随着年龄的增长,身体机能逐渐下降,长时间的高强度工作变得越发吃力。与此同时,职场的竞争压力却丝毫未减,年轻一代程序员如雨后春笋般涌现,他们往往对新技术有着更敏锐的洞察力和更快的学习速度,这使得中年......
  • 全网最全comfyui工作流保姆级教程来啦!comfyui工作流搭建看这一篇就够了_comfyui 工作
    大家好,这里是AIGC阿道夫一、SD主流UIStableDiffusion(SD)因为其开源特性,有着较高的受欢迎程度,并且基于SD的开源社区及教程、插件等,都是所有工具里最多的。基于SD,有不同的操作界面,可以理解为一个工具的不同客户端。WebUI和ComfyUI是两种较为流行的操作界面选项1.WebUI:......
  • MP地面站二次开发教程MP的框架与修改
    MP高级功能 高级功能,完成图传,FollowME功能,地面站takeoff,在temp.cs窗体里面。要实现VLC的视频直播功能要安装vlc-3.0.2-win64。主界面基本修改 在missionplanner项目下双击MainV2.cs这个主窗体类,可以看到主窗体设计选项1、菜单名称背景修改 2、主窗体语言修改这个......
  • Docker 环境中配置 Grafana:详细教程与常见配置项解析
    言简意赅的讲解Docker环境中通过修改Grafana配置解决的痛点Grafana是一个开源的数据可视化工具,用于监控和分析实时数据。它广泛应用于时序数据库如Prometheus、InfluxDB和其他数据源的监控展示。在Docker环境中运行Grafana是一种常见的做法,通过DockerCompose......
  • XMind v24 免费版下载及安装教程
    前言XMind是一款专业的全球领先的商业思维导图软件,在国内使用广泛,拥有强大的功能、包括思维管理、商务演示、与办公软件协同工作等功能。它采用全球先进的EclipseRCP软件架构,是集思维导图与头脑风暴于一体的可视化思考工具,能用来捕捉想法、理清思路、管理复杂信息并促进团队协......
  • DevExpress WPF中文教程:Grid - 如何移动和调整列大小?(二)
    DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。无论是Office办公软件的衍伸产品,还是以数据为中心......
  • SpringBoot支持Kafka多源配置的同时还要支持启停配置化,是真的会玩
    开心一刻今早,女朋友给我发微信她:宝贝,你要记住她:我可是你女朋友,你相亲就亲,想抱就抱她:不要老是问我,男生要主动一些我:可是你上次报警可不是这么说的基础回顾SpringBoot集成Kafka非常简单,我相信你们都会,但我还是想带你们回顾下;只需要进行以下几步即可完成SpringBoot与......
  • 小程序商城店铺怎么开?几招教你搞掂线上开铺难题(教程大全)
    随着电商的快速发展,很多传统商家都开始尝试在微信等平台上开设小程序商城。但对于很多人来说,开设一个小程序商城似乎还是有点难度。其实只要掌握了一些步骤和技巧,轻松开设自己的线上店铺也并不难。本文将通过几个简单的步骤,带你从零开始,教你如何搭建一个小程序商城,并分享一......