欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 八卦 > kafka和Spark-Streaming2

kafka和Spark-Streaming2

2025/5/1 0:03:33 来源:https://blog.csdn.net/2401_84627304/article/details/147503952  浏览:    关键词: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操作的硬性要求,即两个流的批次大小必须一致。

  

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词