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同样的行汇在一起)

Hello,<1>

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入门的更多相关文章

  1. 记一次MongoDB Map&Reduce入门操作

    需求说明 用Map&Reduce计算几个班级中,每个班级10岁和20岁之间学生的数量: 需求分析 学生表的字段: db.students.insert({classid:1, age:14, ...

  2. 入门大数据---Map/Reduce,Yarn是什么?

    简单概括:Map/Reduce是分布式离线处理的一个框架. Yarn是Map/Reduce中的一个资源管理器. 一.图形说明下Map/Reduce结构: 官方示意图: 另外还可以参考这个: 流程介绍: ...

  3. Hadoop Map/Reduce教程

    原文地址:http://hadoop.apache.org/docs/r1.0.4/cn/mapred_tutorial.html 目的 先决条件 概述 输入与输出 例子:WordCount v1.0 ...

  4. MapReduce剖析笔记之三:Job的Map/Reduce Task初始化

    上一节分析了Job由JobClient提交到JobTracker的流程,利用RPC机制,JobTracker接收到Job ID和Job所在HDFS的目录,够早了JobInProgress对象,丢入队列 ...

  5. python--函数式编程 (高阶函数(map , reduce ,filter,sorted),匿名函数(lambda))

    1.1函数式编程 面向过程编程:我们通过把大段代码拆成函数,通过一层一层的函数,可以把复杂的任务分解成简单的任务,这种一步一步的分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元. ...

  6. filter,map,reduce,lambda(python3)

    1.filter filter(function,sequence) 对sequence中的item依次执行function(item),将执行的结果为True(符合函数判断)的item组成一个lis ...

  7. map reduce

    作者:Coldwings链接:https://www.zhihu.com/question/29936822/answer/48586327来源:知乎著作权归作者所有,转载请联系作者获得授权. 简单的 ...

  8. python基础——map/reduce

    python基础——map/reduce Python内建了map()和reduce()函数. 如果你读过Google的那篇大名鼎鼎的论文“MapReduce: Simplified Data Pro ...

  9. Map/Reduce 工作机制分析 --- 作业的执行流程

    前言 从运行我们的 Map/Reduce 程序,到结果的提交,Hadoop 平台其实做了很多事情. 那么 Hadoop 平台到底做了什么事情,让 Map/Reduce 程序可以如此 "轻易& ...

  10. Map/Reduce个人实战--生成数据测试集

    背景: 在大数据领域, 由于各方面的原因. 有时需要自己来生成测试数据集, 由于测试数据集较大, 因此采用Map/Reduce的方式去生成. 在这小编(mumuxinfei)结合自身的一些实战经历, ...

随机推荐

  1. 自己对javascript闭包的了解

    目录 闭包的概念 谈谈函数执行环境,作用域链以及变量对象 闭包和函数柯里化 闭包造成的额外的内存占用  (注意我说的不是“内存泄漏”!) 闭包只能取得包含函数的最后一个值 正文 前言: 在这篇文章里, ...

  2. 进击的Python【第二十二章】

    day22 知识点概要 - Session - CSRF - Model操作 - Form验证(ModelForm) - 中间件 - 缓存 - 信号 内容详细: 1. Session 基于Cookie ...

  3. 如何在linux下搭建svn服务

    • 安装svn 使用命令 yum install subversion 如果提示上述错误,请以管理员身份运行 使用命令su root 再执行 yum install subversion 2,查看sv ...

  4. js-内置对象及相关语法

    1:如图(视频截取的) this指的是当前标签的对象. var ary=new Array("mark","jay","leslie"); ...

  5. Matlab矩阵填充--Matlab interp2

    Matlab interp2 为Matlab的矩阵填充函数, 填充关系: x=1:11; y=1:13; x1=1:0.1:12; y1=1:0.1:14; [x2,y2]=meshgrid(x1,y ...

  6. centos7网卡重命名为ethx格式

    参考:https://www.cnblogs.com/zyd112/p/8143464.html CentOS 7 使用 eth0 这样的传统名称,那么在安装启动(pxe)时,按Tab键在下方输入以下 ...

  7. BZOJ 4999: This Problem Is Too Simple! DFS序+LCA+树状数组+离线

    Code: #include<bits/stdc++.h> #define setIO(s) freopen(s".in","r",stdin) , ...

  8. matlab 读取输入数组

    In an assignment A(I) = B, the number of elements in B and I must be the same MATLAB:index_assign_el ...

  9. grpc-web与react的集成

    很久没写总结了,在这里跟大家分享一下自己踩的坑,同时也方便自己多记忆下. 大致流程: 使用create-react-app脚手架生成react相关部分,脚手架内部会通过node自动起一个客户端,然后和 ...

  10. MAC 快捷键&使用技巧等

    查看端口占用:命令 lsof -i tcp:port  (port替换成端口号,比如6379)可以查看该端口被什么程序占用,并显示PID,方便KILL