当前位置: 首页 > news >正文

Kafka 01——Kafka的安装及简单入门使用

Kafka 01——Kafka的安装及简单入门使用

  • 1. 下载安装
    • 1.1 JDK的安装
    • 1.2 Zookeeper的安装
      • 1.2.1 关于Zookeeper版本的选择
      • 1.2.2 下载、安装Zookeeper
    • 1.3 kafka的安装
      • 1.3.1 下载
      • 1.3.2 解压
      • 1.3.3 修改配置文件
  • 2. 启动 kafka
    • 2.1 Kafka启动
    • 2.2 启动 kafka 遇到的问题
      • 2.2.1 问题1
      • 2.2.2 问题2
  • 3. 简单实用
    • 3.1 创建topic
    • 3.2 查看已创建的topic
    • 3.3 发送消息
      • 3.3.1 发送消息命令
      • 3.3.2 遇到的问题
        • 3.3.2.1 问题1
        • 3.3.2.2 问题2
    • 3.4 接收消息
      • 3.4.1 接收消息演示
      • 3.4.2 接收消息的相关知识小点
    • 3.5 查看zk
  • 4. 总结
    • 4.1 Kafka 基本概念
    • 4.2 常见命令
      • 4.2.1 常用的基础命令
      • 4.2.2 简单实用命令
    • 4.3 数据日志
    • 4.4 结构图

1. 下载安装

1.1 JDK的安装

  • 因为kafka本身的开发语言是Scala,而Scala是基于 jdk 开发的,所以要先安装jdk,关于 jdk 的安装,可以看下面的两篇文章,如下:
    • Linux安装JDK1.8.
    • linux下普通用户(非root用户)安装JDK8.

1.2 Zookeeper的安装

1.2.1 关于Zookeeper版本的选择

  • 可以根据下面下载的 kafaka 的版本选择对应的Zookeeper版本,怎么选择,如下:
    • 方式1:直接看Kafka里libs下的jar包,如下:
      在这里插入图片描述
    • 方式2:也可以通过查看源码,看版本信息,如下:
      在这里插入图片描述

1.2.2 下载、安装Zookeeper

  • 去官网,根据需要下载对应的版本,如下:
    在这里插入图片描述
  • 关于 Zookeeper 的安装,可以看下面的文章
    zookeeper安装与使用(win+linux).

1.3 kafka的安装

1.3.1 下载

  • 去官网下载需要的版本,官网地址:
    https://kafka.apache.org/downloads.
    在这里插入图片描述

1.3.2 解压

  • 然后解压,如下:
    tar -zxvf kafka_2.12-2.8.2.tgz
    
    在这里插入图片描述

1.3.3 修改配置文件

  • 修改配置文件 server.properties ,如下:
    在这里插入图片描述

  • 配置信息如下:
    在这里插入图片描述

    在这里插入图片描述

    # The id of the broker. This must be set to a unique integer for each broker.
    broker.id=0listeners=PLAINTEXT://内网IP:9092
    advertised.listeners=PLAINTEXT://公网IP:9092zookeeper.connect=zk的公网IP:2181# …… 其他配置,先默认即可
    

2. 启动 kafka

2.1 Kafka启动

  • 启动命令如下:

    ./kafka-server-start.sh ../config/server.properties &
    

    在这里插入图片描述

  • 启动成功之后,显示:
    在这里插入图片描述

  • 查看进程:

    ps -ef | grep kafka
    

    在这里插入图片描述

2.2 启动 kafka 遇到的问题

2.2.1 问题1

  • 问题描述,如下:
    org.apache.kafka.common.KafkaException: Socket server failed to bind to XXX:9092: Cannot assign requested address.
    
    在这里插入图片描述
  • 问题原因
    • 服务器的公网IP(对外暴露的ip)和真实ip(ifconfig显示的ip)可能只是映射关系,用户访问对外ip时,OpenStack会转发到对应的真实ip实现访问。
    • 但此时如果配置文件中 server.properties 配置中的是listeners=PLAINTEXT://公网IP:9092 的时候无法启动,因为socket无法绑定监听,就会报上面的错误。
    • 解决方法也很简单,将上面的配置,改成listeners=PLAINTEXT://内网IP:9092即可,其他使用时正常使用公网ip即可,跟真实的内网ip就没有关系了。
  • 解决问题
    • 先查看内网IP

      ifconfig
      

      在这里插入图片描述

    • 再修改配置文件 server.properties,如下:

      listeners=PLAINTEXT://内网IP:9092
      advertised.listeners=PLAINTEXT://公网IP:9092
      

      在这里插入图片描述

  • 然后重新启动即可。
    在这里插入图片描述

2.2.2 问题2

3. 简单实用

3.1 创建topic

  • 如下:
    ./kafka-topics.sh --create --zookeeper zookeeper服务的IP:2181 --replication-factor 1 --partitions 1 --topic susu-topic
    
    在这里插入图片描述

3.2 查看已创建的topic

  • 如下:
    ./kafka-topics.sh -list --zookeeper zookeeper服务的IP:2181
    
    在这里插入图片描述

3.3 发送消息

3.3.1 发送消息命令

  • 如下:
    ./kafka-console-producer.sh --broker-list 内网IP:9092 --topic susu-topic或者./kafka-console-producer.sh --broker-list 公网IP:9092 --topic susu-topic
    
    在这里插入图片描述

3.3.2 遇到的问题

3.3.2.1 问题1

  • 问题描述如下:
    [2023-08-10 09:01:57,758] WARN [Producer clientId=console-producer] Bootstrap broker 43.143.190.116:9092 (id: -1 rack: null) disconnected (org.apache.kafka.clients.NetworkClient)
    [2023-08-10 09:02:15,979] WARN [Producer clientId=console-producer] Bootstrap broker 43.143.190.116:9092 (id: -1 rack: null) disconnected (org.apache.kafka.clients.NetworkClient)
    [2023-08-10 09:02:49,538] WARN [Producer clientId=console-producer] Bootstrap broker 43.143.190.116:9092 (id: -1 rack: null) disconnected (org.apache.kafka.clients.NetworkClient)
    [2023-08-10 09:02:50,562] ERROR Error when sending message to topic susu-topic with key: null, value: 4 bytes with error: (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback)org.apache.kafka.common.errors.TimeoutException: Topic susu-topic not present in metadata after 60000 ms.>[2023-08-10 09:03:18,069] WARN [Producer clientId=console-producer] Bootstrap broker 43.143.190.116:9092 (id: -1 rack: null) disconnected (org.apache.kafka.clients.NetworkClient)
    [2023-08-10 09:03:47,001] WARN [Producer clientId=console-producer] Bootstrap broker 43.143.190.116:9092 (id: -1 rack: null) disconnected (org.apache.kafka.clients.NetworkClient)
    
    在这里插入图片描述
  • 解决问题:
    这里我的处理是开放 9092 端口,关于开放端口和防火墙问题,可以看下面的文章:
    linux下查看防火墙状态、关闭防火墙、开放关闭端口等.

3.3.2.2 问题2

  • 开放端口之后的问题,如下,问题描述:
     WARN [Producer clientId=console-producer] Connection to node -1 (/XXX:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
    
    在这里插入图片描述
  • 解决问题:
    这里就是重启服务,重启kafka,问题就解决了,不知道啥问题,总之,重启能解决百分之九十九的问题!!!

3.4 接收消息

3.4.1 接收消息演示

  • 如下:
    ./kafka-console-consumer.sh --bootstrap-server 外网IP或内网IP:9092 --topic susu-topic --from-beginning
    
    在这里插入图片描述

3.4.2 接收消息的相关知识小点

  • 如下:
    • 消费方式1: 从头开始消费
      ./kafka-console-consumer.sh --bootstrap-server IP:9092 --topic susu-topic --from-beginning
      
    • 消费方式2: 从最后一条消息的偏移量+1开始消费
      ./kafka-console-consumer.sh --bootstrap-server IP:9092 --topic susu-topic 
      
  • 具体如下:
    在这里插入图片描述

3.5 查看zk

  • 如下:
    在这里插入图片描述

4. 总结

4.1 Kafka 基本概念

  • Kafka 是一种消息队列,主要用来处理大量数据状态下的消息队列,一般用来做日志的处理。既然是消息队列,那么 Kafka 也就拥有消息队列的相应的特性了。
  • Kafka 像其他MQ一样,也有自己的基础架构,主要存在生产者 Producer、Kafka 集群 Broker、消费者Consumer、注册消息Zookeeper.
    • Topic:主题,一个虚拟的概念,由1到多个 Partitions 组成,可以理解为一个队列,生产者和消费者都是面向一个Topic。
    • Partition:分区,实际消息存储单位。为了实现扩展性,一个非常大的Topic可以分布到多个Broker上,一个Topic可以分为多个 Partition,每个 Partition 是一个有序的队列(分区有序,不能保证全局有序)。
    • Producer:消息生产者,向 Kafka 中发布消息的角色。
    • Consumer:消息消费者,从 Kafka 中拉取消息消费的客户端。
    • Broker:经纪人,一台 Kafka 服务器就是一个 Broker,一个集群由多个 Broker 组成,一个 Broker 可以容纳多个 Topic。

4.2 常见命令

4.2.1 常用的基础命令

  • 启动命令:
    ./kafka-server-start.sh ../config/server.properties &
    
  • 停止命令:
     ./kafka-server-stop.sh
    
  • 地点

4.2.2 简单实用命令

  • 创建topic
    # 创建topic
    ./kafka-topics.sh --create --zookeeper zookeeper的IP:2181 --replication-factor 1 --partitions 1 --topic susu-topic
    
  • 查看已经创建的topic信息
    # 查看已经创建的topic信息
    ./kafka-topics.sh -list --zookeeper zookeeper的IP:2181
    
  • 发送消息
    ./kafka-console-producer.sh --broker-list 内网IP:9092 --topic susu-topic或者./kafka-console-producer.sh --broker-list 公网IP:9092 --topic susu-topic
    
  • 接收消息
    ./kafka-console-consumer.sh --bootstrap-server 外网IP或内网IP:9092 --topic susu-topic --from-beginning
    

4.3 数据日志

  • 查看数据日志,存放路径,看配置文件里配的哪个路径 log.dirs,如下:
    在这里插入图片描述

4.4 结构图

  • 如下:
    在这里插入图片描述

相关文章:

Kafka 01——Kafka的安装及简单入门使用

Kafka 01——Kafka的安装及简单入门使用 1. 下载安装1.1 JDK的安装1.2 Zookeeper的安装1.2.1 关于Zookeeper版本的选择1.2.2 下载、安装Zookeeper 1.3 kafka的安装1.3.1 下载1.3.2 解压1.3.3 修改配置文件 2. 启动 kafka2.1 Kafka启动2.2 启动 kafka 遇到的问题2.2.1 问题12.2.…...

【爬虫】爬取旅行评论和评分

以马蜂窝“普达措国家公园”为例,其评论高达3000多条,但这3000多条并非是完全向用户展示的,向用户展示的只有5页,数了一下每页15条评论,也就是75条评论,有点太少了吧! 因此想了个办法尽可能多爬…...

C++ 泛型编程:函数模板

文章目录 前言一、什么是泛型编程二、函数模板三、函数模板的使用四、多参数函数模板五,示例代码:总结 前言 当需要编写通用的代码以处理不同类型的数据时,C 中的函数模板是一个很有用的工具。函数模板允许我们编写一个通用的函数定义&#…...

.NET实现解析字符串表达式

一、引子功能需求 我们创建了一个 School 对象&#xff0c;其中包含了教师列表和学生列表。现在&#xff0c;我们需要计算教师平均年龄和学生平均年龄。 //创建对象 School school new School() {Name "小菜学园",Teachers new List<Teacher>(){new Teach…...

Ae 效果:CC Environment

透视/CC Environment Perspective/CC Environment CC Environment&#xff08;CC 环境&#xff09;主要用于创建 3D 环境映射&#xff0c;可以将一个 2D 图像转换为 3D 空间的反射或折射。该效果通常用于模拟真实世界的全景相机镜头和环境反射。 在实际操作中&#xff0c;可将效…...

PotgreSQL 基于时间点恢复

文章目录 前言1. WAL 日志1.1 WAL 配置 2. pg_basebackup2.1 常用命令 3. 全备恢复实验3.1 进行一个全备3.2 写入增量数据3.3 模拟备份恢复 总结 前言 本篇文章介绍 PostgreSQL 基于时间点恢复&#xff08;point-in-time-recover&#xff09;需要的条件及恢复过程&#xff0c;…...

③ vue组件

vue组件创建 在App.vue中添加。 技巧&#xff1a;先import&#xff0c;把vue组件地址写出来。然后在template中写名字。剩下的就自动生成。要看下import有没有多生成什么。 注意1&#xff1a; 注意2&#xff1a; 不只是能在App.vue中引入组件。任意组件中都可以引用其他组件…...

政策因子条件列表类型

type:1&#xff08;多选下拉输入&#xff09; 目前选项是本地写死得&#xff0c;传参拼接了carOwner这些东西&#xff0c;形式是多选输入 type:2 &#xff08;普通指定形式&#xff09; type:3&#xff08;普通区间形式&#xff09; type:4 (指定输入) 指定除外得特殊一种&…...

python中yield关键字

yield和return 理解一个东西最好的办法就是找一个和它类似的东西&#xff0c;然后再搞清楚它们之间的区别。 yield最类似的东西就是return&#xff0c;因为他们起到了同样的作用&#xff1a;返回值。 看这个return的函数&#xff1a; def have_some_wine():print(先开一瓶酒&a…...

2023年10款常用的Mac工具合集

Typora Typora 是一款由 Abner Lee 开发的轻量级 Markdown 编辑器&#xff0c;与其他 Markdown 编辑器不同的是&#xff0c;Typora 没有采用源代码和预览双栏显示的方式&#xff0c;而是采用所见即所得的编辑方式&#xff0c;实现了即时预览的功能&#xff0c;但也可切换至源代…...

Python爬虫——requests_cookie登陆古诗文网

寻找登陆需要的参数 __VIEWSTATE:aiMG0UXAfCzak10C7436ZC/RXoZbM2lDlX1iU/4wjjdUNsW8QUs6W2/3M6XIKagQZrC7ooD8Upj8uCnpQMXjDAp6fS/NM2nGhnKO0KOSXfT3jGHhJAOBouMI3QnlpJCQKPXfVDJPYwh169MGLFC6trY __VIEWSTATEGENERATOR: C93BE1AE from: http://so.gushiwen.cn/user/collect.…...

C++——继承

文章目录 &#x1f99c;1. 什么是继承&#x1f40a;1.1 概念&#x1f40a;1.2 格式&#x1f40a;1.3 继承方式 & 访问限定符 &#x1f426;2. 派生类和基类的赋值问题&#x1f9a9;3. 派生类和基类同名成员问题&#x1f413;4.派生类默认成员函数&#x1f409;4.1 构造函数…...

openGauss学习笔记-38 openGauss 高级数据管理-游标

文章目录 openGauss学习笔记-38 openGauss 高级数据管理-游标38.1 语法格式38.2 参数说明38.3 示例 openGauss学习笔记-38 openGauss 高级数据管理-游标 为了处理SQL语句&#xff0c;存储过程进程分配一段内存区域来保存上下文联系。游标是指向上下文区域的句柄或指针。借助游…...

Blazor简单教程(1.1):Razor基础语法

文章目录 前言基本文件配置引入Layout组件 语法介绍pagecodeRazor 语法[ 显式表达和隐式表达](https://learn.microsoft.com/zh-cn/aspnet/core/mvc/views/razor?viewaspnetcore-7.0#explicit-razor-expressions) 绑定简单绑定双向绑定带参数的函数绑定 依赖注入 前言 Blazor…...

Leetcode-每日一题【剑指 Offer 25. 合并两个排序的链表】

题目 输入两个递增排序的链表&#xff0c;合并这两个链表并使新链表中的节点仍然是递增排序的。 示例1&#xff1a; 输入&#xff1a;1->2->4, 1->3->4输出&#xff1a;1->1->2->3->4->4 限制&#xff1a; 0 < 链表长度 < 1000 解题思路 1…...

前端盒子模型

day05-盒子模型 目标&#xff1a;掌握盒子模型组成部分&#xff0c;使用盒子模型布局网页区域 01-选择器 结构伪类选择器 基本使用 作用&#xff1a;根据元素的结构关系查找元素。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lNhfXFEc-169194…...

【ARM Cache 系列文章 9 -- ARM big.LITTLE技术】

文章目录 big.LITTLE 技术背景big.LITTLE 技术详解big.LITTLE 硬件要求 big.LITTLE 软件模型CPU MigrationGlobal Task SchedulingGlobal Task Scheduling比CPU Migration的优势 转自&#xff1a;https://zhuanlan.zhihu.com/p/630981648 如有侵权&#xff0c;请联系删除 big.L…...

【BASH】回顾与知识点梳理(十四)

【BASH】回顾与知识点梳理 十四 十四. 文件与目录的默认权限与隐藏权限14.1 文件预设权限&#xff1a;umaskumask 的利用与重要性&#xff1a;专题制作 14.2 文件隐藏属性chattr (配置文件案隐藏属性)lsattr (显示文件隐藏属性) 14.3 文件特殊权限&#xff1a; SUID, SGID, SBI…...

乡村振兴指数与其30余个原始变量数据(2000-2022年)

乡村振兴是当下经济学研究的热点之一&#xff0c;对乡村振兴进行测度&#xff0c;是研究基础。测度乡村振兴水平的学术论文广泛发表在《数量经济技术经济研究》等顶刊上。整理了2000-2022年城市层面的乡村振兴指数与其30余个原始变量数据&#xff0c;供大家使用。 数据来源&…...

深入理解MySQL表的操作和管理

MySQL是一种广泛使用的关系型数据库管理系统&#xff0c;用于存储和管理大量结构化数据。在MySQL中&#xff0c;表是数据的基本组织单位&#xff0c;对表的操作和管理能力对于数据库的性能和数据完整性至关重要。本文将深入讨论MySQL表的操作和管理&#xff0c;包括创建表、修改…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树&#xff1f; 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持&#xff1a; 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...

【WebSocket】SpringBoot项目中使用WebSocket

1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖&#xff0c;添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...

jdbc查询mysql数据库时,出现id顺序错误的情况

我在repository中的查询语句如下所示&#xff0c;即传入一个List<intager>的数据&#xff0c;返回这些id的问题列表。但是由于数据库查询时ID列表的顺序与预期不一致&#xff0c;会导致返回的id是从小到大排列的&#xff0c;但我不希望这样。 Query("SELECT NEW com…...

PH热榜 | 2025-06-08

1. Thiings 标语&#xff1a;一套超过1900个免费AI生成的3D图标集合 介绍&#xff1a;Thiings是一个不断扩展的免费AI生成3D图标库&#xff0c;目前已有超过1900个图标。你可以按照主题浏览&#xff0c;生成自己的图标&#xff0c;或者下载整个图标集。所有图标都可以在个人或…...

如何做好一份技术文档?从规划到实践的完整指南

如何做好一份技术文档&#xff1f;从规划到实践的完整指南 &#x1f31f; 嗨&#xff0c;我是IRpickstars&#xff01; &#x1f30c; 总有一行代码&#xff0c;能点亮万千星辰。 &#x1f50d; 在技术的宇宙中&#xff0c;我愿做永不停歇的探索者。 ✨ 用代码丈量世界&…...

Win系统权限提升篇UAC绕过DLL劫持未引号路径可控服务全检项目

应用场景&#xff1a; 1、常规某个机器被钓鱼后门攻击后&#xff0c;我们需要做更高权限操作或权限维持等。 2、内网域中某个机器被钓鱼后门攻击后&#xff0c;我们需要对后续内网域做安全测试。 #Win10&11-BypassUAC自动提权-MSF&UACME 为了远程执行目标的exe或者b…...