【Kafka】集成案例:与Spark大数据组件的协同应用

🐇明明跟你说过:个人主页

🏅个人专栏:《大数据前沿:技术与应用并进》🏅

🔖行路有良友,便是天堂🔖

目录

一、引言

1、什么是kafka

2、Kafka 的主要特性

3、Kafka 的典型应用场景

4、Kafka在大数据处理中的作用

二、Kafka与Spark的集成应用案例 

1、Spark Streaming简介 

2、Spark Streaming 主要特点

3、Spark Streaming 核心概念

4、Spark Streaming 典型工作流程

5、Kafka作为Spark Streaming的数据源 


一、引言

1、什么是kafka

Apache Kafka 是一个分布式流处理平台,主要用于构建实时数据管道和流式应用。Kafka 由 LinkedIn 开发,并于 2011 年开源,目前由 Apache 软件基金会进行管理。它以高吞吐量、低延迟和可扩展性著称。
 

在这个示意图中,生产者向 Kafka 代理发布消息,消息被存储在主题和分区中,然后消费者从代理中订阅并处理这些消息。

2、Kafka 的主要特性

高吞吐量:

  • Kafka 设计用于处理大量的实时数据流,每秒可处理数百万条消息。

低延迟:

  • Kafka 的架构使其能够在低延迟下处理大量消息,适合对实时性要求较高的应用场景。

持久性:

  • Kafka 消息持久化存储在磁盘上,并通过分区副本机制保证数据可靠性。

可扩展性:

  • Kafka 通过分区机制和多代理架构,能够水平扩展以处理更多的消息和更高的吞吐量。

容错性:

  • Kafka 通过复制机制保证数据的高可用性,即使某些代理宕机,数据依然可以被访问和处理。

3、Kafka 的典型应用场景

  1. 日志分析: Kafka 可以实时收集和传输来自不同服务器和应用的日志数据,通过流处理框架(如 Spark Streaming)进行实时分析,检测异常、生成实时报告等。
  2. 金融交易: 在金融交易系统中,Kafka 可以实时传输交易数据,结合实时处理框架,对交易进行实时监控、风险评估、欺诈检测等。
  3. 物联网: 在物联网应用中,Kafka 可以从各种传感器和设备收集数据,进行实时处理和分析,以监控设备状态、预测维护需求等。
  4. 社交媒体: 社交媒体平台可以使用 Kafka 实时收集用户活动数据,通过流处理框架进行分析,了解用户行为、生成个性化推荐等。 

4、Kafka在大数据处理中的作用

1. 实时数据采集

  • Kafka 可以高效地从各种数据源(如日志文件、数据库、传感器、应用程序等)实时采集数据。这些数据可以是结构化、半结构化或非结构化的。Kafka 的高吞吐量和低延迟使得它能够处理大规模的数据流,从而成为大数据处理的前端数据收集系统。

2. 数据缓冲和解耦

  • 在大数据架构中,数据生产者和消费者可能运行在不同的时间和速度。Kafka 作为一个持久化的消息队列,能够缓冲数据,解耦数据生产者和消费者。这样,即使数据消费者处理速度较慢,也不会影响数据生产者的工作,同时确保数据不丢失。

3. 数据管道和传输

  • Kafka 常用作数据管道中的关键组件,负责在不同的系统和服务之间传输数据。它可以将数据从源系统(如数据库、传感器、应用程序日志等)传输到目标系统(如 Hadoop、Spark、Flink 等)进行进一步处理和分析。

4. 实时数据处理

  • 结合流处理框架(如 Apache Flink、Apache Storm、Kafka Streams),Kafka 能够实现实时数据处理。通过实时分析和处理,可以及时获取业务洞察、监控系统状态、检测异常等。

   

5. 数据持久化和存储

  • Kafka 可以将数据持久化存储在磁盘上,确保数据的可靠性和持久性。它采用分区和复制机制,提供了高可用性和容错性,适合处理需要长期存储和高可靠性的数据。

6. 分布式日志

  • Kafka 被设计为一个高效的分布式日志系统,适用于各种日志管理和分析应用。通过集中管理和分析日志,可以更好地监控系统运行状态、排查故障、优化性能。

7. 数据集成

  • Kafka 可以作为一个数据集成平台,将不同数据源的数据整合起来,提供统一的数据视图。通过连接器(如 Kafka Connect),可以方便地将数据导入和导出到各种外部系统(如数据库、数据仓库、NoSQL 存储等)。

二、Kafka与Spark的集成应用案例 

1、Spark Streaming简介 

Apache Spark Streaming 是 Spark 生态系统中的一个组件,专门用于处理实时数据流。它扩展了 Spark 的核心 API,能够处理实时数据流,提供高吞吐量、容错性和易用的实时数据处理能力。

2、Spark Streaming 主要特点

  1. 实时数据处理: Spark Streaming 能够实时接收来自各种数据源(如 Kafka、Flume、Kinesis、TCP 套接字等)的数据流,并进行实时处理和分析。
  2. 微批处理架构: Spark Streaming 使用微批处理架构(Micro-Batch Processing),将实时数据流分割成小批次(Batch)进行处理,每个批次的数据在一个短时间间隔内(如 1 秒)被处理。这样既保留了批处理的高吞吐量,又能够近实时地处理数据。
  3. 高容错性: Spark Streaming 内置了容错机制,能够自动恢复由于节点故障或网络问题导致的任务失败。数据在处理过程中会被复制和持久化,确保数据不丢失。
  4. 与 Spark 的无缝集成: Spark Streaming 与 Spark 的其他组件(如 Spark SQL、MLlib、GraphX 等)无缝集成,能够轻松地将实时数据处理与批处理、机器学习和图计算等任务结合起来。
  5. 扩展性和弹性: Spark Streaming 能够在分布式集群上运行,具有很好的扩展性。通过动态资源分配,可以根据数据量的变化动态调整计算资源。

   

3、Spark Streaming 核心概念

  1. DStream(离散化流): DStream 是 Spark Streaming 的基本抽象,表示连续的数据流。每个 DStream 由一系列 RDD(弹性分布式数据集)组成,这些 RDD 表示在某个时间间隔内收集到的数据。
  2. 窗口操作: Spark Streaming 支持窗口操作,可以对滑动窗口内的数据进行聚合和分析。例如,可以计算过去 10 分钟内的数据的平均值,每 1 分钟更新一次。
  3. 转换操作: Spark Streaming 提供了丰富的转换操作(如 map、filter、reduce、join 等),允许用户对 DStream 进行复杂的操作和分析。

4、Spark Streaming 典型工作流程

  1. 数据接收: Spark Streaming 从各种数据源(如 Kafka、Flume、Kinesis、TCP 套接字等)接收实时数据流。
  2. 数据处理: 接收到的数据被分成小批次,转换成 RDD,并通过 DStream API 进行各种转换和操作。
  3. 结果输出: 处理后的数据可以被保存到外部存储系统(如 HDFS、数据库)、推送到实时仪表盘、触发警报或进一步处理。

  

5、Kafka作为Spark Streaming的数据源 

使用 Apache Kafka 作为 Spark Streaming 的数据源是一个非常常见的场景。Spark Streaming 能够无缝地从 Kafka 中消费数据,并进行实时处理和分析。

配置 Kafka 和 Spark Streaming
以下是如何配置 Kafka 和 Spark Streaming 的步骤:

1. 启动 Kafka 集群:

  • 安装并启动 Kafka 集群。
  • 创建一个或多个 Kafka 主题来发布数据。

配置 Spark Streaming:

  • 使用 spark-streaming-kafka-0-10 连接器来从 Kafka 中读取数据。

示例代码

from pyspark.sql import SparkSession
from pyspark.streaming import StreamingContext
from pyspark.streaming.kafka import KafkaUtils

# 创建 SparkSession
spark = SparkSession.builder.appName("KafkaSparkStreaming").getOrCreate()
sc = spark.sparkContext
ssc = StreamingContext(sc, 10)  # 批次间隔为10秒

# Kafka 参数
kafka_params = {
    "bootstrap.servers": "localhost:9092",  # Kafka broker 的地址
    "group.id": "spark-streaming-group",
    "auto.offset.reset": "latest"
}

# 主题列表
topics = ["your-topic-name"]

# 创建 Kafka 流
kafka_stream = KafkaUtils.createDirectStream(ssc, topics, kafka_params)

# 获取 Kafka 消息的内容
lines = kafka_stream.map(lambda x: x[1])

# 简单处理:统计每个批次的消息条数
lines.count().pprint()

# 启动计算
ssc.start()
ssc.awaitTermination()


在这个示例中,我们首先创建了一个 SparkSessionStreamingContext,然后通过 KafkaUtils.createDirectStream 方法从 Kafka 主题中读取数据。读取到的数据被转换为 RDD,并进行简单的统计处理(统计每个批次的消息条数)。最后,启动计算并等待终止信号。

详细步骤说明
1. 创建 Kafka 主题: 使用 Kafka 命令行工具创建一个主题,例如 your-topic-name。

kafka-topics.sh --create --topic your-topic-name --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1


2. 发送数据到 Kafka: 使用 Kafka 生产者向主题发送数据。

kafka-console-producer.sh --topic your-topic-name --bootstrap-server localhost:9092


然后在控制台输入消息,Kafka 会将这些消息发送到 your-topic-name 主题。

3. 配置 Spark Streaming 应用:

添加依赖项: 确保在 build.sbt 或 pom.xml 中添加 spark-streaming-kafka-0-10 连接器的依赖项。

libraryDependencies += "org.apache.spark" %% "spark-streaming-kafka-0-10" % "3.3.1"


编写并运行 Spark Streaming 应用。

💕💕💕每一次的分享都是一次成长的旅程,感谢您的陪伴和关注。希望这些关于大数据的文章能陪伴您走过技术的一段旅程,共同见证成长和进步!😺😺😺

🧨🧨🧨让我们一起在技术的海洋中探索前行,共同书写美好的未来!!!   

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Windows上安装专业版IDEA2024并激活

1、IDEA官方下载 搜索IDEA官网点击进入,点击Download(目前这个激活脚本只能激活2024.1.7,2024.2.x的版本都不能激活,2024.1.7版本已上传资源),如图: 2、开始安装 1)、双击下载的.…

CSS教程(二)- CSS选择器

1. 作用 匹配文档中的某些元素为其应用样式。根据不同需求把不同的标签选出来。 2. 分类 分类 基础选择器 包含 标签选择器、ID选择器、类选择器、通用选择器等 复合选择器 包含 后代选择器、子代选择器、伪类选择器等 1 标签选择器 介绍 又称为元素选择器,根…

Unix进程

文章目录 命令行参数进程终止正常结束异常终止exit和_exitatexit 环境变量环境变量性质环境表shell中操作环境变量查看环境变量设置环境变量 环境变量接口获取环境变量设置环境变量 环境变量的继承性 进程资源shell命令查看进程的资源限制 进程关系进程标识进程组会话控制终端控…

c# onnx 调用yolo v11进行目标检测

先上图,支持图片,视频检测 FormYoloV11.cs using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using OpenCvSharp.Dnn; using System; using System.Collections.Generic; using System.Diagnostics; usin…

【多语言】每种语言打印helloworld,编译为exe会占多大空间

文章目录 背景c语言 53KBc 53KBgo 1.8Mdart 4.6Mpython未测试nodejs未测试rust未测试java未测试cmd || bash || powershell 未测试other 背景 各个版本的helloworld,纯属闲的, 环境如下: - win10 - mingw: gcc8.1.0 - go1.21 - dart3.5.4c语言 53KB gcc main.c -…

前端搭建低代码平台,微前端如何选型?

目录 背景 一、微前端是什么? 二、三大特性 三、现有微前端解决方案 1、iframe 2、Web Components 3、ESM 4、EMP 5、Fronts 6、无界(文档) 7、qiankun 四、我们选择的方案 引入qiankun并使用(src外层作为主应用) 主应…

CVE-2024-2961漏洞的简单学习

简单介绍 PHP利用glibc iconv()中的一个缓冲区溢出漏洞,实现将文件读取提升为任意命令执行漏洞 在php读取文件的时候可以使用 php://filter伪协议利用 iconv 函数, 从而可以利用该漏洞进行 RCE 漏洞的利用场景 PHP的所有标准文件读取操作都受到了影响&#xff1…

InternVL 多模态模型部署微调实践

目录 0 什么是MLLM 1 开发机创建与使用 2 LMDeploy部署 2.1 环境配置 2.2 LMDeploy基本用法介绍 2.3 网页应用部署体验 3 XTuner微调实践 3.1 环境配置 3.2.配置文件参数解读 3.3 开始微调 4.体验模型美食鉴赏能力 0 什么是MLLM 多模态大语言模型 ( Multimodal Larg…

干货分享之Python爬虫与代理

嗨伙伴们,今天是干货分享哦,可千万不要错过。今天小蝌蚪教大家使用phthon时学会巧妙借用代理ip来更好地完成任务。 让我们先了解一下为什么说咱们要用爬虫代理ip呢,那是因为很多网站为了防止有人过度爬取数据,对自身资源造成损害…

鸿蒙学习生态应用开发能力全景图-赋能套件(1)

文章目录 赋能套件鸿蒙生态应用开发能力全景图 赋能套件 鸿蒙生态白皮书: 全面阐释了鸿蒙生态下应用开发核心理念、关键能力以及创新体验,旨在帮助开发者快速、准确、全面的了解鸿蒙开发套件给开发者提供的能力全景和未来的愿景。 视频课程: 基于真实的开发场景,提供向导式…

netcat工具安装和使用

netcat是一个功能强大的网络实用工具,可以从命令⾏跨⽹络读取和写⼊数据。 netcat是为Nmap项⽬编写的,是⽬前分散的Netcat版本系列的经典。 它旨在成为可靠的后端⼯具,可⽴即为其他应⽤程序和⽤户提供⽹络连接。 一,下载安装 1&a…

【PHP】ThinkPHP基础

下载composer ComposerA Dependency Manager for PHPhttps://getcomposer.org/ 安装composer 查看composer是否安装 composer composer --version 安装 ThinkPHP6 如果你是第一次安装的话,首次安装咱们需要打开控制台: 进入后再通过命令,在命令行下面&a…

【HarmonyOS】应用实现读取剪切板内容(安全控件和自读取)

【HarmonyOS】应用实现读取粘贴板内容(安全控件和自读取) 前言 三方应用 读取系统剪切板是比较常见的功能。可以实现功能入口的快捷激活跳转,以及用户粘贴操作的简化,增强用户的体验感。 但是在用户日渐注重隐私的今天,系统对于剪切板权限的…

飞牛云fnOS本地部署WordPress个人网站并一键发布公网远程访问

文章目录 前言1. Docker下载源设置2. Docker下载WordPress3. Docker部署Mysql数据库4. WordPress 参数设置5. 飞牛云安装Cpolar工具6. 固定Cpolar公网地址7. 修改WordPress配置文件8. 公网域名访问WordPress 前言 本文旨在详细介绍如何在飞牛云NAS上利用Docker部署WordPress&a…

解析安卓镜像包和提取DTB文件的操作日志

概述 想查看一下安卓的镜像包里都存了什么内容 步骤 使用RKDevTool_v3.15对RK3528_DC_HK1_RBOX_K8_Multi_WIFI_13_20230915.2153.img解包 路径: 高级(Advancing) > 固件(firmware) > 解包(unpacking)得到\Output\Android\Image boot.imguboot.imgsuper.img 处理boot.…

LeetCode 热题100(八)【二叉树】(3)

目录 8.11二叉树展开为链表(中等) 8.12从前序与中序遍历序列构造二叉树(中等) 8.13路径总和III(中等) 8.14二叉树的最近公共祖先(中等) 8.15二叉树中的最大路径和(困…

FPGA实现PCIE3.0视频采集转SDI输出,基于XDMA+GS2971架构,提供工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的PCIE方案本博已有的 SDI 编解码方案本博客方案的PCIE2.0版本 3、PCIE基础知识扫描4、工程详细设计方案工程设计原理框图电脑端视频QT上位机XDMA配置及使用XDMA中断模块FDMA图像缓存Native视频时序生成RGB转BT1120SDI转HDM…

纽约大学:指导LLM提出澄清性问题

📖标题:Modeling Future Conversation Turns to Teach LLMs to Ask Clarifying Questions 🌐来源:arXiv, 2410.13788 🌟摘要 🔸大型语言模型(LLM)必须经常对高度模糊的用户请求做出…

STM32F1学习——I2C通信

一、I2C通信一带多 在学习通信的时候,我们常会听到串口通信。但串口通信只限定两个设备之间,如果有多个设备,通信的两个设备就要连接上,接线复杂。所以有了总线式通信,在一条总线上可以连接多个设备,这些根…

当你想要conda安装遇到UnavailableInvalidChannel: HTTP 404 NOT FOUND for channel的问题

想要装个虚拟环境,结果遇到404。 看了第一个GitHub帖子中的一句话 UnavailableInvalidChannel: The channel is not accessible or is invalid. Navigator not launching. Issue #9473 conda/conda GitHub 想说那我就把这个not found的channel删掉吧&#xff…