MapReduce海量数据并行处理总结

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MapReduce海量数据并行处理

复习大纲

Ch. 1. 并行计算技术简介

1.为什么需要并行计算?

提高计算机性能有哪些基本技术手段

提高字长,流水线微体系结构技术,提高集成度,提升主频

迫切需要发展并行计算技术的主要原因

1)单处理器性能提升达到极限

2)爆炸性增长的大规模数据量

2)超大的计算量/计算复杂度

2.并行计算技术的分类

有哪些主要的并行计算分类方法?

1)按数据和指令处理结构:弗林(Flynn)分类

2)按并行类型

3)按存储访问构架

4)按系统类型

5)按计算特征

6)按并行程序设计模型/方法

1)按数据和指令处理结构:弗林(Flynn)分类

SISD:单指令单数据流

传统的单处理器串行处理

SIMD:单指令多数据流

向量机,信号处理系统

MISD:多指令单数据流

很少使用

MIMD:多指令多数据流

最常用,TOP500高性能计算机

基本都属于MIMD类型

2)按并行类型分类

位级并行(Bit-Level Parallelism)

指令级并行(ILP:Instruction-Level Parallelism)

线程级并行(Thread-Level Parallelism)

数据级并行:一个大的数据块划分为小块,分别由不同的处理器/线程处理

任务级并行:一个大的计算任务划分为子任务分别由不同的处理器/线程来处理

3)按存储访问结构分类

A.共享内存(Shared Memory)

所有处理器通过总线共享内存

多核处理器,SMP……

也称为UMA结构(Uniform Memory Access)

B. 分布共享存储体系结构

各个处理器有本地存储器

同时再共享一个全局的存储器

C. 分布式内存(Distributed Memory)

各个处理器使用本地独立的存储器

B和C也统称为NUMA结构

(Non-Uniform Memory Access)

4)按系统类型分类

多核/众核并行计算系统MC(Multicore/Manycore) 或Chip-level multiprocessing, CMP 对称多处理系统SMP(Symmetric Multiprocessing)

多个相同类型处理器通过总线连接并共享存储器

大规模并行处理MPP(Massive Parallel Processing)

专用内联网连接一组处理器形成的一个计算系统

集群(Cluster)

网络连接的一组商品计算机构成的计算系统

网格(Grid)

用网络连接远距离分布的一组异构计算机构成的计算系统

5)按并行程序设计模型/方法分类

共享内存变量(Shared Memory Variables)

消息传递方式(Message Passing)

MapReduce方式

3.并行计算的主要技术问题

并行计算有哪些方面的主要技术问题?

多核/多处理器网络互连结构技术

存储访问体系结构

分布式数据与文件管理

并行计算任务分解与算法设计

并行程序设计模型和方法

数据同步访问和通信控制

可靠性设计与容错技术

并行计算软件框架平台

系统性能评价和程序并行度评估

如何评估程序的可并行度(Amdahl定律)

程序能得到多大并行加速依赖于该程序有多少可并行计算的比例。经典的程序并行加速评估公式Amdahl定律:

其中,S是加速比,P是程序可并行比例,N是处理器数目

根据Amdahl定律:一个并行程序可加速程度是有限制的,并非可无限加速,并非处理器越多越好

并行比例vs加速比

50%=>最大2倍

75%=>最大4倍

90%=>最大10倍

95%=>最大20倍

4.MPI并行程序设计

Message Passing Interface,基于消息传递的高性能并行计算编程接口

5.什么是MapReduce概念

MapReduce是面向大规模数据并行处理的:

(1)基于集群的高性能并行计算平台(Cluster Infrastructure),(硬件层)

允许用市场上现成的普通PC或性能较高的刀架或机架式服务器,构成一个包含数千个节点的分布式并行计算集群(2)并行程序开发与运行框架(Software Framework) (逻辑层)

系统自动提供了一个庞大但设计精良的并行计算软件构架,能自动完成计算任务的并行化处理,自动划分计算数据和计算任务,在集群节点上自动分配和执行子任务以及收集计算结果,将数据分布存储、数据通信、容错处理等并行计算中的很多复杂细节交由系统负责处理,大大减少了软件开发人员的负担

(3)并行程序设计模型与方法(Programming Model & Methodology) (用户层)

借助于函数式Lisp语言中的设计思想,提供了一种简便的并行程序设计方法,用Map和Reduce两个函数编程实现基本的并行计算任务,提供了完整的并行编程接口,完成大规模数据处理

6.为什么MapReduce如此重要?

1)高效的大规模数据处理方法

2)第一个不同于冯诺依曼结构的、基于集群而非单机的计算方式的重大突破

3)目前为止最为成功的基于大规模计算资源的并行计算抽象方法

相关文档
最新文档