hadoop2.5.2学习06--MapReduce原理及操作2
来源:互联网 发布:jquery.countdown.js 编辑:程序博客网 时间:2024/05/06 05:52
主从机构
- 主:jobtracker
- 从:tasktracker
MapReduce四个阶段:
1、 Split
- 数据上传到hdfs上以block的形式存在, 作为Split的数据,例如:wordcount按照行分割,将每行数据作为一个任务,交给map处理;
2、 Mapper:key-value(对象)
- Split拆分的数据交给map,按照键值对形式, 如wordcount,每行数据的第一个字母的序号作为key,每行数据作为value,交由map处理。输出得到的也是键值对形式。
3、 Shuffle
- a) 分区(partition,HashPartition:根据key的hashcode值 和 Reduce的数量 模运算),可以自定义分区,运算速度要快。一定要解决数据倾斜和reduce的负载均衡。
- b) 排序:默认按照字典排序。WriterCompartor(比较)
- c) 合并:减少当前mapper输出数据,根据key相同(比较),把 value 进行合并。
- d) 分组(key相同(比较),value组成一个集合)(merge)
4、 Reduce
- a) 输入数据:key + 迭代器
1、下图为MapReduce的计算架构
map输出的数据,经过shuffle(洗牌), 形成键相同的一系列值, 作为reduce的输入
2、wordcount的计算流程
3、Mapper
Map-Reduce的思想就是“分而智之”
- Mapper负责“分”, 把复杂的任务分解成若干个 “简单的任务”执行
“简单任务”有几个含义:
- 数据或计算规模较原任务要大大缩小
- 就近计算,即会分配到存放了所需数据的节点进行计算,移动计算,而不是移动数据
- 这些小任务之间没有以来关系,可以并行计算
3、Shuffler
- 在mapper和reducer中间的一个步骤,包含4个过程:分区,排序,合并,分组,
- 可以见mapper的输出按照某种key值重新切分,和组合;把key值符合某种范围的输出到特定的reduce那里处理。
- 可以简化reduce的过程
下图为shuffler的详细流程图
- shuffler为map输出到reduce输入
map部分的shuffler:
首先map输出的数据首先存在内存中, 由于内存有限, 但达到一定阈值,数据即将溢出, 将数据写到磁盘中, 但是,在这之前, 首先要进行partition(使每个map输出的键值对都有一个分区号,将交由对应的reduce处理), sort(默认情况,对键进行字典排序), 然后spill to disk , 写到磁盘中,形成临时文件,当map task执行完了, shuffler会将所有的临时文件合并(merge),reduce部分的shuffler:
从各个map经由shuffle得到的数据(磁盘中合并后的文件),fetch(抓取)该reduce对应的分区的数据,优先放在内存中, 但是也会有溢写,需要再次进行排序,这个shuffle过程进行了两次排,font>排序之后进行分组,每组交由一个reduce处理。至此shuffler结束。
4、MapReduce的Split大小
- max.split(100M)
- min.split(10M)
- block(hadoop1.x中为64M, 2.0中为128M)
三者决定Split的大小:max(min.split, min(block, max.split))
根据上面的公式可知:要么是一个碎片段就是一个block, 要么一个block被拆分成多个碎片段。
不可能出现一个碎片段由多个block组成:- 如果这两个block不在同一台机器上,就需要进行数据的拷贝。这违背了mapreduce的理念:移动计算而不移动数据。
hadoop1.x与hadoop2x中的MapReduce区别:
hadoop1.x中为jobtracker和tasktracker的主从架构
hadoop2.x中,运行在yarn架构中。为resourceManager和NodeManager主从架构。
- hadoop2.5.2学习06--MapReduce原理及操作2
- hadoop2.5.2学习06--MapReduce原理及操作
- hadoop学习第五节:hadoop2.2.0 - MapReduce原理及操作
- Hadoop2.5.2学习04--HDFS原理及操作
- 从hadoop2.2,HBase0.96 mapreduce操作
- hadoop2.5.2学习07--MapReduce应用案例2
- Hadoop2.7.3 mapreduce(一)原理及"hello world"实例
- MapReduce环境、原理、架构及操作
- Hadoop2-MapReduce(2)
- Hadoop2.6.0 MapReduce 源码学习
- Hadoop2.5.2学习01--mapreduce统计单词数
- Hadoop学习三十:Win7 Eclipse调试Centos Hadoop2.2-Mapreduce
- Hadoop2.6(新版本)----MapReduce工作原理
- Hadoop入门进阶课程5--MapReduce原理及操作
- Hadoop入门进阶课程5--MapReduce原理及操作
- Hadoop入门进阶课程5--MapReduce原理及操作
- Hadoop学习(1)——MapReduce的原理和操作
- HiveSQL解析原理:包括SQL转化为MapReduce过程及MapReduce如何实现基本SQL操作
- |算法讨论|2-SAT 学习笔记
- 搭建简单的node+express+mongodb项目
- Timofey and a tree
- addr2line探秘(没有core怎么办)
- iperf工作原理及使用方法
- hadoop2.5.2学习06--MapReduce原理及操作2
- Mysql_UDF提权
- 冬令营游记
- 41. First Missing Positive(找到数组中未出现的最小正整数)
- Android 窗口管理子系统框架分析
- vue-router跳转页面
- linux下core文件调试方法
- 51NOD 1076 2条不相交的路径 【点双连通分量】
- flowable-task使用