首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Kafka-Windows搭建全流程(环境,安装包,编译,消费案例,远程连接,服务自启,可视化工具)

  • 25-03-07 23:23
  • 4703
  • 10084
blog.csdn.net

目录

一. Kafka安装包获取

  1. 官网地址 

  2. 百度网盘链接

二. 环境要求

1. Java 运行环境

(1) 对 java 环境变量进行配置

(2) 下载完毕之后进行解压

三. 启动Zookeeper

四. 启动Kafka

(1)  修改Conf下的server.properties文件,修改kafka的日志文件路径

(2)  Kafka开启远程连接

五. kafka-windwos 自启动脚本

六. python-demo生产者消费者案例

       (1)生产者

       (2)消费者

七. Docker搭建kafka-map (数据可视化)

八. 备注


Kafka是一款流行分布式消息分布订阅系统,除Kafka之外还有MQ、Redis等。我们可以把消息队列视为一个管道,管道的两端分别是消息生产者(producer)和消息消费者(consumer),消息生产者产生日志等消息后可以发送到管道中,这时消息队列可以驻留在内存或者磁盘上,直到消费者来把它读走为止。

上述就是Kafka的一个概括,我们只需要了解一下Kafka的架构和一些专业术语即可,下面就来介绍一下Kafka 中一些专业术语。

Producer:消息生产者,负责把产生的消息发送到Kafka服务器上。

Consumer:消息消费者,从Kafka服务器读取消息。

Consumer Group:消费者群组,每个消息消费者可以划分为一个特定的群组。

Topic:这是Kafka使用中非常重要的一个术语,它相当于消息的"身份标识",消息生产者产生消息时会给它贴上一个Topic标签,当消息消费者需要读取消息时,可以根据这个Topic读取特定的数据。

Broker:Kafka集群中包含的服务器。


一. Kafka安装包获取

  1. 官网地址 

Apache Kafkaicon-default.png?t=O83Ahttps://kafka.apache.org/downloads

     下载版本为kafka_2.13-3.5.0

  2. 百度网盘链接

百度网盘 请输入提取码 (baidu.com)icon-default.png?t=O83Ahttps://pan.baidu.com/share/init?surl=qD06L8_OLbe7NFmQI3Ja6g&pwd=2024

二. 环境要求


在安装 Kafka 之前,需要满足以下环境要求:

1. Java 运行环境

Kafka 是使用 Java 语言编写的,因此需要在安装 Kafka 之前先安装 Java 运行环境。Kafka 支持 Java 8 及以上版本。可以通过以下命令检查 Java 运行环境的版本:

java -version
(1) 对 java 环境变量进行配置

(2) 下载完毕之后进行解压

     因为Kafka的运行依赖于 Zookeeper,所以还需要下并安装Zookeeper,ZooKeeper和Kafka版本之间有一定的对应关系,不同版本的ZooKeeper和Kafka可以相互兼容,但需要满足一定的条件。
     Kafka 2.2.0 开始支持使用内置的ZooKeeper替代外部ZooKeeper。 所以3.5.0是不需要安装Zookeeper的,直接解压即可。

三. 启动Zookeeper


     因为Kafka中的Broker注册,Topic注册,以及负载均衡都是在Zookeeper中管理,所以需要先启动内置的Zookeeper

     打开Conf文件下的zookeeper.properties文件,修改dataDir目录路径

dataDir=D:\Kafka\kafka_2.13-3.5.0\zookeeperData

执行启动Zookeeper命令

.\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties

当看到绑定到IP地址为0.0.0.0、端口号为2181的地址,表示ZooKeeper服务器监听在该地址,启动成功

四. 启动Kafka


(1)  修改Conf下的server.properties文件,修改kafka的日志文件路径

 (2)  Kafka开启远程连接

新开一个命令行窗口,在之前的目录中输入启动命令

.\bin\windows\kafka-server-start.bat .\config\server.properties

 

五. kafka-windwos 自启动脚本

  1. @echo off
  2. REM 设置绝对路径
  3. set KAFKA_HOME=D:\Kafka\kafka_2.13-3.5.0
  4. set ZOOKEEPER_CONFIG=%KAFKA_HOME%\config\zookeeper.properties
  5. set KAFKA_CONFIG=%KAFKA_HOME%\config\server.properties
  6. REM 删除 kafka_log 目录及其内容
  7. if exist %KAFKA_HOME%\kafka_log (
  8. echo 删除 kafka_log 目录...
  9. rmdir /s /q %KAFKA_HOME%\kafka_log
  10. )
  11. REM 删除 zookeeperData 目录
  12. if exist %KAFKA_HOME%\bin\windows\Kafkakafka_2.13-3.5.0zookeeperData (
  13. echo 删除 Kafkakafka_2.13-3.5.0zookeeperData 目录...
  14. rmdir /s /q %KAFKA_HOME%\bin\windows\Kafkakafka_2.13-3.5.0zookeeperData
  15. )
  16. REM 启动Zookeeper
  17. cd /d %KAFKA_HOME%\bin\windows
  18. start /b zookeeper-server-start.bat %ZOOKEEPER_CONFIG%
  19. REM 等待Zookeeper启动
  20. timeout /t 10 /nobreak
  21. REM 检查 meta.properties 文件
  22. if exist %KAFKA_HOME%\kafka_log\meta.properties (
  23. echo "Meta properties already exist. Starting Kafka server..."
  24. ) else (
  25. echo "Meta properties not found. Starting Kafka server for the first time..."
  26. )
  27. REM 启动Kafka服务器
  28. start /b kafka-server-start.bat %KAFKA_CONFIG%
  29. exit

 将脚本后缀改为bat,放到windwos自启中

六. python-demo生产者消费者案例

(运行如下代码可以对kafka数据进行推送与拉取)

   (1)生产者

  1. from kafka import KafkaProducer
  2. import json
  3. producer = KafkaProducer(bootstrap_servers='192.168.14.93:9092',
  4. value_serializer=lambda v: json.dumps(v).encode('utf-8'))
  5. # kafka 队列生产者
  6. def producer_demo():
  7. # 配置Kafka生产者
  8. producer = KafkaProducer(bootstrap_servers='192.168.14.93:9092',
  9. value_serializer=lambda v: json.dumps(v).encode('utf-8'))
  10. # 发送消息到指定的topic
  11. producer.send('my-topic', {'data_time':'2024-09-10 17:06:12',
  12. 'data_image':'http://192.168.7.51:9001/var/model_algorithm_package/output/17/2024-09-10-17-06-11.jpg',
  13. 'data_result':
  14. "['[323, 356, 437, 665, 0, [226, 255, 0], 0.5512826]', '[1514, 238, 1619, 447, 0, [226, 255, 0], 0.5094569]']"
  15. })
  16. # 关闭生产者连接
  17. producer.close()
  18. if __name__ == '__main__':
  19. while 1:
  20. producer_demo()

  (2)消费者

  1. import json
  2. from kafka import KafkaConsumer
  3. lisr = []
  4. # kafka 队列消费者
  5. def consumer_demo():
  6. # 配置Kafka消费者
  7. consumer = KafkaConsumer('my-topic',
  8. bootstrap_servers='192.168.14.93:9092',
  9. # auto_offset_reset='latest', # 从最新消息开始消费
  10. auto_offset_reset='earliest', # 从最新消息开始消费
  11. enable_auto_commit=True, # 自动提交offset
  12. group_id='my-consumer-group') # 指定消费者组
  13. # 消费消息
  14. for message in consumer:
  15. res = message.value.decode('utf-8')
  16. try:
  17. # 解析 JSON 字符串为 Python 字典
  18. parsed_dict = json.loads(res)
  19. # 打印解析后的字典
  20. print(parsed_dict)
  21. except Exception as e:
  22. print(f"Error: {e}, 消息内容: {res}")
  23. if __name__ == '__main__':
  24. consumer_demo()

七. Docker搭建kafka-map (数据可视化)

  1. docker run -d --name kafka-map \
  2. -p 9001:8080 \
  3. -v /opt/kafka-map/data:/usr/local/kafka-map/data \
  4. -e DEFAULT_USERNAME=admin \
  5. -e DEFAULT_PASSWORD=admin \
  6. --restart always dushixiang/kafka-map:latest

登录端口地址为9001

可以对相应分区数据进行拉取

八. 备注

Kafka定位为分布式消息发布-订阅系统,提及分布式就可以想象,只有当在多节点环境下才能最大的发挥它的价值,前面所介绍的Kafka配置方式都是基于单节点的配置,由于本文主要是为了系统的梳理一下Kafka的配置及使用,因此对于配置这一块不再花费大的篇幅去详细介绍,如果需要到多节点配置Kafka可以自行查阅其他资料。

注:本文转载自blog.csdn.net的好运-的文章"https://blog.csdn.net/m0_56659620/article/details/143174177"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

111
大数据
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top