博客
关于我
MapReduce
阅读量:366 次
发布时间:2019-03-05

本文共 991 字,大约阅读时间需要 3 分钟。

MapReduce

话接,既然HDFS将文件分分散存放在各个节点了,那么也就可以在每个存储节点来单独计算了,毕竟人多力量大。没错,MapReduce 就是这么干的,调用Hadoop 提供的API,将map任务和reduce任务写好,打包上传到Hadoop框架就可以由集权来调度资源执行计算任务了,至于如何调度下篇再聊,这里主要聊一下map-reduce。

为什么时map-reduce呢,先来看一下归并排序

public void mergeSort (int[] arr, int begin, int end){   }

这里体现的就是分治思想,map-reduce也使用的这种思想,将一个大任务分成多个小任务,它将其定义成了两个阶段,map阶段和reduce阶段,“分”这个阶段干的事请在map时做,“合”这个阶段干的事请在reduce时做,以大数据中的helloworld为例,
首先获取数据,在map时将数据分为<word, 1> 这种pair的形式,reduce中将同一个word的pair累计,就得到了每个word的词频。编写的map和reduce类需要用到一个driver来驱动。其中数据怎么分片,map和reduce之间数据怎么传输框架都帮我们搞定了(毕竟框架,人家说了怎么干照着干就行了)。虽然传输不需要我们操心,但是可以看到map和reduce中的形参都不是java的普通数据类型,而是hadoop自定义的,这是为什么呢?因为如前所示的<word,1>这种形式的数据是需要在不同任务间传输的,不同任务可能运行在不同的节点,将map任务的结果传输到reduce的网络传输就需要序列化和反序列化,hadoop自己实现的数据类型序列化/反序列化更高效。那么问题来了,自定义的bean在hadoop中使用时也要实现writable序列化接口。

前面讲了MapReduce的基本思想,那它内部究竟怎么工作的呢?

1、map端

map端的InputFormat用getSplits

2、reduce端

以wordcount为例,map 仅仅将

3、shuffle

参考文献

MapReduce 之helloworld代码。
MapReduce 之使用自定义be’an对象时实现writable序列化接口。
129M会被切成两个小文件吗?
shffule之自定义分区器。

转载地址:http://jywwz.baihongyu.com/

你可能感兴趣的文章
redis 内存溢出_从数据存储的角度告诉你Redis为什么这么快!
查看>>
实例分析Facebook激励视频广告接入
查看>>
实例:使用OKGO下载网络压缩包资源,然后解压缩放在本地使用
查看>>
解决mybatis嵌套查询使用PageHelper分页不准确
查看>>
Redis源码分析(七)--- zipmap压缩图
查看>>
大规模集群自动化部署工具--Chef的安装部署
查看>>
HDFS源码分析(六)-----租约
查看>>
自定义Hive Sql Job分析工具
查看>>
聊聊HDFS RBF第二阶段的主要改进
查看>>
【MySQL】(九)触发器
查看>>
关于Altium Designer 09导出BOM表不能正确分类问题
查看>>
Oracle 11G环境配置
查看>>
【Spark】(六)Spark 运行流程
查看>>
【Python】(十二)IO 文件处理
查看>>
【Oozie】(三)Oozie 使用实战教学,带你快速上手!
查看>>
师兄面试遇到这条 SQL 数据分析题,差点含泪而归!
查看>>
Java8新特性——并行流与顺序流
查看>>
如何通过 Dataphin 构建数据中台新增100万用户?
查看>>
C语言的数值溢出问题(上)
查看>>
BottomNavigationView控件item多于3个时文字不显示
查看>>