map-reduce入门
近期在改写mahout源代码,感觉自己map-reduce功力不够深厚,因此打算系统学习一下。
map-reduce事实上是一种编程范式,从统计词频(wordCount)程序来解说map-reduce的思想最easy理解。
给定一个文件,里面的内容例如以下,要求统计每一个单词的词频。
Hello Angela
I love you Angela
How are you Angela
map(每一个单词处理为一行,key,value形式)
Hello,1
Angela,1
I,1
love,1
you,1
Angela,1
How,1
are,1
you,1
Angela,1
reduce(key同样的行汇在一起)
Angela,<1,1,1>
I, <1>
love, <1>
you, <1,1>
How, <1>
are, <1>
reducer处理后输出
Hello,1
Angela,3
I, 1
love, 1
you, 2
How, 1
are, 1
从上能够看到,map阶段和reduce阶段的输入输出数据都是key,value形式的。
key的存在是为了标志哪些数据须要汇在一起处理。
显然,对于上面统计词频的样例。我们的目的就是让同一个单词的数据落在一起,然后统计该单词出现了多少次。
了解了map-reduce的思想之后,以下来看看分布式的map-reduce是如何子的。
Hadoop有两类节点,一个jobtracker和一序列的tasktracker。
jobtracker调用tasktracker执行任务。假设当中一个tasktracker任务失败了,jobtracker会调度另外一个tasktracker节点又一次执行任务。
Hadoop会将输入数据进行分片处理,每一个分片是一个等大的数据块,
每一个分片会分给一个map任务来依次处理里面的每行数据。
一般来说。合理的分片大小趋向于hdfs一个块的大小,默认是64MB。
从而使得map任务执行在存有输入数据的节点上。降低数据的网络传输。
假设有多个reduce任务,那么map任务会对输出进行分区。落在同一个分区的数据,留给一个reduce任务处理。
当然。同样的key的数据肯定在一个分区中。
map在输出到reduce之前,事实上还能够存在一个combine任务,即localreduce,在本地做一次数据合并。从而降低数据的传输。
非常多时候,combiner和reducer能够是同一个类。
本文作者:linger
本文链接:http://blog.csdn.net/lingerlanlan/article/details/46713733
map-reduce入门的更多相关文章
- 记一次MongoDB Map&Reduce入门操作
需求说明 用Map&Reduce计算几个班级中,每个班级10岁和20岁之间学生的数量: 需求分析 学生表的字段: db.students.insert({classid:1, age:14, ...
- 入门大数据---Map/Reduce,Yarn是什么?
简单概括:Map/Reduce是分布式离线处理的一个框架. Yarn是Map/Reduce中的一个资源管理器. 一.图形说明下Map/Reduce结构: 官方示意图: 另外还可以参考这个: 流程介绍: ...
- Hadoop Map/Reduce教程
原文地址:http://hadoop.apache.org/docs/r1.0.4/cn/mapred_tutorial.html 目的 先决条件 概述 输入与输出 例子:WordCount v1.0 ...
- MapReduce剖析笔记之三:Job的Map/Reduce Task初始化
上一节分析了Job由JobClient提交到JobTracker的流程,利用RPC机制,JobTracker接收到Job ID和Job所在HDFS的目录,够早了JobInProgress对象,丢入队列 ...
- python--函数式编程 (高阶函数(map , reduce ,filter,sorted),匿名函数(lambda))
1.1函数式编程 面向过程编程:我们通过把大段代码拆成函数,通过一层一层的函数,可以把复杂的任务分解成简单的任务,这种一步一步的分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元. ...
- filter,map,reduce,lambda(python3)
1.filter filter(function,sequence) 对sequence中的item依次执行function(item),将执行的结果为True(符合函数判断)的item组成一个lis ...
- map reduce
作者:Coldwings链接:https://www.zhihu.com/question/29936822/answer/48586327来源:知乎著作权归作者所有,转载请联系作者获得授权. 简单的 ...
- python基础——map/reduce
python基础——map/reduce Python内建了map()和reduce()函数. 如果你读过Google的那篇大名鼎鼎的论文“MapReduce: Simplified Data Pro ...
- Map/Reduce 工作机制分析 --- 作业的执行流程
前言 从运行我们的 Map/Reduce 程序,到结果的提交,Hadoop 平台其实做了很多事情. 那么 Hadoop 平台到底做了什么事情,让 Map/Reduce 程序可以如此 "轻易& ...
- Map/Reduce个人实战--生成数据测试集
背景: 在大数据领域, 由于各方面的原因. 有时需要自己来生成测试数据集, 由于测试数据集较大, 因此采用Map/Reduce的方式去生成. 在这小编(mumuxinfei)结合自身的一些实战经历, ...
随机推荐
- selenium3+python-多窗口、句柄(handle)
一.获取当前窗口句柄 1.元素有属性,浏览器的窗口其实也有属性的,只是你看不到,浏览器窗口的属性用句柄(handle)来识别. 2.人为操作的话,可以通过眼睛看,识别不同的窗口点击切换.但是脚本没长眼 ...
- BZOJ 3653 主席树
思路: (抄一波公式) $$ans=min(dep[x],k)×(size[x]-1)+\sum_{y在x的子树中,且dis(x,y)<=k}(size[y]-1)$$ 顺着DFS序 按照dee ...
- .net中实现aspnetpager分页
第一步首先导入aspnetpager控件,然后再把他从工具箱中拖出,代码如下: <webdiyer:AspNetPager ID="aspnetpager1" runat= ...
- Java多线程-synchronized关键字
进程:是一个正在执行中的程序.每一个进程执行都有一个执行顺序.该顺序是一个执行路径,或者叫一个控制单元. 线程:就是进程中的一个独立的控制单元.线程在控制着进程的执行. 一个进程中至少有一个线程 Ja ...
- Android使用charles抓包
1.下载并安状软件,官网在此: 2.前题条件,电脑和手机必须在同一网段 3.在Charles界面选择菜单 proxy->proxy settings 勾选"Enable transpa ...
- Mongo连接远程数据库
mongo IP+Port CrabyterV5 首先这么操作是基于配置了环境变量的,可以参照http://www.cnblogs.com/daiyonghui/p/5209076.html mong ...
- 能够附加图片的标签控件iOS项目源码
这个源码案例是能够附加图片的标签控件,源码JTImageLabel,JTImageLabel能够附加图片的标签Label控件,图片可以随意更换.位置也能够很好的控制.效果图: <ignore_j ...
- dubbo之泛化实现
实现泛化调用 泛化接口调用方式主要用于客户端没有 API 接口及模型类元的情况,参数及返回值中的所有 POJO 均用 Map 表示,通常用于框架集成,比如:实现一个通用的服务测试框架,可通过 Gene ...
- Interrupt中断线程
package com.wistron.swpc.ecs.util; public class WrongWayStopThread extends Thread{ public static voi ...
- emlog通过pjax实现无刷新加载网页--完美解决cnzz统计和javascript失效问题
想要更详细了解pjax,需要查看官网 或者看本站文章:jQuery.pjax.js:使用AJAX和pushState无刷新加载网页(官网教程中文翻译) 效果看本站,音乐无刷新播放,代码高亮和复制js加 ...