3

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

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

这可能吗?您是否知道任何这样的文档/示例/实现?

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

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

谢谢,我很感激!

4

4 回答 4

1

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

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

关于带有 S3 的加缪,目前我认为还没有到位。

于 2013-07-10T00:17:08.277 回答
0

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

于 2013-06-22T23:07:02.557 回答
0

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

  1. 可维护性——消费者需要监督。因此,您需要监督正在运行的消费者。根据您的部署和处理数据类型的方式,这可能不是一件容易的事。特别是当您已经安装了storm并因此受到监督时。

  2. Storm connectiviy - 你仍然需要弄清楚如何将这些数据连接到storm。Srorm 有一个我用过的卡夫卡喷口,效果很好。但是,使用建议的架构,这意味着一个额外的 kafka 主题来放置翻译后的消息。这不是很有效,因为 spout 也可以直接从原始主题中读取信息并使用简单的螺栓进行翻译。

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

于 2013-06-23T15:24:21.587 回答
0

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

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

关于加缪,ggupta1612 在这方面回答得最好

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

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

于 2013-09-27T04:23:29.847 回答