加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

MapReduce

发布时间:2020-12-14 04:42:25 所属栏目:百科 来源:网络整理
导读:http://hadoop.apache.org/docs/r2.9.0/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html Overview 一个MapReduce作业通常会将数据输入切分成独立的块,这些块会被map任务并行的处理。框架会对map的输出进行排序,然后再作为re

http://hadoop.apache.org/docs/r2.9.0/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html

Overview

一个MapReduce作业通常会将数据输入切分成独立的块,这些块会被map任务并行的处理。框架会对map的输出进行排序,然后再作为reduce任务的输入。典型的,一个任务的输入和输出都会被存储到一个文件系统中。框架关系调度任务,监控它们,并且在任务失败之后重新执行。

典型的,计算节点和存储节点是相同的,因此,MapReduce框架和HDFS通常运行在相同的节点上。可以配置让调度任务高效的处理在数据所在的节点上。

在集群中的每个节点上,MapReduce框架由一个master(ResourceManager)和一个slave(NodeManager)组成。

最简单的,应用指定输入输出的位置,并且通过实现相应的接口或抽象类提供map和reduce功能。

虽然,Hadoop框架是用Java实现的,但MapReduce应用不一定非要用Java来写。

Inputs and Outputs

MapReduce框架只操作键值对<key,value>,因此这个框架中任务的输入和输出都是键值对形式<key,value>

key和value必须是可序列化的,并且需要实现Writable接口。另外,key必须实现WritableComparable接口以提供排序功能

?

Example: WordCount v1.0

?

?

?

MapReduce - User Interfaces

Payload

典型的,应用程序实现Mapper和Reducer接口,以提供map和reduce方法。这是作业的核心。

Mapper

Mapper的maps输入键值对转换成一系列中间结果键值对

总得来说,通过job.setMapperClass(Class)方法将mapper的实现传递给作业,然后框架调用map(WritableComparable,Writeable,Conetxt)方法执行任务。

Mapper的输出会被排序、分区。分区的总数与作业中reduce任务的数量相同。用户通过实现Partitioner接口来自定义分区逻辑。

可选的,用户可以通过job.setCombiner(Class)来指定一个combiner,这个conbiner会对中间结果输出执行本地聚集操作,这样可以减少从Mapper到Reducer的数据传输。

How Many Maps?

maps的数量由输入文件的总大小决定,也就是说,等于输入文件的block总数。如果你的输入文件大小是10TB,并且Block大小是128M,那么你将有82000个maps。

?

?

Reducer

Reducer有3个主要阶段:shuffle,sort and reduce

Shuffle

Reducer的输入时已经排过序的mapper的输出。这个阶段是抓取所有mapper的输出相关的分区

Sort

在这一步,按照key进行分组。shuffle和sort是同时进行的。

?

maps的数量与block数量相同,分区数量和reducer数量相同?

?

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读