0

我有一个批处理作业,它检索大量相互独立的 Web 服务。从一个 REST 响应中检索到的数据绝不依赖于或与来自另一个 REST 响应的数据一起使用,除非在所有处理完成后计算一些轻量级统计数据。

目前,我将有效负载集分布在 11 个段中,每个段在单独的 Java 线程中运行。完成最后一个线程后,将计算最终统计信息。根据每个 REST 请求是否具有相对于先前检索的新数据,整个批处理可能需要 4 到 25 分钟之间的任何时间。

批量大小相对适中,上述时间窗口也不错,因为数据仅每小时左右更新一次,所以如果我每 30 分钟从 cron 运行一次作业,我几乎消除了跳过时间序列的机会。但是,我正在考虑增加批量大小。

我是 Hadoop 新手,我想知道这个用例场景是否是 MapReduce 实现的一个很好的例子。一般来说,您如何决定何时使用多线程应用程序与升级到 Hadoop?

谢谢

4

2 回答 2

1

我会告诉网络爬虫,分成要处理的网站列表确实是hadoop案例。在那里,它实际上并没有用作 MapReduce,而是用作可扩展的分布式调度程序。
您给出的数字(11 段)听起来是边界情况。如果您要说 100 个答案是显而易见
的。同时,如果除了每个段中的数据处理之外,您还有一些有意义的结果聚合 - 使用 Hadoop MapReduce 将是另一个优势。

于 2012-09-15T17:14:17.193 回答
0

MapReduce 用于特定任务:计算聚合函数(如 sum、max、count)。你的任务适合这门课吗?然后,由于您的工作量不是很大,请查看 MapReduce 的内存实现。Hadoop 将所有数据写入磁盘。

于 2012-09-15T17:17:23.463 回答