0

我必须处理大量数据。我希望使用分布式计算(可扩展)对其进行处理。我正在从 apache Solr 获取数据。在传递特定输入时,我从 apache solr 得到一个巨大的数据集。对于这个数据集中的每条记录,我会将主键传递给 REST api 以获得一些将附加到记录的信息。然后每条记录都会进行一些更新。最终巨大集合中的每个更新的对象都将作为单独的 xml 文件写入一个文件夹中。

hadoop 是否适用于这种特定场景?。我在 hadoop mapreduce 文档中看到了 wordcount 示例。我试图以类似的方式考虑我的情况,其中 map reduce 为 2 个节点发出的 map 将是

Node1 - Map<InputIdToSolr1,Set<RecordsFromSolr1to500>>
Node2 - Map<InputIdToSolr1,Set<RecordsFromSolr500to1000>>

然后这个结果将由 hadoop 中的 reduce 函数组合。与 wordcount 不同,我的节点在每个节点的 map 中只有一个元素。我不确定使用 hadoop 是否有意义。我可以使用哪些其他选项/开源 Java 项目来扩展记录的处理。我从春天看到了 Terracotta,但它似乎是一个商业应用程序。

4

3 回答 3

0

您是否考虑过使用 NoSQL 数据库?使用哪一个的决定实际上取决于数据的形状。要检查它们(所有开源):

更多关于 NoSQL 数据库的信息。

编辑:
我刚刚偶然发现了来自 Couchbase 和 Cloudera(Hadoop 解决方案和支持公司)的网络研讨会,他们将在其中讨论 NoSQL + Hadoop 的使用。

于 2012-04-24T07:32:07.307 回答
0

不知道您正在寻找的可扩展性规模,但我会首先在多核机器上尝试多线程解决方案。

如果性能不符合预期,并且您可以灵活地获得更多硬件和应用程序实例,您可能会开始考虑 Map-Reduce 解决方案。

Terracota 不是来自 Spring/SpringSource/VMWare,尽管它是专有的和商业的。

于 2012-04-23T18:36:31.280 回答
0

该任务听起来适合 Hadoop 的 MapReduce。不仅如此 - Lucene 和 Hadoop 是由同一个人 Doug Cutting 创建的。在您的情况下,您可以考虑不同级别的集成。最简单的一种是将您的数据集放入 HDFS,然后选择/写入适合您的数据格式的输入格式,并在 Mapper 中进行您的 REST 调用以完成记录。
如果您有很多不同但相对简单的处理,我建议考虑将您的数据表示为 Hive 表 - 或来自 HDFS,或在 SOLR 中。
我不擅长 SOLR 架构,但是,如果您将 apache nutch 与 SOLR 一起使用 - 您可能已将 hadoop 集成在其中并可以使用它。

于 2012-04-24T07:39:55.107 回答