在我工作的公司,每天我们必须处理几千个文件,这需要几个小时。这些操作基本上是CPU密集型的,例如将PDF转换为高分辨率图像,然后在这些图像中创建许多不同的大小。
这些任务中的每一个都需要大量的CPU,因此我们不能简单地在同一台机器上启动多个实例,因为没有任何处理能力可用于所有内容。因此,完成所有事情需要几个小时。
我认为最明显的做法是对文件集进行分区,并让它们同时由更多的机器处理(5,10,15台机器,我不知道还需要多少台机器) 。
我不想重新发明轮子并为任务创建经理(我也不想要麻烦),但我不确定应该使用哪种工具。
虽然我们没有大数据,但我已经开始考虑Hadoop(我们在亚马逊上运行),它处理节点的能力似乎很有趣。但是,我不知道使用它是否有意义。我也在关注Hazelcast,但我对它或概念还没有任何经验。
这项任务的好方法是什么?
答案 0 :(得分:1)
Hadoop被用于广泛的variety数据处理问题,其中一些也与图像处理有关。使用Hadoop也可以轻松解决OP中提到的问题。请注意,在某些情况下,要处理的数据很少,使用Hadoop会产生开销。
如果您是Hadoop的新手,会提出一些建议
Hadoop相对于其他s / w的优势在于Hadoop周围的生态系统。截至目前,Hadoop周围的ecosystem数量庞大且不断增长,我不确定Hazelcast。
答案 1 :(得分:0)
您可以使用Hazelcast distributed queue.
首先,您可以将文件(文件引用)作为任务放入分布式队列。 然后每个节点从队列中获取一个任务来处理它,并将结果放入另一个分布式队列/列表或将其写入DB /存储。