最近在学习大数据相关的东西,开这篇专题来记录一下学习过程。今天主要记录一下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完成以后,会根据不同的partitionfetch对应的reduce上面处理,reduce拿到这些数据先对数据进行merge,然后经过reduce函数(我们自己实现的)处理,并且合并多个reduce结果得到最终结果。

  • 更进一步,继续深入

我们把上面的步骤进一步拆解,更详细的看看每一个步骤





MapReduce原理

  • JobTracker 主进程,负责接收客户端作业提交,调度任务到作业节点,并提供监控任务节点状态及任务进度等功能,一个MapReduce集群有一个JobTracker节点
  • TaskTraceker 运行JobTracker指派的任务,并且定期的汇报状态,通过心跳实现,每一次心跳包含可用map和reduce任务数目、占用数目以及运行中的任务详情等。

附上具体任务提交流程:

大数据开篇 MapReduce初步的更多相关文章

  1. 【机器学习实战】第15章 大数据与MapReduce

    第15章 大数据与MapReduce 大数据 概述 大数据: 收集到的数据已经远远超出了我们的处理能力. 大数据 场景 假如你为一家网络购物商店工作,很多用户访问该网站,其中有些人会购买商品,有些人则 ...

  2. 大数据技术 - MapReduce的Combiner介绍

    本章来简单介绍下 Hadoop MapReduce 中的 Combiner.Combiner 是为了聚合数据而出现的,那为什么要聚合数据呢?因为我们知道 Shuffle 过程是消耗网络IO 和 磁盘I ...

  3. 大数据与Mapreduce

    第十五章 大数据与Maprudece 一.引言 实际生活中的数据量是非常庞大的,采用单机运行的方式可能需要若干天才能出结果,这显然不符合我们的预期,为了尽快的获得结果,我们将采用分布式的方式,将计算分 ...

  4. 大数据技术 - MapReduce的Shuffle及调优

    本章内容我们学习一下 MapReduce 中的 Shuffle 过程,Shuffle 发生在 map 输出到 reduce 输入的过程,它的中文解释是 “洗牌”,顾名思义该过程涉及数据的重新分配,主要 ...

  5. FusionInsight大数据开发---MapReduce与YARN应用开发

    MapReduce MapReduce的基本定义及过程 搭建开发环境 代码实例及运行程序 MapReduce开发接口介绍 1. MapReduce的基本定义及过程 MapReduce是面向大数据并行处 ...

  6. 大数据技术 —— MapReduce 简介

    本文为senlie原创,转载请保留此地址:http://www.cnblogs.com/senlie/ 1.概要很多计算在概念上很直观,但由于输入数据很大,为了能在合理的时间内完成,这些计算必须分布在 ...

  7. 大数据开发 | MapReduce介绍

    1.  MapReduce 介绍 1.1MapReduce的作用 假设有一个计算文件中单词个数的需求,文件比较多也比较大,在单击运行的时候机器的内存受限,磁盘受限,运算能力受限,而一旦将单机版程序扩展 ...

  8. 大数据技术 - MapReduce 作业的运行机制

    前几章我们介绍了 Hadoop 的 MapReduce 和 HDFS 两大组件,内容比较基础,看完后可以写简单的 MR 应用程序,也能够用命令行或 Java API 操作 HDFS.但要对 Hadoo ...

  9. 大数据框架-Mapreduce过程

    1.Shuffle [从mapTask到reduceTask: Mapper -> Partitioner ->Combiner -> Sort ->Reducer] mapp ...

随机推荐

  1. codeforces 872E. Points, Lines and Ready-made Titles

    http://codeforces.com/contest/872/problem/E E. Points, Lines and Ready-made Titles time limit per te ...

  2. gcd的性质+分块 Bzoj 4028

    4028: [HEOI2015]公约数数列 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 865  Solved: 311[Submit][Statu ...

  3. Elasticsearch技术解析与实战(七)Elasticsearch批量操作

    批量查询 1.如果查询的document是不同index下的不同type种的话 GET /_mget { "docs" : [ { "_index" : &qu ...

  4. 【BZOJ】2820: YY的GCD

    [题意]给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对.T<=10^4,N,M<=10^7. [算法]数论(莫比乌 ...

  5. 【Ural】1519. Formula 1 插头DP

    [题目]1519. Formula 1 [题意]给定n*m个方格图,有一些障碍格,求非障碍格的哈密顿回路数量.n,m<=12. [算法]插头DP [题解]<基于连通性状态压缩的动态规划问题 ...

  6. 【CodeForces】908 D. New Year and Arbitrary Arrangement

    [题目]Good Bye 2017 D. New Year and Arbitrary Arrangement [题意]给定正整数k,pa,pb,初始有空字符串,每次有pa/(pa+pb)的可能在字符 ...

  7. git创建新分支推送到远程

    1.创建本地分支 git branch 分支名,例如:git branch 2.0.1.20120806 注:2.0.1.20120806是分支名称,可以随便定义.   2.切换本地分支 git ch ...

  8. ARP投毒攻击

    原理:通过分别伪装成客户机和服务器IP,将自己的MAC地址绑定在IP上,ARP错误的将IP解析为中间人MAC地址,从而来欺骗服务器网关和客户机,使信息必须通过客户机.

  9. usb_submit_urb 解释的够够的

    /** * usb_submit_urb - issue an asynchronous transfer request for an endpoint * @urb: pointer to the ...

  10. 新一代的USB 3.0传输规格

    通用序列总线(USB) 从1996问世以来,一统个人电脑外部连接界面,且延伸至各式消费性产品,早已成为现代人生活的一部分.2000年发表的USB 2.0 High-speed规格,提供了480Mbps ...