需要有关Storm spout的合适消息队列的建议

时间:2013-07-04 14:10:54

标签: rabbitmq activemq amqp apache-storm

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

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

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

我们正在使用Kafka来获取数据。主要原因主要是性能和可用性。 AMQP投诉队列似乎并不是为了在相当长的时间内保存信息而设计的,而对于Kafka而言,这只是一个定义。这使我们能够长时间保持消息并允许我们轻松地“回放”这些消息(因为我们希望消费的消息总是由消费者控制,我们可以一次又一次地消费相同的消息而无需设置整个消息为此目的的系统)。而且,卡夫卡的表现与我见过的任何事都无法比拟。

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

  1. 错误报告 - 在那里做了一些改进。消息并不像人们希望的那样清晰。
  2. 这取决于zookeeper(如果你有暴风雨已经存在),并且需要为它手动创建路径。
  3. 根据风暴版本,注意使用的Kafka版本。记录在案,但是,很容易被遗漏并导致不明确的问题。

答案 2 :(得分:0)

您可以先将数据流式传输到代理主题。然后水槽和风暴喷口都可以从那个话题中消耗掉。 Flume有一个jms源,可以很容易地从消息代理中消费。风暴jms滔滔不绝地将消息带入暴风雨中。