Apache Kafka 使用示例

news2025/1/18 10:49:28

Kafka快速入门指南

image

  • 微信公众号:阿俊的学习记录空间
  • 小红书:ArnoZhang
  • wordpress:arnozhang1994
  • 博客园:arnozhang
  • CSDN:ArnoZhang1994

第一步:获取Kafka

下载2.13-3.8.0版本的Kafka版本并解压:

$ tar -xzf kafka_2.13-3.8.0.tgz
$ cd kafka_2.13-3.8.0

第二步:启动Kafka环境

注意:你的本地环境必须安装Java 8及以上版本。

Apache Kafka可以通过KRaft模式或ZooKeeper模式启动。请按照以下其中一个配置启动Kafka,不要同时使用两者。

使用KRaft启动Kafka

Kafka可以通过KRaft模式启动,使用本地脚本和下载的文件或Docker镜像。选择以下其中一种方式启动Kafka服务:

使用已下载的文件

  1. 生成集群UUID
$ KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"
  1. 格式化日志目录
$ bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c config/kraft/server.properties
  1. 启动Kafka服务器
$ bin/kafka-server-start.sh config/kraft/server.properties

使用ZooKeeper启动Kafka

按照以下顺序启动所有服务:

  1. 启动ZooKeeper服务:
$ bin/zookeeper-server-start.sh config/zookeeper.properties
  1. 打开另一个终端,启动Kafka代理服务:
$ bin/kafka-server-start.sh config/server.properties

所有服务成功启动后,你将拥有一个基本的Kafka环境,准备使用。

使用基于JVM的Apache Kafka Docker镜像

  1. 获取Docker镜像:
$ docker pull apache/kafka:3.8.0
  1. 启动Kafka Docker容器:
$ docker run -p 9092:9092 apache/kafka:3.8.0

使用基于GraalVM的原生Apache Kafka Docker镜像

  1. 获取Docker镜像:
$ docker pull apache/kafka-native:3.8.0
  1. 启动Kafka Docker容器:
$ docker run -p 9092:9092 apache/kafka-native:3.8.0

Kafka服务器成功启动后,你将拥有一个基础Kafka环境,准备使用。

第三步:创建用于存储事件的主题

Kafka是一个分布式事件流平台,它可以在多台机器上读取、写入、存储和处理事件(文档中也称为记录或消息)。在编写事件之前,必须创建一个主题。打开另一个终端,运行以下命令:

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

你可以使用以下命令来查看新主题的分区数量等详细信息:

$ bin/kafka-topics.sh --describe --topic quickstart-events --bootstrap-server localhost:9092

第四步:向主题中写入事件

运行控制台生产者客户端,将一些事件写入主题。每输入一行数据,就会将其作为独立事件写入主题:

$ bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server localhost:9092
>This is my first event
>This is my second event

随时可以按Ctrl-C停止生产者客户端。

第五步:读取事件

打开另一个终端,运行控制台消费者客户端来读取刚创建的事件:

$ bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server localhost:9092
This is my first event
This is my second event

你可以按Ctrl-C随时停止消费者客户端。

第六步:使用Kafka Connect进行数据导入/导出

Kafka Connect可以让你持续从外部系统中摄取数据到Kafka,反之亦然。在此快速入门中,我们将演示如何使用简单的连接器将数据从文件导入Kafka主题,并将数据从Kafka主题导出到文件。

编辑 config/connect-standalone.properties 文件,添加以下配置:

$ echo "plugin.path=libs/connect-file-3.8.0.jar" >> config/connect-standalone.properties

然后创建一些测试数据:

$ echo -e "foo\nbar" > test.txt

接着,运行两个连接器,启动Kafka Connect:

$ bin/connect-standalone.sh config/connect-standalone.properties config/connect-file-source.properties config/connect-file-sink.properties

第七步:使用Kafka Streams处理事件

Kafka Streams允许你在Java/Scala中实现实时应用程序和微服务,处理存储在Kafka中的数据。例如,实现WordCount算法:

KStream<String, String> textLines = builder.stream("quickstart-events");
KTable<String, Long> wordCounts = textLines
    .flatMapValues(line -> Arrays.asList(line.toLowerCase().split(" ")))
    .groupBy((keyIgnored, word) -> word)
    .count();
wordCounts.toStream().to("output-topic", Produced.with(Serdes.String(), Serdes.Long()));

第八步:终止Kafka环境

你可以按Ctrl-C停止生产者和消费者客户端,Kafka代理和ZooKeeper服务。若要删除所有数据:

$ rm -rf /tmp/kafka-logs /tmp/zookeeper /tmp/kraft-combined-logs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2214275.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2d实时数字人聊天语音对话使用案例,对接大模型

参看: https://github.com/wan-h/awesome-digital-human-live2d 电脑环境: ubuntu 1060ti 下载: git clone https://github.com/wan-h/awesome-digital-human-live2d.gitdocker部署; cd awesome-digital-human-live2d docker-compose -f docker-compose-quickStart.ya…

React 子组件调用父组件的方法,以及互相传递数据

<script type"text/babel" data-type"module"> import React, { StrictMode, useState } from react; import { createRoot } from react-dom/client;const ParentComponent () > {const [message, setMessage] useState("")//父组件…

代理模式、BigDecimal详解

代理模式 代理模式是一种比较好理解的设计模式。简单来说就是 我们使用代理对象来代替对真实对象(real object)的访问&#xff0c;这样就可以在不修改原目标对象的前提下&#xff0c;提供额外的功能操作&#xff0c;扩展目标对象的功能 代理模式的主要作用是扩展目标对象的功…

kali(专业的渗透测试虚拟机)|kali下载链接地址 |kali安装 |kali部署指南

介绍 kali 是Debian开源linux系统体系下的子分支之一 Debian-kali 扩展&#xff1a;Ubuntu也是Debian开源linux系统体系下的子分支之一 Debian-ubuntu 安装kali 2023.03 稳定版 Index of /kali-images/kali-2023.1/ 安装可以参考他的教程&#xff0c; 写的很详细了…

编程练习5 转盘寿司

#include<iostream> #include<vector>using namespace std;//字符分割函数 //把字符串中的字符c剔除 同时将字符串中的其他内容以合适的类型保存 vector<int> split(string str_input, char c) {vector<int> result;while(str_input.find(c) ! -1){//…

阿拉伯语技术翻译的特点

将技术内容翻译成阿拉伯语具有独特的挑战和要求&#xff0c;这源于阿拉伯语复杂的结构、文化差异及其在全球科学技术领域中的地位。翻译人员需要具备深厚的语言专业知识&#xff0c;关注不断发展的科学技术术语&#xff0c;并了解阿拉伯语世界中的地区差异&#xff0c;以确保专…

安卓开发中实现可滑动区域触顶的提示

这篇博客记录在开发中使用 CoordinatorLayout、AppBarLayout 、CollapsingToolbarLayout实现监听滑动悬停的触顶提示&#xff0c;有不理解的小伙伴可移步之前的文章——安卓开发中上滑触顶悬停 上述三个控件的结构图如下&#xff0c;在滑动时需要触顶的部分需要在 AppBarLayo…

培训学校小程序开发

我是【码云数智】平台的黄导&#xff0c;今天分享&#xff1a;培训学校小程序开发 知识付费小程序能够实现线上音频课程、视频课程、直播课程以及专栏课程和图文课程&#xff0c;并且我们也针对营销端做了很多营销功能&#xff0c;可以精准触达目标用户&#xff0c;实现内容的…

软件设计之Redis(3)

软件设计之Redis(3) 路线图推荐&#xff1a; 【Java学习路线-极速版】【Java架构师技术图谱】 尚硅谷Redis零基础到进阶&#xff0c;最强redis7教程&#xff0c;阳哥亲自带练&#xff08;附redis面试题&#xff09; 资料可以去尚硅谷官网免费领取 感谢学习笔记提供&#xff1a…

探索OpenCV的人脸检测:用Haar特征分类器识别图片中的人脸

目录 简介 OpenCV和Haar特征分类器 实现人脸检测 1. 导入所需库 2. 加载图片和Haar特征分类器 3. 检测人脸 4. 标注人脸 5. 显示 6、结果展示 结论 简介 在计算机视觉和图像处理领域&#xff0c;人脸识别是一项重要的技术。它不仅应用于安全监控、人机交互&#xff0…

日期类的实现和取地址运算符重载

前面将类学的差不多&#xff0c;接下来我们就来实现一下日期类。这个日期类包含运算符重载和前面学 的C的语法知识。 首先我们先建立一个日期类的头文件和源文件&#xff1a; 一.日期类的头文件实现&#xff1a; 首先我们要知道我们有闰年&#xff0c;还有每个月的天数也不一样…

推挽电路(图腾柱)

推挽电路&#xff1a;Push-Pull 即推-拉的意思。 推挽电路本质是功率放大电路&#xff08;放大电流&#xff09;&#xff0c;增大输入信号的驱动能力&#xff0c;具有以下两个特点。 1 很强的灌电流&#xff0c;即向负载注入大电流。 2 很强的拉电流&#xff0c;即从负载抽取…

【vue3】图片上传功能实现

本次功能使用的是vue3elementplusnodejsmultiparty实现的图片上传与使用。 属于自行摸索的部分&#xff0c;有很大改进地方。目前思路是图片和数据分别上传&#xff0c;在上传图片时返回图片地址&#xff0c;将地址保存到表单数据中&#xff0c;在获取图片时&#xff0c;通过地…

智能优化算法-蛇优化算法(SO)(附源码)

目录 1.内容介绍 2.部分代码 3.实验结果 4.内容获取 1.内容介绍 蛇优化算法 (Snake Optimization Algorithm, SO) 是一种基于群体智能的元启发式优化算法&#xff0c;它模拟了蛇的捕食行为、运动模式和社会互动&#xff0c;用于解决复杂的优化问题。 SO的工作机制主要包括&a…

跨平台设计利器:五款免费UI设计工具推荐

1、即时设计 即时设计是一款国产的在线UI设计工具&#xff0c;它以其强大的原型设计功能和丰富的交互效果而受到设计师的喜爱。即时设计支持300多种交互效果&#xff0c;可以帮助设计师快速构建高保真原型。它还提供了设计交付功能&#xff0c;允许设计师直接在平台上创建用户…

版权科普:版权保护的常见误区,你中招了吗?

在当今信息爆炸的时代&#xff0c;版权保护成为了一个备受关注的话题。然而&#xff0c;对于版权保护&#xff0c;很多人存在着一些误解和误区。 首先&#xff0c;让我们来明确一下什么是版权保护。 版权保护指的是对文学、艺术和科学领域内具有独创性并能以某种有式复制的智力…

Linux系统使用NFS挂载共享目录

一、目的 服务器A 共享目录 /data 服务器B 挂载服务器A的目录 /data 服务器C 挂载服务器A的目录 /data … 上面的/data 只是举例&#xff0c;也可以是自定义的路径 二、常见的使用场景 ①、应用多实例多机器部署的情况下&#xff0c;有一些下载或者上传的模板文件&#xff…

taozige/Java语言的Netty框架+云快充协议1.5+充电桩系统+新能源汽车充电桩系统源码

云快充协议云快充1.5协议云快充1.6云快充协议开源代码云快充底层协议云快充桩直连桩直连协议充电桩协议云快充源码 介绍 云快充协议云快充1.5协议云快充1.6云快充协议开源代码云快充底层协议云快充桩直连桩直连协议充电桩协议云快充源码 软件架构 1、提供云快充底层桩直连协…

提升职场办公效率的电脑桌面悬浮窗便签有什么?

电脑桌面悬浮窗便签软件能够帮助我们更好地管理日常任务、记录灵感瞬间&#xff0c;提升职场办公效率&#xff0c;并且保持工作区的整洁。这类软件通常具备以下特点&#xff1a;简易实用、快速记录、功能齐全、以及跨平台同步功能等等。今天为大家推荐一款简单好用的电脑桌面悬…

高可用之限流-06-slide window 滑动窗口 sentinel 源码

限流系列 开源组件 rate-limit: 限流 高可用之限流-01-入门介绍 高可用之限流-02-如何设计限流框架 高可用之限流-03-Semaphore 信号量做限流 高可用之限流-04-fixed window 固定窗口 高可用之限流-05-slide window 滑动窗口 高可用之限流-06-slide window 滑动窗口 sen…