0

我正在使用一个名为 XBus 的数据聚合平台。我需要先介绍一下。XBus 聚合了许多不同类型的数据源,如 RDBMS、XML 文件、JSON 文件、Web 服务等。用户可以定义一个数据处理流,其中包含许多操作,如join、order-by、filter、combine、group-by。然后该流程将转换为 XQuery 脚本。SAXON(一种 XML 流程引擎)将在单台计算机(服务器)中处理 XQuery 脚本。

但是如果数据量很大,完成的时间会很长。所以,我正在考虑 MapReduce 框架,它可以在分布式环境中处理大量数据。但我不确定 MapReduce 是否合适。

有一个问题可以表明我的怀疑。

由于它是一个数据聚合平台,原始数据存储在许多不同的系统中。在使用 MapReduce 处理数据之前,我们是否必须从这些系统中收集相关数据并将它们放入 Mapreduce (HDFS) 中?如果是这样,那将需要很长时间,对吧?

4

1 回答 1

0

是的,您必须将数据加载到 HDFS,然后对其进行处理。MapReduce 是否适用取决于不同的因素:

  • 将数据加载到 HDFS 所需的时间是否明显小于处理集群中所有数据并产生最终结果所需的时间。
  • 是否可以将来自所有不同来源的数据存储在 HDFS 中并且仅存储在 HDFS 中,这样就无需在每次作业运行之前将(所有)新数据加载到 HDFS 上。
  • 您是否使用相同的转换处理不同的输入?在这里,您可以从重复运行相同的作业但使用不同的输入数据中受益。
  • 每次作业运行的所有输入数据都会改变吗?或者也许可以为不同的输入 XML 文件运行该作业,并同时使用相同的 MR 作业对其进行转换。

当您决定使用 MR 时,您可能会发现Cascading很有用。它是用于定义复杂数据流的数据 API。该项目提供了分叉、连接、标记、分组等抽象。

于 2013-03-12T21:41:37.040 回答