hadoop笔记1-MR执行过程
2015-09-07 12:43
274 查看
MR执行过程包括Map、Shuffler、Reduce,其中Map、Reduce及Shuffler中的分区、合并、排序是可以允许程序员编程参与的。
1、Map阶段。
split-----map----partition sort and spill to disk------combine。
1)split的目的是应一个原始文件分成多个文件,分别交由不同的map节点处理,文件块大小由block size、max size、min size,在hadoop1版本的计算方式是spiltSize = max(minsize,max(blockSize,goalSize));在hadoop2版本中的计算方式为spiltSize
= max(minsize,max(blockSize,maxSize)),其中 maxSize = mapred.max.split.size 默认最大值整数值,minSize = mapred.min.split.size
默认0,goalSize是根据文件总大小totalSize和MapTask个数n计算得到,即goalSize=totalSize/n。
总结:新版本确定文件块大小时不再考虑maptask任务的个数,而有配置中的mapred.max.split.size代替。
2)map
3)partition sort and spill to disk
每个map任务计算的结果首先写到内存中,当超过阈值(默认100M)时将启动一个线程将数据内容溢写到磁盘上,在溢写的过程中需要指定每个map输出的键值对对应的reduce编号,即分区,默认的分区算法是使用map的key对象的hashcode模reduce个数,该方式不能保证负载均衡,重写Partition类的getPartition方法可自定义分区方式,除分区外,该过程还要经历排序过程,默认的排序是按ascii码排序,可实现WritableComparable接口的compare方法。
4)combine。
每个map任务执行过程中有可能会溢写生成多个文件,而map任务结束后需要交结果传到reduce任务节点,为提高效率需在网络传输文件前将多个小文件合并成大文件,combine是map节点本地reduce过程。
2、Reduce阶段
merge----sort----reduce-----output
在正式执行Reduce过程前,需要做一些预处理,首先将不同map节点传输过来的文件合并,然后排序,排序同map阶段。
1、Map阶段。
split-----map----partition sort and spill to disk------combine。
1)split的目的是应一个原始文件分成多个文件,分别交由不同的map节点处理,文件块大小由block size、max size、min size,在hadoop1版本的计算方式是spiltSize = max(minsize,max(blockSize,goalSize));在hadoop2版本中的计算方式为spiltSize
= max(minsize,max(blockSize,maxSize)),其中 maxSize = mapred.max.split.size 默认最大值整数值,minSize = mapred.min.split.size
默认0,goalSize是根据文件总大小totalSize和MapTask个数n计算得到,即goalSize=totalSize/n。
总结:新版本确定文件块大小时不再考虑maptask任务的个数,而有配置中的mapred.max.split.size代替。
2)map
3)partition sort and spill to disk
每个map任务计算的结果首先写到内存中,当超过阈值(默认100M)时将启动一个线程将数据内容溢写到磁盘上,在溢写的过程中需要指定每个map输出的键值对对应的reduce编号,即分区,默认的分区算法是使用map的key对象的hashcode模reduce个数,该方式不能保证负载均衡,重写Partition类的getPartition方法可自定义分区方式,除分区外,该过程还要经历排序过程,默认的排序是按ascii码排序,可实现WritableComparable接口的compare方法。
4)combine。
每个map任务执行过程中有可能会溢写生成多个文件,而map任务结束后需要交结果传到reduce任务节点,为提高效率需在网络传输文件前将多个小文件合并成大文件,combine是map节点本地reduce过程。
2、Reduce阶段
merge----sort----reduce-----output
在正式执行Reduce过程前,需要做一些预处理,首先将不同map节点传输过来的文件合并,然后排序,排序同map阶段。
相关文章推荐
- centos 6.5安装caffe
- Apache设置局域网内ip地址访问
- centos 7 systemd docker http proxy
- NSDictionary深copy
- No setter found for property 'cronExpression' 找不到cronExpression
- Linux下内存泄露检测valgrind
- centos6.4安装GCC4.8 C++11
- cipher加密套件(openssl)
- Openssl aes加解密例程 更进一步
- 每天进步一点点————MUMA架构优化和应用优化
- 架构之路(二):性能
- ubuntu 12.04 tomcat + jsp的入门
- ubuntu12.04下安装与配置tomcat6
- linux grep命令
- ubuntu 12.04下的nginx+php安装和配置
- This quotation is from a workshop 来自培训班的一则引言
- linux基础常识
- CentOS VirtualBox虚拟机配置访问Virtual Box虚拟机共享文件夹
- 用shell写俄罗斯方块(一)
- 生产服务器环境最小化安装后 Centos 6.5优化配置备忘