1

我正在开发一个原型Lambda 系统,我的数据通过 Flume 流式传输到 HDFS。我还需要将数据导入 Storm。Flume 是一个推送系统,而 Storm 更具有拉力,所以我认为尝试将一个 spout 连接到 Flume 并不明智,但我认为两者之间应该有一个消息队列。同样,这是一个原型,所以我正在寻找最佳实践,而不是完美。我正在考虑将符合 AMQP 的队列作为 Flume 接收器,然后从 spout 中提取消息。

这是一个好方法吗?如果是这样,我想使用在 Flume 世界(作为接收器)和 Storm 世界(作为 spout)中都具有相对强大支持的消息队列。如果我使用 AMQP,那么我假设这让我可以选择使用我想使用的任何符合 AMQP 的队列,对吗?谢谢。

4

3 回答 3

0

您的方法很有意义,但是,对我们来说,符合 AMQP 的问题看起来不太重要。我将尝试解释原因。

我们正在使用 Kafka 让数据进入风暴。主要原因主要是围绕性能和可用性。AMQP 投诉队列似乎不是为长时间保存信息而设计的,而对于 Kafka,这只是一个定义。这使我们可以长时间保留消息并允许我们轻松“回放”那些消息(因为我们希望消费的消息始终由消费者控制,我们可以一次又一次地消费相同的消息,而无需设置整个用于该目的的系统)。此外,Kafka 的性能是我所见过的任何东西都无法比拟的。

Storm有一个非常好用的KafkaSpout,其中主要需要注意的是:

  1. 错误报告 - 那里有一些改进。消息并不像人们希望的那样清晰。
  2. 它取决于 zookeeper(如果你有storm,它已经存在)并且需要手动为其创建路径。
  3. 根据storm版本,注意使用的Kafka版本。它已记录在案,但是很容易被遗漏并导致不清楚的问题。
于 2013-07-05T09:50:24.763 回答
0

您可以先将数据流式传输到代理主题。然后水槽和风暴喷口都可以从该主题中消费。Flume 有一个 jms 源,可以很容易地从消息代理中使用。一个风暴 jms 喷出让消息进入风暴。

于 2013-07-08T19:22:04.413 回答
0

如果您打算使用 AMQP,我建议您坚持使用 AMQP 规范的最终 1.0 版本。否则,当您尝试从以前的版本升级到它时,您会感到有些痛苦。

于 2013-07-04T14:47:11.577 回答