MapReduce端的二次排序以及对移动计算而不是移动数据的理解
2016-12-02 22:28
204 查看
,
1.其实MapReduce的二次排序是我们定义的sort排序会执行两遍,第一遍是在map端执行,针对一个map任务的(当partition之后的将数据写入到内存缓冲区的时候,达到内存缓冲区的80%的时候就会spill到disk,此时disk是作为硬盘缓存的,所以我们的数据在硬盘上可以sort排序,而且在map执行完任务之后数据就不见了),那么当程序执行到reduce之后,reduce端shuffle首先会将各个map端的数据都抓取到reduce端的内存缓冲区中,等达到内存缓冲区的80%的时候就会溢出到硬盘,硬盘作为内存缓冲区,在这里会第二次执行我们写的sort排序,也就是二次排序!这就是有名的二次排序!
2.不要再认为sort+group是二次排序了,group的作用就是一次性将同一组数据交给一个reduce任务处理!
3.这里需要强调的是:map任务不是随随便便地分配给某个TaskTracker的,这里有个概念叫:数据本地化(Data-Local)。意思是:将map任务分配给含有该map处理的数据块的TaskTracker上,同时将程序JAR包复制到该TaskTracker上来运行,这叫“运算移动,数据不移动”。而分配reduce任务时并不考虑数据本地!
上面也就是说,移动计算而不是移动数据实际上是针对shuffle之前的map端而言的,而不是针对reduce端而言的!
1.其实MapReduce的二次排序是我们定义的sort排序会执行两遍,第一遍是在map端执行,针对一个map任务的(当partition之后的将数据写入到内存缓冲区的时候,达到内存缓冲区的80%的时候就会spill到disk,此时disk是作为硬盘缓存的,所以我们的数据在硬盘上可以sort排序,而且在map执行完任务之后数据就不见了),那么当程序执行到reduce之后,reduce端shuffle首先会将各个map端的数据都抓取到reduce端的内存缓冲区中,等达到内存缓冲区的80%的时候就会溢出到硬盘,硬盘作为内存缓冲区,在这里会第二次执行我们写的sort排序,也就是二次排序!这就是有名的二次排序!
2.不要再认为sort+group是二次排序了,group的作用就是一次性将同一组数据交给一个reduce任务处理!
3.这里需要强调的是:map任务不是随随便便地分配给某个TaskTracker的,这里有个概念叫:数据本地化(Data-Local)。意思是:将map任务分配给含有该map处理的数据块的TaskTracker上,同时将程序JAR包复制到该TaskTracker上来运行,这叫“运算移动,数据不移动”。而分配reduce任务时并不考虑数据本地!
上面也就是说,移动计算而不是移动数据实际上是针对shuffle之前的map端而言的,而不是针对reduce端而言的!
相关文章推荐
- 十一、理解MapReduce的二次排序功能,包括自定义数据类型、分区、分组、排序
- Mapreduce的排序、全排序以及二次排序
- 大数据下 移动计算 和 移动数据的一点理解
- Hadoop---mapreduce排序和二次排序以及全排序
- Hadoop MapReduce 深入理解!二次排序案例!
- MapReduce和关系型数据库的对比以及如何理解规范性数据需要非本地操作
- MapReduce数据类型、二次排序及Join编程
- mapreduce排序和二次排序以及全排序
- Hadoop链式MapReduce、多维排序、倒排索引、自连接算法、二次排序、Join性能优化、处理员工信息Join实战、URL流量分析、TopN及其排序、求平均值和最大最小值、数据清洗ETL、分析气
- Hadoop Mapreduce分区、分组、连接以及辅助排序(也叫二次排序)过程详解
- 移动计算风起云涌:大数据处理大行其道
- 外排序时间估计和趟数计算的理解
- 对Hadoop二次排序的理解
- 深入理解云存储和云计算-数据模型及实现方式
- 学生类封装 , (链表)插入排序成绩 无动态数组 ,动态开辟空间 以及静态函数,数据成员的使用
- C_语法概念_sizeof()功能:计算数据空间的字节数以及字节对齐问题
- mapreduce的二次排序 SecondarySort
- bitmap与桶方式对1000万数据进行排序(转+自己实现理解)
- 【EntityFramework系列教程三,翻译】在ASP.NET MVC程序中使用EntityFramework对数据进行排序、过滤筛选以及实现分页
- 数字排序...(不是很理解)