大规模数据处理编程模型.ppt
《大规模数据处理编程模型.ppt》由会员分享,可在线阅读,更多相关《大规模数据处理编程模型.ppt(101页珍藏版)》请在三一办公上搜索。
1、1,Cloud Computing,Autumn,2011,Chapter 6Programming Model for Massive Data ProcessingXu Jungang,1,2023/11/1,Cloud Computing,GUCAS,2,提纲,1.大规模数据处理2.并行编程3.MapReduce基本原理4.MapReduce的实现,数据的爆炸性增长,Source:IDC,“The Expanding Digital Universe,”Sponsored by EMC,updated on March 08,全球:5年内10倍增长中国:5年内30倍增长,互联网应用飞速发
2、展,搜索引擎Google百度必应SNS网站Facebook人人网Linkedin开心网.,电子商务淘宝京东Amazon微博Twitter新浪微博腾讯微薄,已经产生和正在产生大规模的海量的数据,云计算应用的迅速开展,Google(GAE)Microsoft(Windows Azure)Amazon(EC2,S3)IBM(BlueCloud)Salesforce(CRM)中国移动(BigCloud),预期产生规模更大的海量数据,物联网未来应用无处不在,流通环保农业工业个人生活,预期产生级数级增长的海量数据,大规模数据的特点,V3Volume(量大)Varity(种类多)Velocity(变化快,即
3、数据新增速度快),大规模数据存储和处理要求和方案,存储和管理存储PB级的处理存储多种多样的数据支持分布式处理处理PB级的多种数据低延迟读写速度成本较低的软硬件成本较低的人力成本,分布式文件系统NoSQL数据库,NoSQL数据库并行编程模型,云计算开源软件,2023/11/1,Cloud Computing,GUCAS,9,提纲,1.大规模数据处理2.并行编程3.MapReduce基本原理4.MapReduce的实现,Parallel computing,Parallel computing is a form of computation in which many calculations
4、are carried out simultaneously,operating on the principle that large problems can often be divided into smaller ones,which are then solved concurrently(in parallel).There are several different forms of parallel computing:bit-level,instruction level,data,and task parallelism.,Parallel programming mod
5、el,A parallel programming model is a concept that enables the expression of parallel programs which can be compiled and executed.The value of a programming model is usually judged on its generality:how well a range of different problems can be expressed and how well they execute on a range of differ
6、ent architectures.The implementation of a programming model can take several forms such as libraries invoked from traditional sequential languages,language extensions,or complete new execution models.,并行编程的原因,加快速度即在更短的时间内解决相同的问题或在相同的时间内解决更多更复杂的问题特别是对一些新出现的巨大的挑战问题,不使用并行计算是根本无法解决的,12,并行编程的原因,节省投入并行计算可
7、以以较低的投入完成串行计算才能够完成的任务物理极限的约束光速是不可逾越的速度极限,设备和材料也不可能做得无限小,只有通过并行才能够不断提高速度,13,并行编程的概念,并行编程是指同时使用多种计算资源解决计算问题的过程,是提高计算机系统计算速度和处理能力的一种有效手段。它的基本思想是用多个处理器来协同求解同一问题,即将被求解的问题分解成若干个部分,各部分均由一个独立的处理机来进行计算。并行编程系统既可以是专门设计的、含有多个处理器的超级计算机,也可以是以某种方式互连的若干台独立计算机构成的集群。,14,并行编程的分类,目前最主要的并行编程模型:共享内存线程数据并行消息传递混合模型,共享内存模型,
8、在共享内存编程模型中,任务间共享统一的可以异步读写的内存地址空间。一般仅需指定可以并行执行的循环,而不需考虑计算与数据如何划分,以及如何进行任务间通信,编译器会自动完成上述功能。这个模型的优点是对于程序员来说数据没有身份的区分,不需要特别清楚任务间的数据通信。程序开发也相应的得以简化。典型代表是OpenMP编程模型。,线程模型,在线程模型中,单个处理器可以有多个并行的执行路径。典型代表是Unix操作系统中基于POSIX接口的编程,线程模型的构成如下:1.操作系统调度主程序a.out开始运行,a.out加载所有必要的系统资源和用户资源开始执行。完成一些串行工作,然后创建一些可以被操作系统调度的并
9、行任务(线程)去执行。3.每次线程都有自己的数据,而且共享整个a.out的资源。这样就节省了拷贝程序资源给每个线程的开销。这样线程之间可以并行执行子程序。4.线程之间通过全局内存进行通信。这个需要同步构造来确保多个线程不会同时更新同一块全局内存。5.线程执行完了就自动销毁,但是主程序a.out在应用程序完成之前一直存在,维护必要的共享资源。,数据并行编程模型,数据并行即将相同的操作同时作用于不同的数据,数据并行编程模型提供给编程者一个全局的地址空间,一般这种形式的语言本身就提供并行执行的语义对于编程者来说,只需要简单地指明执行什么样的并行操作和并行操作的对象,就实现了数据并行的编程比如对于数组
10、运算,使得数组B和C的对应元素相加后送给A,则通过语句A=B+C(或其它的表达方式)就能够实现上述功能,使并行机对B、C的对应元素并行相加,并将结果并行赋给A。数据并行的表达是相对简单和简洁的,它不需要编程者关心并行机是如何对该操作进行并行执行的。,18,数据并行编程模型,数据并行编程模型,数据并行模型有以下特性:并行工作主要是操纵数据集。数据集一般都是像数组一样典型的通用的数据结构。任务集都使用相同的数据结构,但是,每个任务都有自己的数据。每个任务的工作都是相同的。,消息传递并行编程模型,消息传递即各个并行执行的部分之间通过传递消息来交换信息、协调步伐、控制执行。消息传递一般是面向分布式内存
11、的,但是它也可适用于共享内存的并行机。消息传递为编程者提供了更灵活的控制手段和表达并行的方法,一些用数据并行方法很难表达的并行算法,都可以用消息传递模型来实现,灵活性和控制手段的多样化,是消息传递并行程序能提供高的执行效率的重要原因。消息传递模型一方面为编程者提供了灵活性,另一方面,它也将各个并行执行部分之间复杂的信息交换和协调、控制的任务交给了编程者,这在一定程度上增加了编程者的负担,这也是消息传递编程模型编程级别低的主要原因。,21,消息传递并行编程模型,消息传递并行编程模型,消息传递模型有以下三个特征:计算时任务集可以用他们自己的内存。多任务可以在相同的物理处理器上,同时可以访问任意数量
12、的处理器。任务之间通过接收和发送消息来进行数据通信。数据传输通常需要每个处理器协调操作来完成。,消息传递与数据并行的对比,24,消息传递与数据并行的对比,数据并行编程模型的编程级别比较高,编程相对简单,但它仅适用于数据并行问题消息传递编程模型的编程级别相对较低,但消息传递编程模型可以有更广泛的应用范围。数据并行的主要特征是以数据为中心,通过对数据的划分和并行处理来解决问题消息传递当然也可以实现上述功能,但是消息传递在问题的表述上更具体,更低级,可以解决的问题相对于数据并行模型来说也更广泛。在一定程度上,可以把数据并行看作是消息传递的一种特殊形式。,消息传递与数据并行的对比,26,混合模型,这个
13、模型中,通常是由两个或多个模型组合在一起实现的。当前通用的混合模型的例子就是:由消息传递模型(MPI)和线程模型(POSIX)或者共享内存模型(OpenMP)组成而成。混合模型中其他比较通用的模型是:将数据并行和消息传递组合起来。正如我们上面在数据并行模型部分提到的那样,在分布式体系结构上实现数据并行模型实际上是用消息传递的方法来为任务间传递数据的,对程序员是透明的。,现有主要编程模型,OpenMPMPIDryad MapReduce,28,OpenMP概述,OpenMP应用编程接口API是在共享内存体系结构上的一个编程模型包含编译制导(Compiler Directive)、运行库例程(Ru
14、ntime Library)和环境变量(Environment Variables)等组件。支持C/C+和Fortan等编程语言已经被大多数计算机硬件和软件厂家所标准化,OpenMP的历史,1994年,第一个ANSI X3H5草案提出,被否决 1997年,OpenMP标准规范代替原先被否决的ANSI X3H5,被人们认可1997年10月公布了与Fortran语言捆绑的第一个标准规范 FORTRAN version 1.0 1998年11月9日公布了支持C和C+的标准规范C/C+version 1.0 2000年11月推出FORTRAN version 2.0 2002年3月推出C/C+vers
15、ion 2.0 2005年5月OpenMP 2.5将原来的Fortran和C/C+标准规范相结合相关的规范在,OpenMP程序结构,基于Fortran语言的OpenMP程序的结构PROGRAM HELLOINTEGER VAR1,VAR2,VAR3!Serial code!Beginning of parallel section.Fork a team of threads.!Specify variable scoping!$OMP PARALLEL PRIVATE(VAR1,VAR2)SHARED(VAR3)!Parallel section executed by all thread
16、s!All threads join master thread and disband!$OMP END PARALLEL!Resume serial codeEND,OpenMP程序结构,基于C/C+语言的OpenMP程序的结构#include main()int var1,var2,var3;/*Serial code*/*Beginning of parallel section.Fork a team of threads*/*Specify variable scoping*/#pragma omp parallel private(var1,var2)shared(var3)/*
17、Parallel section executed by all threads*/*All threads join master thread and disband*/*Resume serial code*/,MPI,MPI是一种消息传递编程模型,并成为这种编程模型的代表和事实上的标准MPI是一种标准或规范的代表,而不特指某一个对它的具体实现MPI是一个库,而不是一门语言MPI库可以被FORTRAN77/C/Fortran90/C+调用。从语法上说它遵守所有对库函数/过程的调用规则,和一般的函数/过程没有什么区别。最终目的是服务于进程间通信这一目标。目前已经有MPI1和MPI2的标准。
18、,33,MPI发展历史,34,典型MPI的实现,典型的MPI实现包括:,开源的MPICH、LAM MPI,不开源的INTEL MPI,MPICH,MPICH是影响最大、用户最多的MPI实现 由美国的Argonne国家实验室开发 MPICH的特点:开放源码;与MPI标准同步发展;支持多程序多数据(MPMD)编程和异构集群系统;支持C/C+、Fortran 77 和Fortran 90的绑定,支持类Unix和Windows NT平台;支持环境非常广泛,包括多核、SMP、集群和大规模并行计算系统。,Intel MPI,由Intel公司推出的符合MPI-2标准的MPI实现 Intel MPI提供了名为
19、Direct Access Programming Library(DAPL)的中间层来支持多架构,兼容多种网络硬件及协议,优化网络互联Intel MPI透明地支持TCP/IP、Myrinet、共享内存,并基于DAPL有效支持多种高性能互联系统Intel MPI在通信协议的选择上无需进行额外设置,可自动选择MPI进程间最快的传输协议。,MPI程序的优点,用户可以控制并行开发支持数据分布通信实现完全控制,MPI程序的缺点,要求程序员显式地处理通信问题,如,消息传递调用的位置,数据移动,数据复制,数据操作,数据的一致性等等.对大多数科学计算程序来说,消息传递模型的真正困难还在于显式的数据分解无法以
20、渐进的方式、通过逐步将串行代码转换成并行代码而开发出来,6个基本函数组成的MPI子集,#include mpi.h/*MPI头函数,提供了MPI函数和数据类型定义*/int main(int argc,char*argv)int rank,size,tag=1;int senddata,recvdata;MPI_Status status;MPI_Init(/*总进程数目*/,6个基本函数组成的MPI子集,if(rank=0)senddata=9999;MPI_Send(,6个基本函数组成的MPI子集,MPI初始化:通过MPI_Init函数进入MPI环境并完成所有的初始化工作。int MPI_
21、Init(int*argc,char*argv)MPI结束:通过MPI_Finalize函数从MPI环境中退出。int MPI_Finalize(void),6个基本函数组成的MPI子集,获取进程的编号:调用MPI_Comm_rank函数获得当前进程在指定通信域中的编号,将自身与其他程序区分。int MPI_Comm_rank(MPI_Comm comm,int*rank)获取指定通信域的进程数:调用MPI_Comm_size函数获取指定通信域的进程个数,确定自身完成任务比例。int MPI_Comm_size(MPI_Comm comm,int*size),6个基本函数组成的MPI子集,消息
22、发送:MPI_Send函数用于发送一个消息到目标进程。int MPI_Send(void*buf,int count,MPI_Datatype dataytpe,int dest,int tag,MPI_Comm comm)消息接受:MPI_Recv函数用于从指定进程接收一个消息int MPI_Recv(void*buf,int count,MPI_Datatype datatyepe,int source,int tag,MPI_Comm comm,MPI_Status*status),MPI消息,一个消息好比一封信消息的内容,即信的内容,在MPI中称为消息缓冲(Message Buffer
23、)消息的接收/发送者,即信的地址,在MPI中称为消息信封(Message Envelop),MPI消息,MPI中,消息缓冲由三元组标识消息信封由三元组标识 三元组的方式使得MPI可以表达更为丰富的信息,功能更强大,Dryad,微软于2010年12月21日发布了分布式并行计算基础平台Dryad测试版,成为谷歌MapReduce分布式数据计算平台的竞争对手。它可以使开发人员能够在Windows或者.Net平台上编写大规模的并行应用程序模型,并使在单机上所编写的程序很轻易的运行在分布式并行计算平台上程序员可以利用数据中心的服务器集群对数据进行并行处理,当程序开发人员在操作数千台机器时,而无需关心分布
24、式并行处理系统方面的细节。,47,Dryad,48,Dryad,Dryad同MapReduce一样,它不仅仅是一种编程模型,同时也是一种高效的任务调度模型。Dryad这种编程模型并不仅适用于云计算,在多核和多处理器以及异构机群上同样有良好的性能。Dryad可以对计算机和它们的CPU进行调度,不同的是Dryad被设计为伸缩于各种规模的集群计算平台,无论是单台多核计 算机还是到由多台计算机组成的集群,甚至拥有数千台计算机的数据中心,可以从任务队列中创建的策略建模来实现分布式并行计算的编程框架。,2023/11/1,Cloud Computing,GUCAS,49,Dryad,2023/11/1,C
25、loud Computing,GUCAS,50,Dryad,2023/11/1,Cloud Computing,GUCAS,51,Dryad优缺点,优点:DryadLINQ具有声明式编程并将操作的对象封装为.NET类方便数据操作 自动序列化和任务图的优化对Join进行了优化,得到了比BigTable+MapReduee更快的Join速率和更易用的数据操作方式 缺点它更适用于批处理任务,而不适用于需要快速响应的任务 这个数据模型更适用于处理流式访问,而不是随机访问 Dryad还是测试阶段尚未大规模普及,但是微软已经在AdCenter的生产系统中使用Dryad,2023/11/1,Cloud Co
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大规模 数据处理 编程 模型

链接地址:https://www.31ppt.com/p-6458122.html