首页 > 其他分享 >Kafka快速入门

Kafka快速入门

时间:2024-10-15 11:20:49浏览次数:8  
标签:bin 入门 -- server kafka sh Kafka 快速

Kafka简介:

Apache Kafka 是一个分布式流处理平台,由 LinkedIn 开发并开源,后来成为 Apache 软件基金会的顶级项目。Kafka 主要用于构建实时数据管道和流式应用程序。它具有高吞吐量、可扩展性和容错性,能够处理数百万级别的读写请求。

Kafka 的核心特性包括:

  1. 发布-订阅消息队列:Kafka 允许生产者(发布者)发送消息到主题(Topic),消费者(订阅者)从主题读取消息。这使得 Kafka 可以作为消息队列、消息总线或数据集成层使用。

  2. 持久化存储:Kafka 将消息持久化到磁盘,并支持数据复制,确保消息不会丢失,并可以在系统故障后恢复。

  3. 分布式系统:Kafka 通过分区(Partition)和副本(Replication)机制实现分布式,提高了系统的可扩展性和容错性。

  4. 实时流处理:Kafka Streams 和 Kafka Connect 提供了实时数据流处理和集成解决方案,可以与现有的数据存储和分析工具集成。

  5. 可扩展性:Kafka 集群可以轻松地通过增加更多的服务器来扩展,以处理更多的数据流量。

  6. 容错性:Kafka 通过副本机制确保数据的持久性和可靠性。如果某个代理(Broker)失败,其他代理可以接管其任务。

  7. 生态系统:Kafka 拥有丰富的生态系统,包括 Kafka Connect、Kafka Streams、Confluent Schema Registry 等,这些工具和库扩展了 Kafka 的功能,使其更加强大和灵活。

  8. 社区支持:作为 Apache 基金会的一部分,Kafka 拥有一个活跃的社区,不断有新的特性和改进被贡献和发布。

Kafka 通常用于日志聚合、事件源、流处理、实时分析、数据管道和微服务架构中的消息传递。它的设计使其成为处理大规模数据流的理想选择,特别是在需要高吞吐量和低延迟的场景中。

安装步骤

Step 1: 获取 Kafka

首先,您需要从 Apache Kafka 的官方网站下载最新的 Kafka 发行版。下载完成后,您需要解压该文件。

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

Step 2: 启动 Kafka 环境

在开始之前,请确保您的本地环境已安装 Java 8 或更高版本。

Kafka 可以使用 KRaft 或 ZooKeeper 模式启动。您可以选择其中一种配置来启动 Kafka 服务器。

使用 KRaft 模式
  1. 生成集群 UUID

    $ KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"
  2. 格式化日志目录

    $ bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c config/kraft/server.properties
  3. 启动 Kafka 服务器

    $ bin/kafka-server-start.sh config/kraft/server.properties
使用 ZooKeeper 模式
  1. 启动 ZooKeeper 服务

    $ bin/zookeeper-server-start.sh config/zookeeper.properties
  2. 打开另一个终端会话,启动 Kafka 代理服务

    $ bin/kafka-server-start.sh config/server.properties
使用 Docker 镜像
  1. 获取 Kafka Docker 镜像

    $ docker pull apache/kafka:3.8.0
  2. 启动 Kafka Docker 容器

    $ docker run -p 9092:9092 apache/kafka:3.8.0

Step 3: 创建主题以存储事件

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

Step 4: 将一些事件写入主题

Kafka 客户端通过网络与 Kafka 代理通信,以写入(或读取)事件。一旦接收到事件,代理将以持久和容错的方式存储这些事件。

运行控制台生产者客户端,将一些事件写入您的主题:

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

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

Step 5: 读取事件

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

$ 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 随时停止消费者客户端。

Step 6: 使用 Kafka Connect 导入/导出数据

Kafka Connect 允许您持续地将数据从外部系统导入到 Kafka,以及从 Kafka 导出到外部系统。它运行连接器,实现与外部系统的自定义逻辑。

首先,确保将 connect-file-3.8.0.jar 添加到 Connect 工作节点的配置中的 plugin.path 属性。

编辑 config/connect-standalone.properties 文件,添加或更改 plugin.path 配置属性,并保存文件:

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

然后,创建一些种子数据来测试:

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

或者,在 Windows 上:

$ echo foo > test.txt
$ echo bar >> test.txt

接下来,我们将启动两个连接器,以独立模式运行,这意味着它们将在单个、本地、专用的进程中运行。我们提供三个配置文件作为参数。第一个是 Kafka Connect 进程的配置,包含连接到 Kafka 代理和数据的序列化格式的常见配置。其余的配置文件每个都指定一个连接器来创建。这些文件包括一个唯一的连接器名称、要实例化的连接器类以及连接器所需的任何其他配置。

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

这些示例配置文件,包含在 Kafka 中,使用您之前启动的本地集群配置,并创建两个连接器:第一个是源连接器,从输入文件读取行并将每个行生成到 Kafka 主题,第二个是汇连接器,从 Kafka 主题读取消息并将每个消息作为输出文件中的一行。

Step 7: 使用 Kafka Streams 处理事件

一旦您的数据作为事件存储在 Kafka 中,您可以使用 Kafka Streams 客户端库(Java/Scala)处理数据。它允许您实现关键任务实时应用程序和微服务,其中输入和/或输出数据存储在 Kafka 主题中。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()));

Step 8: 终止 Kafka 环境

现在您已经完成了 Kafka 的快速入门,可以随意拆除 Kafka 环境,或者继续探索。

  1. 如果您还没有这样做,请使用 Ctrl-C 停止生产者和消费者客户端。

  2. 使用 Ctrl-C 停止 Kafka 代理。

  3. 如果您遵循了使用 ZooKeeper 的部分,请使用 Ctrl-C 停止 ZooKeeper 服务器。

如果您还想删除本地 Kafka 环境的数据,包括您创建的事件,可以运行以下命令:

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

Kafka数据发送流程示例图:

标签:bin,入门,--,server,kafka,sh,Kafka,快速
From: https://blog.csdn.net/qq_36070104/article/details/142940353

相关文章

  • DLT645-2007 协议快速入门
    @目录DLT645-2007协议快速入门1.什么是DLT645-2007协议2.帧格式2.1帧起始符2.2地址域2.3控制码3.4数据长度3.5数据域2.6校验码CS2.7结束符2.8传输事项3.报文解析4.代码实例5.报文解析工具DLT645-2007协议快速入门1.什么是DLT645-2007协议DLT645目前主要使用......
  • 【网络安全工程师入门】从零基础到精通全面教程:一篇文章带你入门!
    前言想要成为网络安全工程师,却苦于没有方向,不知道从何学起的话,下面这篇网络安全入门教程可以帮你实现自己的网络安全工程师梦想,如果想学,可以继续看下去,文章有点长,希望你可以耐心看到最后!1、Web安全相关概念(2周)·熟悉基本概念(SQL注入、上传、XSS、、CSRF、一句话木马......
  • 中小型医院网站开发:Spring Boot入门
    2相关技术简介2.1Java技术Java是一种非常常用的编程语言,在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中,Java的身影无处不在,并且拥有旺盛的生命力。Java的跨平台能力十分强大,只需一次编译,任何地方都可以运行。除此之外,它还拥有简单的语法和实用的类......
  • 全面解析:大模型技术从入门到精通的学习路径指南
    “技术学习无非涵盖三个方面,理论,实践和应用”大模型技术爆火至今已经有两年的时间了,而且大模型技术的发展潜力也不言而喻。因此,很多人打算学习大模型,但又不知道该怎么入手,因此今天就来了解一下大模型的学习路线。‍‍丁元英说:“透视社会有三个层面,技术,制度与文化”;同样的,......
  • 搞懂这些AI大模型名词,你也能轻松入门!
    大模型应用开发正在逐渐改变各个行业,但对技术小白来说,了解并掌握这些复杂的工具和概念非常重要。你是否觉得面对“LlamaIndex”、“Ollama”、“Anthropic”等术语无从下手?你是否在应用开发时被各种名词搞得晕头转向,不知道它们之间的区别与联系?我们将为你详细介绍这些关......
  • 网络安全自学入门:(超详细)从入门到精通学习路线&规划,学完即可就业_网络安全自学路线
    很多人上来就说想学习黑客,但是连方向都没搞清楚就开始学习,最终也只是会无疾而终!黑客是一个大的概念,里面包含了许多方向,不同的方向需要学习的内容也不一样。算上从学校开始学习,已经在网安这条路上走了10年了,无论是以前在学校做安全研究,还是毕业后在百度、360从事内核安全产......
  • 网络安全最厉害五个专业(非常详细),零基础入门到精通,看这一篇就够了
    文章目录1.网安方向介绍01、密码学与应用安全02、量子信息安全03、数据安全04、系统安全05、网络安全2.就业前景分析01、大厂安全部门02、安全公司03、高校==零基础入门黑客技术/网络安全==【----帮助网安学习,以下所有学习资料文末免费领取!----】大纲学习教程面试刷......
  • 大语言模型对普通人最实在的帮助(非常详细),零基础入门到精通,看这一篇就够了
    前言记得小时候流行过一类叫《十万个为什么》的书,听名字就知道这些书好像就是一个巨大无比的知识仓库,里面存放着无穷无尽的知识,可以满足孩子们的一切好奇心——但我小时候从没买过,可能没有什么求知欲吧。现在的孩子,似乎更没有必要买入一本《十万个为什么》了,并不是因为没......
  • 4、.Net 快速开发框架:DncZeus - 开源项目研究文章
    DncZeus是一个基于ASP.NETCore和Vue.js的前后端分离的通用后台管理系统框架,其愿景是成为一个易于使用且功能丰富的.NETCore通用后台权限管理模板系统基础框架。项目名称"DncZeus"由"Dnc"(.NETCore的缩写)和"Zeus"(古希腊神话中的众神之王)组成,寓意该项目在.N......
  • Kafka集群以开启客户端鉴权
    在Kubernetes环境中,如果您使用的是StrimziKafkaOperator来管理您的Kafka集群,您可以通过CustomResourceDefinitions(CRD)来配置Kafka集群以开启客户端鉴权。以下是使用API接口创建Kafka集群并开启客户端鉴权的步骤:1.安装StrimziKafkaOperator首先,确保您已经在Kubernet......