当前位置: 首页 > 知识库问答 >
问题:

动觉流上类似Kafka的偏移?

董鸣
2023-03-14

我过去曾与Kafka合作过一点,最近需要将部分数据管道移植到AWS Kinesis Stream上。现在我读到Kinesis实际上是Kafka的一个分支,并且有许多相似之处。

然而,我没有看到如何让多个消费者从同一个流中读取数据,每个消费者都有相应的偏移量。每个数据记录都有一个序列号,但我找不到特定于消费者的任何内容(Kafka组Id?)。

在同一个AWS Kinesis Stream上,真的有可能有不同的消费者具有不同的摄取率吗?

共有1个答案

左华灿
2023-03-14

是的。

您可以有多个Kinesis消费者应用程序。假设你有2个。

  1. 第一个消费者应用程序(我认为它是Kafka中的“消费者组”?)可以是“first-app”并将其位置存储在DynamoDB“first-app-table”中。它可以拥有任意多的节点(ec2实例)。
  2. 第二个消费者应用程序也可以在同一流上工作,并将其位置存储在另一个DynamoDB表上,例如“第二个应用程序表”。

每个表都将包含“应用程序Y在分片X上最后处理的位置是什么”信息。因此,2个应用程序将相同分片的检查点存储在不同的位置,这使它们独立。

关于摄取率,在使用KCL的消费者应用程序中有一个“idletimetweenreadsinmillis”值,即用于Get操作的Amazon Kinesis API的轮询间隔。例如,第一个应用程序可以有“2000”轮询间隔,所以它将每隔2秒轮询流的碎片,以查看是否有新记录出现。

我不太了解Kafka,但据我记忆所及;Kafka的“分割”在动觉学中是“碎片”,同样,Kafka的“偏移”在动觉学中是“序号”。Kinesis Consumer Library对存储序列使用术语“检查点”。正如你所说,概念是相似的。

 类似资料:
  • 我正在构建一个应用程序,该应用程序不断附加到缓冲区,而许多阅读器独立地从该缓冲区中消费(写一次读多/WORM)。起初我想使用Apache Kafka,但由于我更喜欢即服务选项,我开始研究AWS Kinesis Streams KCL,似乎我可以用它们完成这项任务。 基本上,我需要两个特性:排序(所有读卡器必须以相同的顺序读取事件)和在缓冲区中选择读卡器开始消费的偏移量的能力。 现在我也在评估谷歌云

  • 我在Kafka·吉拉也描述了这个问题:https://issues.apache.org/jira/browse/KAFKA-13014 我们有多个实例和线程的Kafka流。 这个Kafka流消耗了很多话题。 其中一个主题分区一天内无法访问,主题保留时间为4小时。 解决问题后,Kafka流正试图从不再存在的偏移量中消费: Kafka消费群体描述: 我们可以看到KS正在等待的当前偏移量是 Kafka

  • 我正在研究为Spark结构化流在kafka中存储kafka偏移量,就像它为DStreams工作一样,除了结构化流,我也在研究同样的情况。是否支持结构化流?如果是,我如何实现? 我知道使用进行hdfs检查点,但我对内置的偏移量管理感兴趣。 我期待Kafka存储偏移量只在内部没有火花hdfs检查点。

  • 我如何知道阅读器已经处理了Kinesis流中数据的百分比?我知道每个阅读器都有一个每个分片的检查点序列号,我也可以从描述流中获取每个分片的StartingSequence Number,但是,我不知道阅读器当前在我的数据中的进度(我不知道分片的最新序列号)。 我想为每个碎片获取一个最新的迭代器,并获取最后一条记录的序列号,然而,如果在获得最新迭代器后没有新数据,那么这似乎不起作用。 有什么想法或工

  • 我正在使用spark structured streaming(2.2.1)来消费来自Kafka(0.10)的主题。 我的检查点位置设置在外部HDFS目录上。在某些情况下,我希望重新启动流式应用程序,从一开始就消费数据。然而,即使我从HDFS目录中删除所有检查点数据并重新提交jar,Spark仍然能够找到我上次使用的偏移量并从那里恢复。偏移量还在哪里?我怀疑与Kafka消费者ID有关。但是,我无法