例1:文件的字符串查找

这里reduce不做merge的工作,因为每行都是不一样的,不能merge.

与传统的grep程序相比,使用MapReduce可以加快处理,因为1它是Distributed的,不用把所有的文件都拷到一台机器上运行,你的data可以在不同的server上,

原因2,它能并行处理,加快处理的速度。

例2: Reverse Web-link graph

Map:将<source,target>置反

Reduce: 输出每个target的source list.(不止一个)

例3: 计算URL的访问频率

有两个MapReduce,一个MapReduce计算每个URL的数量(类似前面的wordcount),另一个MapReduce计算比率(紧跟前面的那个MapReduce)。

第二个MapReduce中的reducer有会进行两次pass,一次是计算overall_count,一次是计算比率

例4: 排序

MapReduce内部的enginer已经做了很多sorting,这样可以让我们更简单的实现sorting

在每个Map(注意是在一个map里面进行了排序)执行后,这些输入Map的pairs已经在接下来输入给Reduce之前按照key排好序了(在Hadoop中是按照快排进行排序)

Reduce在接收pairs,处理这些pairs之间会对它们进行排序,比如这些pairs如果按照key来排序的话,同一个key的pairs是连续分布的,这样可以把同一个key的pairs输入给一个Reduce来处理

上述的这个例子是要将pairs按照values进行排序后输出.

在Map阶段,将value做为key,这样map阶段结束后输出的pairs在每个Map里面是按照value进行排序(quick sort)的。

在Reducer阶段,在处理前,会将所有的pairs进行排序(Merge sort),然后再对这些pairs进行输出。这样所有的pairs则都是按照value进行排序了

在这儿不能使用Hash partition来分配reducer,因为这儿我们是进行排序,如果使用hash来分配reducer处理的话,那么reducer之间就不是有序的了

在这儿我们分配reducer是按照range来分配的,比如reducer#1处理key1-key1000的pairs,reducer#2处理key10001-key2000的pairs......

在这个例子中我们在分配reducer的时候也要考虑keys的分布情况,比如若key10001-key2000分布的记录很多,则我们可以给这个区域多分配一些reducer来处理

最新文章

  1. 13、零配置Struts2开发
  2. tomcat匹配请求流程(原创)
  3. kendo-ui学习笔记——题记
  4. 【转载】RMAN备份保留策略设置相关命令
  5. ActiveReports 9实战教程(3): 图文并茂的报表形式
  6. 简单好用的Toast封装类——EasyToast
  7. Dom事件初步了解
  8. mongodb使用mongoose分组查询
  9. Eclipse配置CAS client
  10. noip 2012 借教室 (线段树 二分)
  11. CentOS 6.9上安装mysql-5.6.36
  12. [LeetCode] Insert into a Cyclic Sorted List 在循环有序的链表中插入结点
  13. Podfile
  14. 高斯消元-poj1222熄灯问题状态压缩解法
  15. python学习第五章
  16. NAND FLASH控制器
  17. find命令归总
  18. robotframework+Selenium2Library 模态窗口的处理
  19. Android Fragment的使用(转载)
  20. 实现一个简单的android开关

热门文章

  1. VMware虚拟机及Linux安装
  2. Linux 环境变量设置的几种方法
  3. tp5功能模块添加与调试
  4. FZU2018级算法第五次作业 m_sort(归并排序或线段树求逆序对)
  5. SPA中使用jwt
  6. Angular 学习笔记 immer 使用
  7. sqlserver 查看表死锁
  8. dotnetcore 与 hbase 之三——c# for hbase 客户端的使用
  9. JQuery 文本框控制验证数字
  10. Spring AOP 多个切点实现:JdkDynamicAopProxy