【问题标题】:Hadoop for processing data from Apache solrHadoop 用于处理来自 Apache solr 的数据
【发布时间】:2012-05-04 06:30:02
【问题描述】:

我必须处理大量数据。我希望使用分布式计算(可扩展)对其进行处理。 我正在从 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,但它似乎是一个商业应用程序。

【问题讨论】:

  • 我看不出它为什么不起作用的原因。我正在处理类似的场景,并从基于 REST 的服务中获取结果并将其传递给 Hadoop
  • 我不敢说它不起作用。我只是在开始之前分析所有内容。你能告诉我在这种情况下我使用 hadoop 的方法是否正确/不正确

标签: java solr hadoop mapreduce


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    More about NoSQL databases.

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

    【讨论】:

    • 我已经在使用 mongodb。它没有获取我担心的数据。我担心的是处理从 mongodb 获取的数百万条记录
    • 所以您的数据已经在 Mongo 中,并且它的 Aggregation FrameworkMongoDb's MapReduce 出于某种原因还不够?
    • 是的。在处理每条记录时我还有其他事情要做
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-08
      • 1970-01-01
      • 2013-12-25
      • 1970-01-01
      • 2012-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多