MapReduce (MRV1)设计理念与基本架构

MapReduce 是一个分布式计算框架,主要由两部分组成:编程模型和运行时环境.

其中,编程模型为用户提供了非常易用的编程接口,用户只需要像编写串行程序一样实现几个简单的函数即可实现一个分布式程序,而其他比较复杂的工作,如节点间的通信、节点失效、数据切分等,全部由MapReduce 运行时环境完成,用户无须关心这些细节。

编程模型:

????它的基本编程模型是将问题抽象成Map 和Reduce 两个阶段。其中,Map 阶段将输入数据解析成key/value,迭代调用map() 函数处理后,再以key/value 的形式输出到本地目录;Reduce 阶段则将key 相同的value 进行规约处理,并将最终结果写到HDFS 上。

map() 函数以key/value 对作为输入,产生另外一系列key/value 对作为中间输出写入本地

磁盘。MapReduce 框架会自动将这些中间数据按照key 值进行聚集,且key 值相同(用户可

设定聚集策略,默认情况下是对key 值进行哈希取模)的数据被统一交给reduce() 函数处理。

reduce() 函数以key 及对应的value 列表作为输入,经合并key 相同的value 值后,产

生另外一系列key/value 对作为最终输出写入HDFS。

运行时环境:

????它的运行时环境由两类服务组成:JobTracker 和TaskTracker,其中,JobTracker 负责资源管理和所有作业的控制,而TaskTracker 负责接收来自JobTracker 的命令并执行它。

?

五个编程组件:

InputFormat、

Mapper、

Partitioner、

Reducer 、

OutputFormat

Block 与 split的关系:

?

Map Task 执行过程:

Map Task 先将对应的split 迭代解析成一个个key/value 对,依次调用用户自定义的map() 函数进行处理,最终将临时结果存放到本地磁盘上,其中临时数据被分成若干个partition,每个partition 将被一个Reduce Task 处理。


Reduce Task的执行过程:

该过程分为三个阶段①从远程节点上读取MapTask 中间结果(称为"Shuffle 阶段");②按照key 对key/value 对进行排序(称为"Sort 阶段");③依次读取<key, value list>,调用用户自定义的reduce() 函数处理,并将最终结果存到HDFS 上(称为"Reduce 阶段")。

Hadoop MR作业的生命周期:

这个过程分为以下5 个步骤:

步骤1 作业提交与初始化

步骤2 任务调度与监控。

步骤3 任务运行环境准备。

步骤4 任务执行。

步骤5 作业完成。

?

分布式编程的方法:

适应的场景:

任务可被分解成相互独立的子问题

MapReduce 编程模型给出了其分布式编程方法,共分5 个步骤:

1)迭代(iteration)。遍历输入数据,并将之解析成key/value 对。

2)将输入key/value 对映射(map)成另外一些key/value 对。

3)依据key 对中间数据进行分组(grouping)。

4)以组为单位对数据进行归约(reduce)。

5)迭代。将最终产生的key/value 对保存到输出文件中。

MapReduce 将计算过程分解成以上5 个步骤带来的最大好处是组件化与并行化。

?

?

MapReduce编程体系结构:

流式访问、有向图式访问、链式MapperReduce访问、

时间: 2024-10-18 03:58:07

MapReduce (MRV1)设计理念与基本架构的相关文章

Spark设计理念与基本架构

<深入理解Spark:核心思想与源代码分析>一书前言的内容请看链接<深入理解SPARK:核心思想与源代码分析>一书正式出版上市 <深入理解Spark:核心思想与源代码分析>一书第一章的内容请看链接<第1章 环境准备> 本文主要展示本书的第2章内容: 第2章 设计理念与基本架构 "若夫乘天地之正.而御六气之辩,以游无穷者.彼且恶乎待哉?" --<庄子·逍遥游> 本章导读: 上一章,介绍了Spark环境的搭建.为方便读者学习Spa

Spring技术内幕:设计理念和整体架构概述

程序员都很崇拜技术大神,很大一部分是因为他们发现和解决问题的能力,特别是线上出现紧急问题时,总是能够快速定位和解决. 一方面,他们有深厚的技术基础,对应用的技术知其所以然,另一方面,在采坑的过程中不断总结,积累了很多经验. 相信大家都使用过Spring,有些人了解它的核心:IOC和AOP,但只是了解它们的基本概念.使用了反射和动态代理,关于如何管理对象.代理的具体实现了解的比较浅. 有些人使用Spring MVC,使用Spring集成数据库.事务.消息队列以简化操作,但对集成的具体设计思路和实现

Spring技术内幕——Spring的设计理念和整体架构

横看成岭侧成峰,远近高低各不同. 不识庐山真面目,只缘身在此山中. --苏轼 Spring的各个子项目 1.Spring Framework(Core):Spring项目的核心.包含了一系列IOC容器的设计,提供了反转模式的实现,同时还集成了AOP功能.另外,在Spring Framework中,还包含了其他Spring的基本模块,比如MVC.JDBC.事务处理模块的实现. 2.Spring Web Flow:建立在Spring MVC基础上的Web工作流引擎.定义了一种特定的语言来描述工作流,

Spring的设计理念和整体架构

1.Spring的各个子项目 Spring Framework(Core):这是我们熟知的Spring项目的核心.Spring Framework(Core)中包含了一系列Ioc容器的设计,提供了依赖反转模式的实现:同时,还集成了AOP功能:另外,在Spring Framework(Core)中,还包含了其他Spring的基本模块,比如MVC.JDBC.事务处理模块的实现. Spring Web Flow:原先的Spring Web Flow是一个建立在Spring MVC基础上的Web工作流引

《Spring技术内幕》笔记-Spring的设计理念和整体架构

1,Spring的主要子项目: -1,Spring Framework(Core):Spring项目的核心.提供IoC,AOP,MVC等核心功能. -2,Spring Web Flow:工作流引擎. -3,Spring BlazeDs Integration:Spring提供的与Flex通讯模块. -4,Spring Security:Spring认证和安全框架. -5,Spring Security OAuth:OAuth在Spring的实现上提供支持. -6,Spring Dynamic M

《Spring技术内幕》笔记-Spring的设计理念和总体架构

1.Spring的主要子项目: ????-1.Spring Framework(Core):Spring项目的核心.提供IoC,AOP,MVC等核心功能. ????-2.Spring Web Flow:工作流引擎. ????-3.Spring BlazeDs Integration:Spring提供的与Flex通讯模块. ????-4,Spring Security:Spring认证和安全框架. ????-5,Spring Security OAuth:OAuth在Spring的实现上提供支持.

001-Spring的设计理念和整体架构

一.概述 1.1.Spring的各个子项目 网站:https://spring.io/ 基于Spring的项目:https://spring.io/projects 文档列表:https://spring.io/projects/spring-boot 1.2.spring的设计目标 一站式的轻量级应用开发框架.POJO开发理念 原文地址:https://www.cnblogs.com/bjlhx/p/9160686.html

Migrating from MapReduce 1 (MRv1) to MapReduce 2 (MRv2, YARN)...

This is a guide to migrating from Apache MapReduce 1 (MRv1) to the Next Generation MapReduce (MRv2 or YARN). See the following sections for more information: Introduction Terminology and Architecture For MapReduce Programmers: Writing and Running Job

Yarn架构基本概况(一)

1)引言 针对MRv1在扩展性,可靠性,资源利用率和多框架的支持上存在着明显的不足,进而诞生了下一代的MapReduce的计算框架MapReduce Version2,MRV1中有一个很大的问题就是把资源管理和作业调度都扔给了JobTracker,造成了严重的单点瓶颈问题,所有MRV2主要在这一点上做了改进,他将资源管理模块构建成了一个独立的通用系统叫做Yarn,一下子MRV2的核心从MapReduce转到了Yarn上.后面就有了关于Yarn的各种发展和演变了. )Yarn设计理念和基本架构 y