扣丁学堂简述大数据MapReduce了解
作者头像
  • 半导体行业观察
  • 2019-01-09 12:29:20 0

对大数据分析感兴趣的朋友需要掌握许多大数据开发的知识与技能。本文将介绍大数据中的MapReduce技术。

为什么要使用MapReduce?因为它能够“化繁为简”,把处理大数据的复杂任务拆分成多个简单的子任务。“简单”意味着计算规模缩小,数据在就近节点进行处理,并且可以并行执行。

简要版流程如下:

输入文件 ->【Map任务】分割 --> 映射 --> 分区 --> 排序 --> 合并(暂存于内存缓冲区)~~~ 溢写(由独立线程写入磁盘)--> 合并 --> 输出Map阶段的结果 ~~~ 【Reduce任务】复制 --> 合并 --> Reduce处理 --> 输出最终文件

多个Map任务同时启动,分别处理各自的数据片段。

分区:

作用是将Map阶段的输出分配给对应的Reducer,分区的数量等于Reducer的数量。默认采用哈希分区算法。随后,数据会被写入内存缓冲区。

溢写:

当内存缓冲区中的数据达到一定比例(默认为80%),会触发溢写操作。此时,系统会锁定这部分数据,并将其写入本地磁盘,形成临时文件。这个过程由单独的线程控制,与写入内存缓冲区的操作同步进行。

排序与合并:

在数据溢写到磁盘前,会对这80%的数据按分区和键进行排序。如果设置了Combine操作,则在此基础上进一步合并相同键的数据,最终形成一个溢写文件。

合并:

将多个溢写文件通过多路归并排序合并成一个文件,这是Map阶段的最终输出。同时还会生成一个索引文件(file.out.index),记录每个分区的起始位置和长度。

Reduce阶段:

复制:多线程并发地从各个Mapper处获取属于当前Reducer的数据块,并存储在内存缓冲区中。当内存使用率超过阈值时,数据会被写入磁盘。

合并:持续进行,因为不同Mapper的输入文件可能未排序,所以在写入磁盘前需要进行合并操作,直到没有新的Map端数据被写入为止。最后启动合并操作,对所有磁盘上的数据进行排序,形成最终文件作为Reducer的输入文件,至此Shuffle阶段结束。

Reduce:类似于Combine,都是为了合并相同的键并计算结果,最终将结果写入HDFS。

总之,对于MapReduce的理解大致如上所述。学习大数据并非一日之功,对于有兴趣进行大数据分析的朋友,建议选择专业的培训机构进行系统学习,这样才能确保掌握实用的技术。这里推荐一家专业的培训机构——扣丁学堂,它不仅拥有资深的讲师和丰富的课程资源,还提供大量可供学员自学的大数据视频教程。

    本文来源:图灵汇
责任编辑: : 半导体行业观察
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
简述学堂MapReduce了解数据
    下一篇