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:直接看Kafka里libs下的jar包,如下:
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
- 消费方式1: 从头开始消费
- 具体如下:

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 对象,其中包含了教师列表和学生列表。现在,我们需要计算教师平均年龄和学生平均年龄。 //创建对象 School school new School() {Name "小菜学园",Teachers new List<Teacher>(){new Teach…...
Ae 效果:CC Environment
透视/CC Environment Perspective/CC Environment CC Environment(CC 环境)主要用于创建 3D 环境映射,可以将一个 2D 图像转换为 3D 空间的反射或折射。该效果通常用于模拟真实世界的全景相机镜头和环境反射。 在实际操作中,可将效…...
PotgreSQL 基于时间点恢复
文章目录 前言1. WAL 日志1.1 WAL 配置 2. pg_basebackup2.1 常用命令 3. 全备恢复实验3.1 进行一个全备3.2 写入增量数据3.3 模拟备份恢复 总结 前言 本篇文章介绍 PostgreSQL 基于时间点恢复(point-in-time-recover)需要的条件及恢复过程,…...
③ vue组件
vue组件创建 在App.vue中添加。 技巧:先import,把vue组件地址写出来。然后在template中写名字。剩下的就自动生成。要看下import有没有多生成什么。 注意1: 注意2: 不只是能在App.vue中引入组件。任意组件中都可以引用其他组件…...
政策因子条件列表类型
type:1(多选下拉输入) 目前选项是本地写死得,传参拼接了carOwner这些东西,形式是多选输入 type:2 (普通指定形式) type:3(普通区间形式) type:4 (指定输入) 指定除外得特殊一种&…...
python中yield关键字
yield和return 理解一个东西最好的办法就是找一个和它类似的东西,然后再搞清楚它们之间的区别。 yield最类似的东西就是return,因为他们起到了同样的作用:返回值。 看这个return的函数: def have_some_wine():print(先开一瓶酒&a…...
2023年10款常用的Mac工具合集
Typora Typora 是一款由 Abner Lee 开发的轻量级 Markdown 编辑器,与其他 Markdown 编辑器不同的是,Typora 没有采用源代码和预览双栏显示的方式,而是采用所见即所得的编辑方式,实现了即时预览的功能,但也可切换至源代…...
Python爬虫——requests_cookie登陆古诗文网
寻找登陆需要的参数 __VIEWSTATE:aiMG0UXAfCzak10C7436ZC/RXoZbM2lDlX1iU/4wjjdUNsW8QUs6W2/3M6XIKagQZrC7ooD8Upj8uCnpQMXjDAp6fS/NM2nGhnKO0KOSXfT3jGHhJAOBouMI3QnlpJCQKPXfVDJPYwh169MGLFC6trY __VIEWSTATEGENERATOR: C93BE1AE from: http://so.gushiwen.cn/user/collect.…...
C++——继承
文章目录 🦜1. 什么是继承🐊1.1 概念🐊1.2 格式🐊1.3 继承方式 & 访问限定符 🐦2. 派生类和基类的赋值问题🦩3. 派生类和基类同名成员问题🐓4.派生类默认成员函数🐉4.1 构造函数…...
openGauss学习笔记-38 openGauss 高级数据管理-游标
文章目录 openGauss学习笔记-38 openGauss 高级数据管理-游标38.1 语法格式38.2 参数说明38.3 示例 openGauss学习笔记-38 openGauss 高级数据管理-游标 为了处理SQL语句,存储过程进程分配一段内存区域来保存上下文联系。游标是指向上下文区域的句柄或指针。借助游…...
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. 合并两个排序的链表】
题目 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。 示例1: 输入:1->2->4, 1->3->4输出:1->1->2->3->4->4 限制: 0 < 链表长度 < 1000 解题思路 1…...
前端盒子模型
day05-盒子模型 目标:掌握盒子模型组成部分,使用盒子模型布局网页区域 01-选择器 结构伪类选择器 基本使用 作用:根据元素的结构关系查找元素。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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的优势 转自:https://zhuanlan.zhihu.com/p/630981648 如有侵权,请联系删除 big.L…...
【BASH】回顾与知识点梳理(十四)
【BASH】回顾与知识点梳理 十四 十四. 文件与目录的默认权限与隐藏权限14.1 文件预设权限:umaskumask 的利用与重要性:专题制作 14.2 文件隐藏属性chattr (配置文件案隐藏属性)lsattr (显示文件隐藏属性) 14.3 文件特殊权限: SUID, SGID, SBI…...
乡村振兴指数与其30余个原始变量数据(2000-2022年)
乡村振兴是当下经济学研究的热点之一,对乡村振兴进行测度,是研究基础。测度乡村振兴水平的学术论文广泛发表在《数量经济技术经济研究》等顶刊上。整理了2000-2022年城市层面的乡村振兴指数与其30余个原始变量数据,供大家使用。 数据来源&…...
深入理解MySQL表的操作和管理
MySQL是一种广泛使用的关系型数据库管理系统,用于存储和管理大量结构化数据。在MySQL中,表是数据的基本组织单位,对表的操作和管理能力对于数据库的性能和数据完整性至关重要。本文将深入讨论MySQL表的操作和管理,包括创建表、修改…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
