大数据开篇 MapReduce初步
最近在学习大数据相关的东西,开这篇专题来记录一下学习过程。今天主要记录一下MapReduce执行流程解析
引子(我们需要解决一个简单的单词计数(WordCount)问题)
- 1000个单词
嘿嘿,1000单词还不简单,我们直接一句shell搞定
cat file | tr ' ' '\n' | sort | uniq -c | sort -rk1 | head -n 20
- 1000G
感觉良好,写个简单的程序也很好解决。 - 1000*1000G
有点懵逼了。 - 1000*1000*1000G
这时候就该请出我们的主角MapReduce了,MapReduce能解决海量数据的计算,海到什么程度呢,理论上来说是无限。那么它是怎么解决这么大量的数据的呢?
MapReduce思想(分治思想)
分治思想 | MapReduce |
---|---|
分解-求解 | 分:map |
合并 | 合:reduce |
- 下面来看看MapReduce的与单点程序具体执行流程比较
可以明显的看到和单点程序相比MapReduce数据来源于HDFS
,在read data
阶段作分片
处理,把数据源按照不同的规模进行拆分;在process data
阶段一样把任务分配给很多map
来做;同样在write data
阶段由一定数量的reduce
来处理最终的结果。
- 上面流程是一个整体的架构图,让我们近一步看看单个MapReduce流程是怎么运行的
在这个阶段,一个map其实就是对应着一个split
。map读取对应分片的数据,经过map函数(我们自己实现的)处理后并且经过partition
到一个默认大小100M(可配置)的buffer
上,当它写到80M(可配置)的时候,开始spill
数据到文件,每次都会产生一个小文件,在spill
的过程中写的时候会对数据进行sort
(默认排序算法是快排)、Combiner
。写到磁盘后每一个小文件都是有序的,那么这个多的小文件该怎么处理呢,不用想,肯定是merge,那么这么多有序的小文件,肯定是直接归并排序
。每个map的数据merge完成以后,会根据不同的partition
被fetch
对应的reduce
上面处理,reduce
拿到这些数据先对数据进行merge
,然后经过reduce函数(我们自己实现的)处理,并且合并多个reduce
结果得到最终结果。
- 更进一步,继续深入
我们把上面的步骤进一步拆解,更详细的看看每一个步骤
MapReduce原理
- JobTracker 主进程,负责接收客户端作业提交,调度任务到作业节点,并提供监控任务节点状态及任务进度等功能,一个MapReduce集群有一个JobTracker节点
- TaskTraceker 运行JobTracker指派的任务,并且定期的汇报状态,通过心跳实现,每一次心跳包含可用map和reduce任务数目、占用数目以及运行中的任务详情等。
附上具体任务提交流程:
大数据开篇 MapReduce初步的更多相关文章
- 【机器学习实战】第15章 大数据与MapReduce
第15章 大数据与MapReduce 大数据 概述 大数据: 收集到的数据已经远远超出了我们的处理能力. 大数据 场景 假如你为一家网络购物商店工作,很多用户访问该网站,其中有些人会购买商品,有些人则 ...
- 大数据技术 - MapReduce的Combiner介绍
本章来简单介绍下 Hadoop MapReduce 中的 Combiner.Combiner 是为了聚合数据而出现的,那为什么要聚合数据呢?因为我们知道 Shuffle 过程是消耗网络IO 和 磁盘I ...
- 大数据与Mapreduce
第十五章 大数据与Maprudece 一.引言 实际生活中的数据量是非常庞大的,采用单机运行的方式可能需要若干天才能出结果,这显然不符合我们的预期,为了尽快的获得结果,我们将采用分布式的方式,将计算分 ...
- 大数据技术 - MapReduce的Shuffle及调优
本章内容我们学习一下 MapReduce 中的 Shuffle 过程,Shuffle 发生在 map 输出到 reduce 输入的过程,它的中文解释是 “洗牌”,顾名思义该过程涉及数据的重新分配,主要 ...
- FusionInsight大数据开发---MapReduce与YARN应用开发
MapReduce MapReduce的基本定义及过程 搭建开发环境 代码实例及运行程序 MapReduce开发接口介绍 1. MapReduce的基本定义及过程 MapReduce是面向大数据并行处 ...
- 大数据技术 —— MapReduce 简介
本文为senlie原创,转载请保留此地址:http://www.cnblogs.com/senlie/ 1.概要很多计算在概念上很直观,但由于输入数据很大,为了能在合理的时间内完成,这些计算必须分布在 ...
- 大数据开发 | MapReduce介绍
1. MapReduce 介绍 1.1MapReduce的作用 假设有一个计算文件中单词个数的需求,文件比较多也比较大,在单击运行的时候机器的内存受限,磁盘受限,运算能力受限,而一旦将单机版程序扩展 ...
- 大数据技术 - MapReduce 作业的运行机制
前几章我们介绍了 Hadoop 的 MapReduce 和 HDFS 两大组件,内容比较基础,看完后可以写简单的 MR 应用程序,也能够用命令行或 Java API 操作 HDFS.但要对 Hadoo ...
- 大数据框架-Mapreduce过程
1.Shuffle [从mapTask到reduceTask: Mapper -> Partitioner ->Combiner -> Sort ->Reducer] mapp ...
随机推荐
- spoj 1825 Free tour II
http://www.spoj.com/problems/FTOUR2/ After the success of 2nd anniversary (take a look at problem FT ...
- 用英文写Email的注意事项
- Centos7环境下消息队列之ActiveMQ实战
Activemq介绍 对于消息的传递有两种类型: 一种是点对点的,即一个生产者和一个消费者一一对应: 另一种是发布/订阅模式,即一个生产者产生消息并进行发送后,可以由多个消费者进行接收. JMS定义了 ...
- 在外网使用ssh连接内网中的多台Linux服务器
最近因为要对全球工控机网络进行协议扫描,需要在实验室配置几台服务器,因为我们只有一个IP地址,所以是用路由器搭建了一个内网(拓扑结构如下图).但是这样做了之后无法在宿舍通过ssh直接连接服务器,因为那 ...
- 【BZOJ】3143: [Hnoi2013]游走 期望+高斯消元
[题意]给定n个点m条边的无向连通图,每条路径的代价是其编号大小,每个点等概率往周围走,要求给所有边编号,使得从1到n的期望总分最小(求该总分).n<=500. [算法]期望+高斯消元 [题解] ...
- 【洛谷 P2512】 [HAOI2008]糖果传递(贪心)
题目链接 环形均分纸牌. 设平均数为\(ave\),\(g[i]=a[i]-ave\),\(s[i]=\sum_{j=1}^ig[i]\). 设\(s\)的中位数为\(s[k]\),则答案为\(\su ...
- css3背景色过渡
<!DOCTYPE html><html lang="zh-cmn-Hans"><head><meta charset="utf ...
- python作业员工信息表程序(第四周)
作业需求: 1. 员工信息表程序,实现增删改查操作: 2. 可进行模糊查询,语法至少支持下面3种: select name,age from staff_table where age > 22 ...
- PHP非常好用的分页类
分页类: <?php /* * ********************************************* * @类名: page * @参数: $myde_total - 总记 ...
- 不相交集ADT--链表实现
每一个集合用用一个链表来表示.链表的第一个对象作为它所在集合的代表.链表中每个对象都包含一个集合成员,一个指向下一个对象的指针,以及指向代表的指针.每个链表含head和tail指针,head指向链表的 ...