并行处理集群中的多个文件

时间:2012-01-10 02:11:50

标签: hadoop mapreduce parallel-processing

在我工作的公司,每天我们必须处理几千个文件,这需要几个小时。这些操作基本上是CPU密集型的,例如将PDF转换为高分辨率图像,然后在这些图像中创建许多不同的大小。

这些任务中的每一个都需要大量的CPU,因此我们不能简单地在同一台机器上启动多个实例,因为没有任何处理能力可用于所有内容。因此,完成所有事情需要几个小时。

我认为最明显的做法是对文件集进行分区,并让它们同时由更多的机器处理(5,10,15台机器,我不知道还需要多少台机器) 。

我不想重新发明轮子并为任务创建经理(我也不想要麻烦),但我不确定应该使用哪种工具。

虽然我们没有大数据,但我已经开始考虑Hadoop(我们在亚马逊上运行),它处理节点的能力似乎很有趣。但是,我不知道使用它是否有意义。我也在关注Hazelcast,但我对它或概念还没有任何经验。

这项任务的好方法是什么?

2 个答案:

答案 0 :(得分:1)

Hadoop被用于广泛的variety数据处理问题,其中一些也与图像处理有关。使用Hadoop也可以轻松解决OP中提到的问题。请注意,在某些情况下,要处理的数据很少,使用Hadoop会产生开销。

如果您是Hadoop的新手,会提出一些建议

  • 购买Hadoop : The Definitive Guide本书。
  • 浏览MapReduce resources
  • 开始阅读教程(12)并在单个节点和群集上设置Hadoop。如果1-2台机器可以免费学习,则不需要亚马逊。
  • 运行sample programs并了解它们的工作原理。
  • 开始将问题区域迁移到Hadoop。

Hadoop相对于其他s / w的优势在于Hadoop周围的生态系统。截至目前,Hadoop周围的ecosystem数量庞大且不断增长,我不确定Hazelcast。

答案 1 :(得分:0)

您可以使用Hazelcast distributed queue.

首先,您可以将文件(文件引用)作为任务放入分布式队列。 然后每个节点从队列中获取一个任务来处理它,并将结果放入另一个分布式队列/列表或将其写入DB /存储。