好的,我正在尝试学习Hadoop和mapreduce。我真的很想从mapreduce开始,我发现有很多简化的mapper和reducer等例子。然而,我发现缺少了一些东西。
虽然一个显示一个单词在文档中出现次数的例子很容易理解,但它并不能真正帮助我解决任何"现实世界"的问题。有人知道在psuedo现实情况下实现mapreduce的好教程吗。例如,我想在类似于Adventureworks的数据存储之上使用hadoop和mapreduce。现在,我想在五月份获得给定产品的订单。从hadoop/mapreduce的角度来看,这会是什么样子?(我意识到这可能不是mapreduce想要解决的问题,但它很快就出现了。)
任何方向都会有所帮助。
《Hadoop:最终指南》一书是一个很好的起点。入门章节应该对你很有用,可以弄清楚MapReduce在哪里有用,什么时候应该使用它。更高级的章节有很多比字数更现实的例子。
如果你想深入了解,你可能想看看MapReduce的数据密集型文本处理。这肯定有很多"真实世界"的用例,但听起来你对文本处理不感兴趣。
对于您的特定示例,需要实现的主要内容是:
- 映射阶段主要用于解析、转换数据和过滤数据。逐个记录,无共享的记录处理方法。在单词计数中,这是解析行并拆分单词
- reduce阶段是关于聚合的:计数、平均、min/max等。在单词计数中,这是对单词的实例进行计数
因此,如果你想在5月份获得给定产品的所有记录,你可以使用仅限地图的作业来过滤所有数据,并只保留你想要的记录。然而,您确实应该了解Hadoop的有用之处。更适合Hadoop的问题是:给我一个每个月每个项目的购买次数(也许是为了构建一个矩阵)。你很少会像你建议的那样寻找特定的记录。
如果你正在寻找一个更实时的访问平台,你应该在学习完Hadoop后查看HBase。
Hadoop可以用于各种各样的问题。从atbrox查看此博客条目。此外,互联网上有很多关于Hadoop和MapReduce的信息,很容易丢失。因此,这里是Hadoop上资源的综合列表。
BTW,Hadoop-最终指南第三版将于5月发布。看起来它也涵盖了MRv2(NextGen MapReduce),还包括更多的案例研究。第二版是值得一提的猩猩。
MapReduce可能是一个复杂的主题,因此我发现通过将其方法应用于简单问题更容易理解它。然后,我将继续描述MapReduce如何使在集群中直接解决相同的问题。您可以在我的文章中看到:MapReduce并行处理简介。
如果你认为这篇文章让我更容易理解MapReduce和Hadoop,请告诉我。