我管理着一个小型的开发团队,在任何时候我们都有几个可以被认为是" 令人尴尬的并行 "的正在进行的(一次性)数据项目- 这些项目通常涉及在一台计算机上运行一个脚本几天,一个经典的例如,处理数千个PDF文件以提取一些关键文本并放入CSV文件以便以后插入数据库.
我们现在正在做足够的这类任务,我开始研究使用带有一些备用服务器的RabbitMQ开发一个简单的作业队列系统(着眼于将Amazon SQS/S3/EC2用于需要更大扩展的项目)
在搜索其他人这样做的例子时,我不断遇到经典的Hadoop纽约时报的例子:
"纽约时报"使用100个Amazon EC2实例和一个Hadoop应用程序,在24小时内将4 TB原始图像TIFF数据(存储在S3中)处理成1100万个已完成的PDF,计算成本约为240美元(不包括带宽)
哪听起来很完美?所以我研究了Hadoop和Map/Reduce.
但我无法解决的是他们是如何做到的?或者他们为什么这样做?
转换PDF中的TIFF肯定不是Map/Reduce问题吗?一个简单的工作队列不是更好吗?
另一个经典的Hadoop示例是来自Yahoo Hadoop Tutorial的"wordcount" 似乎非常适合Map/Reduce,我可以看到为什么它是大数据的强大工具.
我不明白这些"令人尴尬的并行"任务是如何被放入Map/Reduce模式的?
TL; DR
这是一个非常概念化的问题,基本上我想知道如何将"处理数千个PDF文件以提取一些关键文本并放入CSV文件"的任务适合Map/Reduce模式?
如果你知道任何完美的例子,我不是要你为我写的.
(注意:我们有处理PDF的代码,我不是要求它 - 它只是一个例子,它可能是任何任务.我要求将这样的过程放入Hadoop Map/Reduce模式 - 当那里没有明确的"地图"或"减少"元素来完成任务.)
干杯!