Kafka Storm HDFS / S3数据流

时间:2013-06-22 21:59:53

标签: hdfs apache-kafka apache-storm

目前还不清楚你是否可以像在Flume那样在Kafka进行扇出(复制)。

我想让Kafka将数据保存到HDFS或S3并将该数据的副本发送到Storm进行实时处理。 Storm聚合/分析的输出将存储在Cassandra中。我看到一些实现将所有数据从Kafka流入Storm,然后是Storm的两个输出。但是,我想消除Storm对原始数据存储的依赖性。

这可能吗?您是否了解此类文档/示例/实现?

另外,Kafka是否对S3存储有很好的支持?

我看到Camus存储到HDFS - 你是否只是通过cron运行这个工作来不断地将数据从Kafka加载到HDFS?如果作业的第二个实例在上一个实例完成之前开始会发生什么?最后,Camus会与S3合作吗?

谢谢 - 我很感激!

4 个答案:

答案 0 :(得分:1)

关于加缪, 是的,启动工作的调度程序应该工作。 他们在LinkedIn使用的是Azkaban,你也可以看一下。

如果在另一个完成之前启动,则会读取一些数据量两次。由于第二个作业将从第一个作业使用的相同偏移开始读取。

关于使用S3的Camus,目前我认为不存在。

答案 1 :(得分:0)

关于Kafka对S3存储的支持,有几个Kafka S3消费者可以轻松插入以将数据保存到S3。 kafka-s3-storage就是其中之一。

答案 2 :(得分:0)

有很多种方法可以用翻译的数据来提供风暴。我不清楚的主要问题是你希望消除的依赖性以及你希望避免做什么的任务。 如果认为风暴会收到xml或json,那么您可以使用两个消费者轻松地从原始队列中读取。当每个消费者控制它读取的消息时,两者都可以读取相同的消息。一个消费者可以将数据插入您的存储,另一个消费者将翻译信息并将其发送到风暴。这种可行性并不存在真正的复杂性,但是,我认为由于以下原因,这不是理想的解决方案:

  1. 可维护性 - 消费者需要监督。因此,您需要监督正在运行的消费者。根据您的部署和处理数据类型的方式,这可能是一项非常重要的工作。特别是,当你已安装风暴并因此受到监督时。

  2. 风暴连接 - 你仍然需要弄清楚如何将这些数据连接到风暴。 Srorm有一个卡夫卡鲸鱼嘴,我已经习惯了,效果很好。但是,使用建议的体系结构,这意味着需要另外一个kafka主题来放置已翻译的消息。这不是非常有效,因为喷口也可以直接从原始主题读取信息并使用简单的螺栓进行翻译。

  3. 处理此问题的建议方法是形成拓扑,使用kafka spout读取原始数据,使用一个bolt将原始数据发送到存储,另一个用于转换它。但是,此解决方案取决于您希望避免原始数据业务风暴的原因。

答案 3 :(得分:0)

Kafka实际上会在一段可配置的时间内保留事件 - 事件不会像其他消息或队列系统一样在消费时立即被清除。这允许您有多个消费者可以在开始时(根据可配置的保留时间)或从偏移量读取Kafka。

对于所描述的用例,您将使用Camus将事件批量加载到hadoop,使用Storm来读取相同Kafka 输出的事件。只需确保两个进程在可配置的保留时间到期之前读取新事件。

关于加缪, ggupta1612 最好地回答了这方面的问题

启动作业的调度程序应该可以正常工作。他们在LinkedIn使用的是Azkaban,你也可以看一下。

如果在另一个完成之前启动,则会读取一些数据量两次。由于第二个作业将从第一个作业使用的相同偏移开始读取。