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



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

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

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

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

虽然我们没有大数据,但我首先研究了Hadoop(我们在亚马逊运行),它处理节点的能力似乎很有趣。然而,我不知道使用它是否有意义。我也在看Hazelcast,但我对它或概念还没有任何经验。

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

Hadoop被用于处理各种各样的数据处理问题,其中一些问题还与图像处理有关。OP中提到的问题也可以使用Hadoop轻松解决。请注意,在某些情况下,如果要处理的数据很小,那么使用Hadoop会产生开销。

如果你是Hadoop的新手,我会建议

  • 购买Hadoop:最终指南
  • 浏览MapReduce资源
  • 开始学习教程(1和2),并在单个节点和集群上设置Hadoop。如果能腾出1-2台机器进行学习,那么亚马逊就没有必要了
  • 运行示例程序并了解它们的工作原理
  • 开始将问题区域迁移到Hadoop

Hadoop相对于其他软件的优势在于围绕Hadoop的生态系统。到目前为止,Hadoop周围的生态系统是巨大的,而且还在增长,我不确定Hazelcast。

您可以使用Hazelcast分布式队列。

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

相关内容

  • 没有找到相关文章

最新更新