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

kafka和Spark-Streaming2

Kafka 工作流程及文件存储机制

        Kafka 中消息是以topic 进行分类的,生产者生产消息,消费者消费消息,都是面向topic 的。 

 

        “.log”文件存储大量的数据,“.index”文件存储偏移量索引信息,“.timeindex”存储时间戳索引文件。日志文件和索引文件都是根据基本偏移量(LogSegment中的第一条消息的offset)来命名的。上图第2个LogSegment对应的基本偏移量是133,说明了第1个LogSegment中共有133条数据。

 

Kafka 生产者 

作为生产者生成数据,并使用其他组件来采集数据。

        分区的原则

(1)指明 partition 的情况下,直接将指明的值直接作为 partiton 值;

(2)没有指明 partition 值但有 key 的情况下,将 key 的 hash 值与 topic 的 partition 数进行取余得到 partition 值;

(3)既没有 partition 值又没有 key 值的情况下,第一次调用时随机生成一个整数(后面每次调用在这个整数上自增),将这个值与 topic 可用的 partition 总数取余得到 partition 值,也就是常说的 round-robin (轮询)算法。

 

Kafka的ACKS机制

ACKS机制的三种级别:0、1和-1。

acks 参数配置:

0:producer 不等待 broker 的 ack,这一操作提供了一个最低的延迟,broker 一接收到还没有写入磁盘就已经返回,当 broker 故障时有可能丢失数据

1:producer 等待 broker 的 ack,partition 的 leader 落盘成功后返回 ack,如果在 follower同步成功之前 leader 故障,那么将会丢失数据

-1(all):producer 等待 broker 的 ack,partition 的 leader 和 follower 全部落盘成功后才返回 ack。但是如果在 follower 同步完成后,broker 发送 ack 之前,leader 发生故障,那么会造成数据重复

 

DStream转换

DStream 上的操作与 RDD 的类似,分为 Transformations(转换)和 Output Operations(输出)两种,此外转换操作中还有一些比较特殊的原语,如:updateStateByKey()、transform()以及各种 Window 相关的原语。

无状态转换操作

无状态转换操作是对每个批次的RDD进行的一系列操作。(即对每个批次的数据进行相同的转换操作。)

        常见的无状态转换操作示例,如map、flatMap、filter等。

 

Transform操作

   Transform 允许 DStream 上执行任意的 RDD-to-RDD 函数。即使这些函数并没有在 DStream的 API 中暴露出来,通过该函数可以方便的扩展 Spark API。该函数每一批次调度一次。其实也就是对 DStream 中的 RDD 应用转换。

   ( Transform操作允许执行任意的RDD到RDD的函数。)

 

Join操作

Join操作是将两个流的RDD进行关联,并对相同键的值进行合并。

        Join操作的硬性要求,即两个流的批次大小必须一致。

  

 

http://www.xdnf.cn/news/1945.html

相关文章:

  • [特殊字符]Google放大招!免费高配云主机开仓放粮,手慢无!
  • 详解 Servlet 处理表单数据
  • Linux进程学习【进程状态】
  • 【Linux】进程优先级和进程切换
  • Qt 调试信息重定向到本地文件
  • 深度学习--循环神经网络RNN
  • 自动化必备技能:JSONPath介绍
  • 【粉丝福利社】DeepSeek企业级AI应用实践
  • JPEG 解码 第28次CCF-CSP计算机软件能力认证
  • 《天道》:我发现能压制小人的人,都有一个共同点
  • 2025毕业生必看!用AI工具如何快速生成万字高质量论文
  • SQL Server 2019 安装与配置详细教程
  • Web 服务架构与技术组件概述
  • AI 开发工具提示词集体开源!解锁 Cursor、Cline、Windsurf 等工具的核心逻辑
  • 信创系统上使用 dpkg-repack 工具打包系统已安装软件
  • 用于渗透测试人员的 Burpsuite:Logger++
  • 二重积分的计算
  • 软件设计模式与体系结构:基于Java实现管道-过滤器架构
  • mapbox高阶,使用本地dem数据、等高线面数据实现千里江山图效果
  • Shell脚本-流程控制语句应用案例
  • 从代码学习深度学习 - 微调 PyTorch 版
  • 数据结构初阶:排序
  • 【MySQL专栏】MySQL数据库的复合查询语句
  • Pycharm(六):可变与不可变类型
  • 【时时三省】(C语言基础)循环程序举例
  • 手把手搭建AIGC应用:从图像生成到智能写作全实战
  • 使用 n8n 实现你的第一个爬虫程序:从零到自动化
  • 【金仓数据库征文】- 金融HTAP实战:KingbaseES实时风控与毫秒级分析一体化架构
  • 飞牛 NAS 整机要来了?!
  • C#高级语法--接口