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