美文网首页
MapReduce个人学习之路——Five

MapReduce个人学习之路——Five

作者: 赵氏春秋ZRH | 来源:发表于2017-07-23 22:34 被阅读0次

1.MapReduce

1.1工作流程

MapReduce运行机制 MapReduce框架的组成

按照时间顺序包括:
输入分片(input split)、
map阶段、
combiner阶段、
shuffle阶段
和 reduce阶段。

①输入分片阶段
 在进行map计算之前,mapreduce会根据输入文件计算输入分片(input split),每个输入分片(input split)针对一个map任务 输入分片(input split)存储的并非数据本身,而是一个分片长度和一个记录数据的位置的数组,输入分片(input split)往往和hdfs的block(块)关系很密切。

②map阶段
 程序员编写好的map函数了,因此map函数效率相对好控制,而且一般map操作都是本地化操作也就是在数据存储节点上进行。

③Combiner阶段
 是一个本地化的reduce操作,它是map运算的后续操作,主要是在map计算出中间文件前做一个简单的合并重复key值的操作。
 例如我们对文件里的单词频率做统计,map计算时候如果碰到一个hadoop的单词就会记录为1,但是这篇文章里hadoop可能会出现n多次,那么map输出文件冗余就会很多,因此在reduce计算前对相同的key做一个合并操作,那么文件会变小,这样就提高了宽带的传输效率,毕竟hadoop计算力宽带资源往往是计算的瓶颈也是最为宝贵的资源,但是combiner操作是有风险的,使用它的原则是combiner的输入不会影响到reduce计算的最终输入。

④shuffle阶段
 将map的输出作为reduce的输入的过程就是shuffle了。

⑤reduce阶段
 和map函数一样也是程序员编写的,最终结果是存储在hdfs上的。
</br></br>

1.2参数意义

map的方法
 public void map(Object key, Text value, Context context) throws IOException, InterruptedException {…} 这里有三个参数, 前面两个Object key, Text value就是输入的key和value, 第三个参数Context context这是可以记录输入的key和value。

reduce函数的方法
 public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {…} reduce函数的输入也是一个key/value的形式, 不过它的value是一个迭代器的形式Iterable<IntWritable> values, 也就是说reduce的输入是一个key对应一组的值的value,reduce也有context和map的context作用一致。
</br>

2.FileInputFormat

 FileInputFormat和FileOutputFormat可以设置输入输出文件路径,mapreduce计算时候,输入文件必须存在,要不直Mr任务直接退出。输出一般是一个文件夹,而且该文件夹不能存在。
</br>

3.InputSplit

 InputSplit是在map端,在InputSplit中含有DataNode中的数据,每一个InputSplit都会分配一个Mapper任务,Mapper任务结束后产生<K2,V2>的输出,这些输出先存放在缓存中,每个map有一个环形内存缓冲区,用于存储任务的输出。默认大小100MB(io.sort.mb属性),一旦达到阀值0.8(io.sort.spil l.percent),一个后台线程就把内容写到(spill)Linux本地磁盘中的指定目录(mapred.local.dir)下的新建的一个溢出写文件。

4.sort去重算法

①Map

Map

②Reduce


Reduce

相关文章

  • MapReduce个人学习之路——Five

    1.MapReduce 1.1工作流程 按照时间顺序包括:输入分片(input split)、map阶段、comb...

  • Hadoop MapReduce 学习笔记

    前言 本文是个人之前纪录的MapReduce学习笔记,主要涉及到MapReduce基本概念、Hadoop 经典示例...

  • hadoop学习之路2--MapReduce架构

    本系列均为hadoop1版本为准。。 MapReduce 也采用了Master/Slave(M/S)架构,主要有以...

  • MapReduce学习

    最近学习了分布式老三篇之一MapReduce,是用于分布式计算的。 MapReduce出现的背景数据量十分多的时候...

  • mapreduce框架详解

    参考:hadoop 学习笔记:mapreduce框架详解 [toc] 总结 Mapreduce是一个计算框架,既然...

  • Spark编程模型

    Spark简述 下图是Spark和MapReduce进行逻辑回归机器学习的性能比较,Spark比MapReduce...

  • MapReduce执行过程及shuffle详解

    开始学习Hadoop时,经常会听到MapReduce。MapReduce由Map和Reduce两个阶段,每个阶段都...

  • hadoop(八)MapReduce

    上一节课我们一起学习了RPC简单用法,这节课我们来学习MapReduce,MapReduce可谓是Hadoop当中...

  • 大数据开发:MapReduce排序与合并机制

    MapReduce作为Hadoop的核心计算引擎,算是学习当中必学的一个部分。虽然发展至今,MapReduce计算...

  • mapreduce学习笔记

    本文是对mapreduce技术的一个初步学习的总结,包括如下章节的内容: 概述 发展史 基本概念 程序编写 运行测...

网友评论

      本文标题:MapReduce个人学习之路——Five

      本文链接:https://www.haomeiwen.com/subject/gjxvkxtx.html