1

我正在寻找可用于将数据从社交媒体流式传输到 hadoop 的技术。我搜索并找到了那些技术

  1. 水槽。
  2. 风暴。
  3. 卡夫卡。

哪个工具最好?为什么?有人熟悉其他工具吗?

4

3 回答 3

2

很可能,您会想要使用 Flume,因为它是为与 hdfs 一起工作而构建的。但是,与所有事情一样,这取决于。

Kafka 基本上是一个排队系统,通常用于在分析架构发生故障时保留数据。如果这听起来像您所需要的,那么可能值得研究RabbitMQZeroMQKestrel

Storm 用于复杂的事件处理。如果您使用storm,您将在后台使用zeroMQ,并且可能必须设置一个连接到kafka 或RabbitMQ 的spout。如果您需要在存储之前对数据进行复杂的修改,这可能是正确的选择。您也可以使用其他选项,例如spark。我倾向于纯粹出于个人喜好建议风暴。我听说linkedin也发布了一个实时复杂事件处理框架,但我不记得它的名字了。当我找到它时,我会更新帖子。

另一方面,如果你问这个问题,可能是因为你还没有构建这个东西。如果是这种情况,如果您需要流式传输,您可能想研究 hadoop 以外的东西。生态系统正在迅速扩展,可能有很多方法可以做你想做的事。

于 2013-09-30T19:35:13.467 回答
1

Apache Kafka是一个分布式消息传递系统。简而言之,就像您使用 KafKa 生产者将一些消息推送(发布)到 Kafka 队列中一样,而在另一端,您使用 Kafka 消费者(订阅者)使用它。消息/提要可以分为称为Topic. 现在您可以在集群中运行 Kafka,这使得它非常可扩展,并且可以在不停机的情况下进行扩展。

这可能是保持您的社交媒体流的不错选择。Kafka 将推送给它的消息保留一段可配置的时间,最好的部分来自他们说的文档

就数据大小而言,Kafka 的性能实际上是恒定的,因此保留大量数据不是问题。

查看文档以获得更好的可见性。

现在, Storm是一个非常可扩展、容错的分布式计算系统,可以轻松地与任何队列(如 Kafka)或数据库(HDFS/Cassandra 等)集成。因此,您可以根据您的要求将消息提供给风暴集群以进行进一步处理。有一种叫做KafkaSpout的东西可以在 Storm 和 kafka 之间进行无缝集成。

您还应该查看创建的Kafka-hadoop 加载程序@githubHadoop Job for incremental loading messages from Kafka topics onto hdfs with multiple file output semantics

同样正如@Peter Klipfel 所说: 如果您需要流式传输,您可能想要研究 hadoop 以外的其他东西 您还可以检查其他可用的替代方案,例如Apache Cassandra,它非常适用于延迟非常低的流式传输数据。

于 2013-10-05T09:52:51.877 回答
0

我认为这取决于你在哪里提取数据以及你试图对数据做什么。

另一种方法是使用 IBM Streams,您可以直接从社交媒体流中提取数据并存储到您选择的许多不同的数据存储中。

例如,您可以从此处使用 streamsx.social 工具包: https ://github.com/IBMStreams/streamsx.social ,它允许您直接从 HTTP 流中提取推文。

将数据导入 Streams 后,该产品还提供了许多适配器,允许您将流数据存储到数据存储中(例如 HDFS 使用 streamsx.hdfs,HBase 使用 streamsx.hbase。)

我认为另一个考虑因素是您对社交媒体数据进行了什么样的分析。如果您想在存储数据之前分析流内的社交数据,IBM Streams 还提供了一个文本工具包,允许您从社交数据非结构化文本中提取洞察力。您可以分析数据,而无需将其存储在任何地方。

希望能帮助到你!

于 2015-08-07T13:22:43.473 回答