hadoop学习笔记(八):MapReduce
一、MapReduce编程模型
一种分布式计算框架,解决海量数据的计算问题。
MapReduce将整个并行计算过程抽象到两个函数:
Map(映射):对一些独立元素组成的列表的每一个元素进行制定的操作,可以高度并行。
Reduce(化简):对一个列表的元素进行合并。
一个简单的MapReduce程序只需要指定Map()、reduce()、input和output,剩下的事情由框架完成。
二、Map过程(以wordcount为例):
1 一行一行读,每一行都解析成key/value形式。每一个键值对,都调用一次Map函数。
假设有一个文件的内容是:
hello hadoop!
hello world!
那么Map的读取过程为:
key | value | operate |
0 | hello hadoop! | --> hello:1 hadoop!:1 |
13 | hello world! | --> hello:1 world!:1 |
2 写自己的逻辑,对输入的key/value处理,转换成新的key/value输出。
key | value |
hello | 1 |
hadoop! | 1 |
hello | 1 |
world! | 1 |
3 对输出的key/value进行分区。
注意:Shuffling囊括了:partition和sort。
4 对不同分区的数据,按照key进行排序、分组。把相同的key的value放到一个集合中。
key | list<value> |
hello | 2 |
hadoop! | 1 |
world! | 1 |
5 (可选)分组后的数据进行归约。
三、Reduce过程:
1 对多个map任务的输出,按照不同的分区,通过网络copy到不同的reduce节点。
2 对多个map任务的输出进行合并、排序。写reduce函数自己的逻辑,对输入的key/value处理,转换成新的key/value输出。
3 把reduce的输出保存到文件中。
hadoop学习笔记(八):MapReduce的更多相关文章
- hadoop 学习笔记:mapreduce框架详解
开始聊mapreduce,mapreduce是hadoop的计算框架,我学hadoop是从hive开始入手,再到hdfs,当我学习hdfs时候,就感觉到hdfs和mapreduce关系的紧密.这个可能 ...
- Hadoop学习笔记:MapReduce框架详解
开始聊mapreduce,mapreduce是hadoop的计算框架,我学hadoop是从hive开始入手,再到hdfs,当我学习hdfs时候,就感觉到hdfs和mapreduce关系的紧密.这个可能 ...
- 【Big Data - Hadoop - MapReduce】hadoop 学习笔记:MapReduce框架详解
开始聊MapReduce,MapReduce是Hadoop的计算框架,我学Hadoop是从Hive开始入手,再到hdfs,当我学习hdfs时候,就感觉到hdfs和mapreduce关系的紧密.这个可能 ...
- hadoop 学习笔记:mapreduce框架详解(转)
原文:http://www.cnblogs.com/sharpxiajun/p/3151395.html(有删减) Mapreduce运行机制 下面我贴出几张图,这些图都是我在百度图片里找到的比较好的 ...
- Hadoop学习笔记—11.MapReduce中的排序和分组
一.写在之前的 1.1 回顾Map阶段四大步骤 首先,我们回顾一下在MapReduce中,排序和分组在哪里被执行: 从上图中可以清楚地看出,在Step1.4也就是第四步中,需要对不同分区中的数据进行排 ...
- Hadoop学习笔记—12.MapReduce中的常见算法
一.MapReduce中有哪些常见算法 (1)经典之王:单词计数 这个是MapReduce的经典案例,经典的不能再经典了! (2)数据去重 "数据去重"主要是为了掌握和利用并行化思 ...
- Hadoop学习笔记: MapReduce二次排序
本文给出一个实现MapReduce二次排序的例子 package SortTest; import java.io.DataInput; import java.io.DataOutput; impo ...
- Hadoop学习笔记: MapReduce Java编程简介
概述 本文主要基于Hadoop 1.0.0后推出的新Java API为例介绍MapReduce的Java编程模型.新旧API主要区别在于新API(org.apache.hadoop.mapreduce ...
- 三、Hadoop学习笔记————从MapReduce到Yarn
Yarn减轻了JobTracker的负担,对其进行了解耦
- Hadoop学习笔记—22.Hadoop2.x环境搭建与配置
自从2015年花了2个多月时间把Hadoop1.x的学习教程学习了一遍,对Hadoop这个神奇的小象有了一个初步的了解,还对每次学习的内容进行了总结,也形成了我的一个博文系列<Hadoop学习笔 ...
随机推荐
- ServiceBase.OnStart 方法
msdn 解释 派生类中实现时,在由服务控制管理器 (SCM) 或在操作系统启动时 (对于自动启动的服务) 时,将启动命令发送到服务时执行. 指定当服务启动时要执行的操作. 命名空间: Syste ...
- Nginx+IIS部署负载均衡的常见问题
windows 下配置 Nginx 常见问题 一. Nginx配置 找到 conf 目录里的 nginx.conf 文件,配置Nginx #user nobody; #指定nginx进程数 work ...
- Java基础学习篇---------String、集合的学习
一.String常用的方法: 1. == 实质比较两个对象的地址数值 String a = "hello" (hello为匿名对象) String a1 = "hell ...
- CentOS 7 - 最小化安装后,安装GNOME!!
CentOS 7的最小化安装,并没有安装任何X Window,GNOME是比较好的一个X Window,我决定安装GNOME! 通过yum grouplist命令,我发现GNOME已经处于可以安装列表 ...
- uiautomator2
uiautomator2 该项目正在火热的开发中 uiautomator2 是一个可以使用Python对Android设备进行UI自动化的库.其底层基于Google uiautomator,Go ...
- Python replace方法的使用
在Python str 中, 有一个很方便的查找替换的函数 replace() my_str = "lowmanmana" new_str = my_str.replace(&qu ...
- 关于使用Iscroll.js异步加载数据后不能滑动到最底端的问题解决方案
关于使用Iscroll.js异步加载数据后不能滑动到最底端,拉到最下边又弹回去的问题困扰了我老半天,相信很多朋友都遇到了.我刚好不小心解决了,和大家分享一下.由于各种忙,下边就直接上代码吧. (前提是 ...
- 微信小程序组件化实践
Do Not Repeat Yourself 如何提高代码质量,方法有许多:抽象.模块.组件化,我认为它们的中心点都是--Do Not Repeat Yourself. 小程序组件化 我们先看看小程序 ...
- SnapKit 类图
 如图上图所示,居于中心的是ConstraintDescription,它用来生成Constraint,最后再转换成系统的NSLayoutConstraint. ConstraintDescript ...
- IIS Express 配置 Json
在VS2013中调试D3官网的一些Sample过程中遇到了一个奇怪的问题:凡是Sample中使用的数据源是json文件时候,smaple 就无法在浏览器中正常运行.经调试后发现根本原因是IIS Exp ...