在我工作的公司,我们每天要处理几千个文件,这需要几个小时。这些操作基本上是 CPU 密集型的,比如将 PDF 转换为高分辨率图像,然后创建许多不同尺寸的此类图像。
这些任务中的每一项都占用大量 CPU,因此我们不能简单地在同一台机器上启动多个实例,因为没有任何处理能力可用于所有任务。因此,完成所有事情需要几个小时。
在我看来,最明显的做法是对文件集进行分区,并让更多机器同时处理它们(5、10、15 台机器,我还不知道需要多少台机器) .
我不想重新发明轮子并为任务创建一个管理器(我也不想麻烦),但我不确定应该使用哪个工具。
虽然我们没有大数据,但我已经开始研究 Hadoop(我们在 Amazon 运行),它处理节点的能力似乎很有趣。但是,我不知道使用它是否有意义。我也在看 Hazelcast,但我对它或概念完全没有经验。
完成这项任务的好方法是什么?
最佳答案
Hadoop 被广泛用于 variety数据处理问题,其中一些也与图像处理有关。 OP中提到的问题也可以使用Hadoop轻松解决。请注意,在某些要处理的数据较小的情况下,使用 Hadoop 会产生开销。
如果您是 Hadoop 的新手,我会提出一些建议
- 购买Hadoop : The Definitive Guide书。
- 通过 MapReduce resources .
- 开始学习教程(1 和 2)并在单个节点和集群上设置 Hadoop。亚马逊就不用了,能留出1-2台机器学习。
- 运行 sample programs并了解它们的工作原理。
- 开始将问题区域迁移到 Hadoop。
Hadoop 相对于其他软件的优势在于围绕 Hadoop 的生态系统。截至目前ecosystem围绕 Hadoop 是巨大的,而且还在不断增长,我不确定 Hazelcast。
关于hadoop - 集群中多个文件的并行处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8797752/