我念叨spark
及其real-time stream
processing.I很困惑,如果spark
可以自己从源,如叽叽喳喳或文件读取流,那么我们为什么需要kafka
才能将数据提供给spark
?如果有人向我解释,如果我们使用spark
和kafka
,那将会很棒。谢谢。为什么我们需要卡夫卡到数据反馈到Apache火花
回答
Kafka为您的输入流提供了解耦和缓冲。
以Twitter数据为例,afaik连接到twitter api,并获得与您指定的条件匹配的连续推文。如果你现在关闭你的Spark作业一个小时,在你的服务器上进行一些调整或者推出一个新版本,那么你将错过那个小时的推文。
现在想象一下,您将Kafka放在您的Spark作业前,并且拥有一个非常简单的摄取线程,它只会连接到api并向Kafka发送推文,Spark工作可从中检索这些推文。由于Kafka坚持将所有内容都保存到光盘中,因此您可以关闭处理作业,执行维护操作,重新启动后,它们将从脱机状态恢复所有数据。此外,如果您以显着方式更改处理作业并希望重新处理上周的数据,那么如果您的连锁店中有Kafka(假设您将保留时间设置得足够高),则可以轻松地执行此操作 - 您您只需推出新工作,然后在卡夫卡中更改抵消额度,以便您的工作重新读取旧数据,并且数据存储完成后,您的新处理模型即可完成。
关于卡夫卡背后的人之一杰伊•克雷普斯(Jay Kreps)所写的总原则,有一个good article,如果您想了解更多信息,请阅读它。
谢谢你的回答。对于我,这说得通。就像你说的那样,我刚刚还有一个关于从上周重新获取数据的问题。如果我们也将数据存储在HDFS中,该怎么办?在这种情况下,kafka的目的是仅在系统关闭时保存数据,对吗?我实际上是在讨论lambda架构。在服务层,我们可以使用来自hadoop的数据,而kafka将保存新的数据。这是对的吗?谢谢。 –
您可以使用Spark HDFS输入流处理来自指定目录的新文件。然而,从特定的时间点控制重新处理将会困难得多 - 您必须在HDFS目录之间移动文件。使用Kafka,您可以指定从哪个位置(偏移量)开始处理你的数据。另外,如果你的Spark工作长时间运行 - 文件管家可能会成为一个问题 - 我想你可能不想在同一输入HDFS目录中拥有数百万个文件。您必须设计一个流程来删除/移动旧文件等。 – Marina
取决于如何将数据放入HDFS中,您可以写入暂存目录,并从那里定期运行Oozie作业以将数据插入分区的Hive表中,这样Hive就会负责您的底层文件组织并你有一个批量重新处理数据的简单方法(假设他们有我假设的时间戳),甚至删除旧数据。 这里真的没有对错的方式,这一切都很大程度上取决于你的要求是什么:) –
卡夫卡将所有东西都分离开来,消费者 - 生产者不需要彼此了解。 卡夫卡提供基于主题的发布 - 子模型。
您可以从多个来源向kafka中的任何主题写入数据(消息),并且消费者(spark或其他)可以根据主题使用数据。
多个使用者可以使用同一主题的数据,因为kafka会在一段时间内存储数据。
但最后,如果您确实需要经纪人,则取决于您的使用情况。
- 1. 火花,从uniq的卡夫卡要求
- 2. 卡夫卡+火花流:kafka.common.OffsetOutOfRangeException
- 3. 如何从卡夫卡的数据发送到火花
- 4. 转换火花卡夫卡InputDStream到数组[字节]
- 5. 卡夫卡火花流多个聚合
- 6. 卡夫卡火花流媒体整合
- 7. 火花卡夫卡生产序列化
- 8. 卡夫卡与火花集成
- 9. 卡夫卡主题分区火花流
- 10. 火花输出到卡夫卡完全一次
- 11. 卡夫卡数据处理没有风暴/火花流媒体
- 12. 火花,卡桑德拉,流媒体,蟒蛇,错误,数据库,卡夫卡
- 13. 星火流挂卡夫卡在JavaStreamingContext.start,无火花工作创造
- 14. 火花卡夫卡卡桑德拉不工作
- 15. 卡夫卡流火花不减少计数
- 16. 什么是delete.topic.enable卡夫卡
- 17. 为什么卡夫卡经纪人连接到自己?
- 18. 为什么我们需要在卡夫卡消费者配置中添加所有zookeeper节点
- 19. 需要卡夫卡消费者批量获取数据
- 20. 可以使用火花流1.5.1与卡夫卡0.10.0?
- 21. 卡夫卡主题内容不显示在火花中
- 22. 类没有发现火花流和卡夫卡
- 23. 无法通过火花流消耗卡夫卡消息
- 24. 火花 - 卡夫卡流异常 - 对象不是serializableConsumerRecord
- 25. 火花流每卡夫卡主题不同值解码器
- 26. 卡夫卡流不在火花作业中工作
- 27. 阅读最新的火花卡夫卡流
- 28. 从卡夫卡火花流中的空值
- 29. 斯卡拉 - 火花字数,为什么滑动不工作
- 30. 我应该使用什么:卡夫卡流或卡夫卡消费者API或卡夫卡连接
你不需要*它 - 他们服务于不同的目的。卡夫卡提供了一个统一的消费源。 –