Hadoop学习(1)——MapReduce的原理和操作
来源:互联网 发布:js中createelement 编辑:程序博客网 时间:2024/05/25 21:32
MapReduce的流程图
名词解释:
Map的过程 :
- 每个输入分片会让一个map任务来处理,默认情况下,以HDFS的一个块的大小(默认为64M)为一个分片,当然我们也可以设置块的大小。map输出的结果会暂且放在一个环形内存缓冲区中(该缓冲区的大小默认为100M,由io.sort.mb属性控制),当该缓冲区快要溢出时(默认为缓冲区大小的80%,由io.sort.spill.percent属性控制),会在本地文件系统中创建一个溢出文件,将该缓冲区中的数据写入这个文件;
- 在写入磁盘之前,线程首先根据reduce任务的数目将数据划分为相同数目的分区,也就是一个reduce任务对应一个分区的数据。这样做是为了避免有些reduce任务分配到大量数据,而有些reduce任务却分到很少数据,甚至没有分到数据的尴尬局面。其实分区就是对数据进行hash的过程。然后对每个分区中的数据进行排序,如果此时设置了Combiner,将排序后的结果进行Combia操作,这样做的目的是让尽可能少的数据写入到磁盘;
当map任务输出最后一个记录时,可能会有很多的溢出文件,这时需要将这些文件合并。合并的过程中会不断地进行排序和combia操作,目的有两个:
(1) 尽量减少每次写入磁盘的数据量
(2) 尽量减少下一复制阶段网络传输的数据量。最后合并成了一个已分区且已排序的文件。为了减少网络传 输的数据量,这里可以将数据压缩,只要将mapred.compress.map.out设置为true就可以了将分区中的数据拷贝给相对应的reduce任务。有人可能会问:分区中的数据怎么知道它对应的reduce是哪个呢?其实map任务一直和其父TaskTracker保持联系,而TaskTracker又一直和JobTracker保持心跳。所以JobTracker中保存了整个集群中的宏观信息。只要reduce任务向JobTracker获取对应的map输出位置就可以了。
阅读全文
0 0
- Hadoop学习(1)——MapReduce的原理和操作
- Hadoop mapreduce原理学习
- Hadoop mapreduce原理学习
- Hadoop mapreduce原理学习
- hadoop 的MapReduce原理和学习心得
- hadoop 的MapReduce原理和学习心得
- hadoop学习第五节:hadoop2.2.0 - MapReduce原理及操作
- Hadoop学习笔记—11.MapReduce中的排序和分组
- Hadoop中MapReduce的原理
- hadoop的mapreduce原理解析
- hadoop里面的MapReduce和yarn的运行原理
- Hadoop读写原理和MapReduce执行原理
- Hadoop权威指南学习(五)——MapReduce的类型和格式
- 学习Hadoop(1)mapreduce
- Hadoop学习笔记:MapReduce原理简单学习
- Hadoop学习:HDFS和MapReduce
- Hadoop详解(三)——MapReduce原理和执行过程,远程Debug,Writable序列化接口,MapReduce程序编写
- Hadoop学习笔记(5)———Mapreduce工作原理
- 王者系列之Mybatis入门配置(maven版本)
- 在规则下编程
- MySQL Navicat Premium使用技巧
- Sagheer and Nubian Market
- ZOJ 3204 Connect them最小生成树
- Hadoop学习(1)——MapReduce的原理和操作
- 目前机器视觉的大牛
- 数组、链表、栈、队列和STL简介+对比
- Android Activity对象创建流程
- Maven 项目管理 —— 安装与配置
- RabbitMQ安装与环境变量配置
- qsort 结构体二级排序
- 自研视频直播技术点分析及使用LFLiveKit,ijkplayer
- Java--正则表达式基础入门(二)