并行计算技术概述2

上传人:ni****g 文档编号:571315744 上传时间:2024-08-10 格式:PPT 页数:110 大小:13.90MB
返回 下载 相关 举报
并行计算技术概述2_第1页
第1页 / 共110页
并行计算技术概述2_第2页
第2页 / 共110页
并行计算技术概述2_第3页
第3页 / 共110页
并行计算技术概述2_第4页
第4页 / 共110页
并行计算技术概述2_第5页
第5页 / 共110页
点击查看更多>>
资源描述

《并行计算技术概述2》由会员分享,可在线阅读,更多相关《并行计算技术概述2(110页珍藏版)》请在金锄头文库上搜索。

1、并行计算并行计算Parallel computing第一讲第一讲 并行计算技术概述并行计算技术概述1. 为什么需要并行计算?为什么需要并行计算?2. 并行计算技术的分类并行计算技术的分类3. 并行计算的主要技术问题并行计算的主要技术问题4. MPI并行程序设计并行程序设计5. 为什么需要大规模数据并行处理?为什么需要大规模数据并行处理?1.1.为什么需要并行计算?为什么需要并行计算?贯穿整个计算机技术发展的核心目标贯穿整个计算机技术发展的核心目标:提高计算性能!提高计算性能!Intel微处理器每秒1千8百亿次浮点运算!近20年性能提高3千多倍巨型机:中国天河一号,2010年底世界TOP500强

2、第1名每秒2千5百多万亿次浮点运算,近20年性能提高3千多倍亿亿千万亿百万亿十万亿万亿千亿百亿十亿亿2011年6月日本“K Computer”以每秒1亿亿次名列第一,几乎是第2-9位的总和,中国天河位列第二亿亿千万亿百万亿十万亿万亿千亿百亿十亿亿2012年11月美国“Titan”以每秒2.7亿亿次名列第一,中国天河位列第八提高计算机性能的主要手段提高计算机性能的主要手段1.提高处理器字长:70-80年代:Intel处理器:71年,4004,4bits;78年,8086,8bits;82年,80286:16bits;85年90s,80386,486,Pentium,P2,P3,P4:32bits

3、05年,PentiumD往后-Corei3,i5,i7:64bits为什么需要并行计算?提高计算机性能的主要手段提高计算机性能的主要手段2.提高集成度摩尔定律:芯片集成度每18个月翻一倍,计算性能提高一倍为什么需要并行计算?为什么需要并行计算?为什么需要并行计算?提高计算机性能的主要手段提高计算机性能的主要手段3.流水线等微体系结构技术实现指令级并行(Instruction-LevelParallelism,ILP)RISC结构5级流水线为什么需要并行计算?为什么需要并行计算?提高计算机性能的主要手段提高计算机性能的主要手段3.流水线等微体系结构技术分支预测,寄存器重命名,超长指令字(VLIW

4、),超标量(Superscalar),乱序执行,CachePentium4(CISC结构)采用了20级复杂流水线为什么需要并行计算?为什么需要并行计算?提高计算机性能的主要手段提高计算机性能的主要手段4.提高处理器频率:1990s-2004:为什么需要并行计算?为什么需要并行计算?所有这些技术极大地提高了微处理器的计算性能,但2004年后处理器的性能不再像人们预期的那样提高单核处理单核处理器性能提器性能提升接近极升接近极限!限!集成度集成度性能性能为什么需要并行计算?为什么需要并行计算?单核处理器性能提升接近极限单核处理器性能提升接近极限1.VLSI集成度不可能无限制提高芯片集成度已进入极小尺

5、度级别,集成度不可能无限制提高1nm(纳米)约头发直径的6万分之一或4个原子长度10-20nm仅有几百个原子的长度为什么需要并行计算?为什么需要并行计算?单核处理器性能提升接近极限单核处理器性能提升接近极限2.处理器的指令级并行度提升接近极限长指令字,流水线,分支预测,寄存器命名,超标量,乱序执行,动态发射,高速缓冲(Cache)高级流水线等各种复杂的微体系结构技术都已得到研究应用,难以进一步挖掘更多的指令级并行性(Instruction-LevelParallism)ILPILP墙墙为什么需要并行计算?为什么需要并行计算?单核处理器性能提升接近极限单核处理器性能提升接近极限3.处理器速度和存

6、储器速度差异越来越大处理器性能每2年翻一倍,而存储器性能每6年翻一倍为了匹配两者间速度差异,处理器需要做越来越大的Cache存储墙存储墙CPUCPU计算速度:计算速度:1ns1ns级别级别主存访问速度:主存访问速度:100ns100ns级别级别为什么需要并行计算?为什么需要并行计算?单核处理器性能提升接近极限单核处理器性能提升接近极限4.功耗和散热大幅增加超过芯片承受能力晶体管密度不断提高,单位面积功耗和散热大幅增加主频提高导致功耗和散热急剧增加功耗P=CV2f,C:时钟跳变时门电路电容,V:电压,f:主频晶体管数越多,电容越大=功耗越大;主频越高=功耗越大功耗墙功耗墙Cite from Ed

7、ward L. Bosworth, The Power Wall, 2010为什么需要并行计算?为什么需要并行计算?单核处理器性能提升接近极限单核处理器性能提升接近极限2005年前,人们预期可以一直提升处理器主频但2004年5月Intel处理器TejasandJayhawk(4GHz)因无法解决散热问题最终放弃,标志着升频技术时代的终结Cite from Edward L. Bosworth, The Power Wall, 20102005年前人们预计的主频提升路线图2007年人们大大降低了主频提升预期2005年后Intel转入多核技术为什么需要并行计算?为什么需要并行计算?单处理器向多核并

8、行计算发展成为必然趋势单处理器向多核并行计算发展成为必然趋势多核/众核并行计算2005年Intel全面转入多核计算技术,采用多核/众核构架,简化单处理器的复杂设计,代之以单个芯片上设计多个简化的处理器核,以多核/众核并行计算提升计算性能双核:PentiumD(05),EE(06),Xeon(06)Core2DuoE系列,T系列(06)Corei3,i5(10)4核:Core2QuadQ系列(07)Corei5,i7(08,09,10)6核:Corei7970/980(10)8核:AMDBulldozer(10)典型的双核处理器结构为什么需要并行计算?为什么需要并行计算?单处理器向多核并行计算发

9、展成为必然趋势单处理器向多核并行计算发展成为必然趋势多核/众核并行计算Intel实验芯片SingleCloudChip,SCC:48核Teraflops,80核Cite from Intel website: http:/ GPUGraphicProcessingUnit,主要用于图形图像并行处理TeslaM2050/2070:448核S20501UGPU处理系统:4个M2050/2070,1792核为什么需要并行计算?为什么需要并行计算?应用领域计算规模和复杂度大幅提高应用领域计算规模和复杂度大幅提高爆炸性增长的Web规模数据量Google从2004年每天处理100TB数据到2008年每天处

10、理20PB2009年eBays数据仓库,一个有2PB用户数据,另一个6.5PB用户数据包含170TB记录且每天增长150GB个记录;Facebook:2.5PB用户数据,每天增加15TB世界最大电子对撞机每年产生15PB(1千5百万GB)数据2015年落成的世界最大观天望远镜主镜头像素为3.2G,每年将产生6PB天文图像数据;欧洲生物信息研究中心(EBI)基因序列数据库容量已达5PB;中国深圳华大基因研究所成为全世界最大测序中心,每天产生300GB基因序列数据(每年100TB)为什么需要并行计算?为什么需要并行计算?应用领域计算规模和复杂度大幅提高应用领域计算规模和复杂度大幅提高超大的计算量/

11、计算复杂度用SGI工作站进行电影渲染时,每帧一般需要12小时一部2小时的电影渲染需要:2小时x3600秒x24帧x(12小时)/24小时=2040年!特殊场景每帧可能需要60个小时(影片“星舰骑兵”中数千只蜘蛛爬行的场面),用横向4096象素分辨率进行渲染时,如果以每帧60个小时的速度,则1秒的放映量(24帧)需要60天的渲染时间,1分钟则需要100年!世界著名的数字工作室Digital Domain公司用了一年半的时间,使用了300多台SGI超级工作站,50多个特技师一天24小时轮流制作泰坦尼克号中的电脑特技为什么需要并行计算?为什么需要并行计算?解决方案解决方案? ?并行计算并行计算!SM

12、PSMPClusterCloudMulticoreManycore为什么需要并行计算?为什么需要并行计算?并行计算技术的发展趋势和影响并行计算技术的发展趋势和影响越来越多的研究和应用领域将需要使用并行计算技术 并行计算技术将渗透到每个计算应用领域,尤其是涉及到大规模数据和复杂计算的应用领域并行计算技术将对传统计算技术产生革命性的影响并行计算技术将影响传统计算技术的各个层面,与传统计算技术相互结合产生很多新的研究热点和课题: 体系结构技术 操作系统、编译技术、数据库等系统软件技术 程序设计技术和方法 软件工程技术 图形图像和多媒体信息处理 人工智能 各种应用软件开发很多传统的串行算法和计算方法都

13、将需要重新研究和设计其并行化算法和计算方法;我系很多研究领域都明确需要基于并行计算技术进行研究为什么需要并行计算?为什么需要并行计算?为什么需要学习并行计算技术?为什么需要学习并行计算技术?软件开发/程序设计人员面临挑战!20-30年里程序设计技术的最大的革命是面向对象技术Therevolutioninmainstreamsoftwaredevelopmentfromstructuredprogrammingtoobject-orientedprogrammingwasthegreatestsuchchangeinthepast20to30years下一个程序设计技术的革命将是并行程序设计 C

14、oncurrencyisthenextmajorrevolutioninhowwewritesoftware今天绝大多数程序员不懂并行设计技术,就像15年前*绝大多数程序员不懂面向对象技术一样 Thevastmajorityofprogrammerstodaydontgrokconcurrency,justasthevastmajorityofprogrammers15yearsagodidntyetgrokobjects* March 2005,Cite from Herb Sutter, The Free Lunch Is Over-A Fundamental Turn Toward Co

15、ncurrency in Software Dr. Dobbs Journal, 30(3)Ch. 1. 并行计算技术简介并行计算技术简介1.1.为什么需要并行计算?为什么需要并行计算?2.2.并行计算技术的分类并行计算技术的分类3.3.并行计算的主要技术问题并行计算的主要技术问题4.4.MPI并行程序设计并行程序设计5.5.为什么需要大规模数据并行处理?为什么需要大规模数据并行处理?2.2.并行计算技术的分类并行计算技术的分类 经过多年的发展,出现了不同类型的并行计算技术和系统,同时也存在不同的分类方法按数据和指令处理结构:弗林按数据和指令处理结构:弗林(Flynn)(Flynn)分类分类按

16、并行类型按并行类型按存储访问构架按存储访问构架按系统类型按系统类型按计算特征按计算特征按并行程序设计模型按并行程序设计模型/ /方法方法并行计算技术的分类并行计算技术的分类按数据和指令处理结构分类:弗林按数据和指令处理结构分类:弗林(Flynn)(Flynn)分类分类 1966年,斯坦福大学教授Flynn提出的经典的计算机结构分类,从最抽象的指令和数据处理结构的角度进行分类SISD:单指令单数据流 传统的单处理器串行处理SIMD:单指令多数据流 向量机,信号处理系统MISD:多指令单数据流 很少使用MIMD:多指令多数据流 最常用,TOP500 基本都属于MIMD类型弗林弗林(Flynn)(F

17、lynn)分类分类SISDMIMDSIMD并行计算技术的分类并行计算技术的分类Cite from Jimmy Lin, What is cloud computing, 2008并行计算技术的分类并行计算技术的分类按并行类型分类按并行类型分类位级并行(Bit-LevelParallelism)指令级并行(ILP:Instruction-LevelParallelism)线程级并行(Thread-LevelParallelism)数据级并行:一个大的数据块划分为小块,分别由不同的处理器/线程处理任务级并行:一个大的计算任务划分为子任务分别由不同的处理器/线程来处理按存储访问结构分类按存储访问结构

18、分类A.共享内存(SharedMemory)所有处理器通过总线共享内存多核处理器,SMP也称为UMA结构(UniformMemoryAccess)B.分布共享存储体系结构各个处理器有本地存储器同时再共享一个全局的存储器C.分布式内存(DistributedMemory)各个处理器使用本地独立的存储器B和C也统称为NUMA结构(Non-UniformMemoryAccess)并行计算技术的分类并行计算技术的分类共享存储器总 线共享存储器MMMABC并行计算技术的分类并行计算技术的分类按系统类型分类按系统类型分类多核/众核并行计算系统MC(Multicore/Manycore)或Chip-leve

19、lmultiprocessing,CMP对称多处理系统SMP(SymmetricMultiprocessing)多个相同类型处理器通过总线连接并共享存储器大规模并行处理MPP(MassiveParallelProcessing)专用内联网连接一组处理器形成的一个计算系统集群(Cluster)网络连接的一组普通商用计算机构成的计算系统网格(Grid)用网络连接远距离分布的一组异构计算机构成的计算系统紧密耦合度松散低可扩展性高低能耗高并行计算技术的分类并行计算技术的分类按系统类型分类按系统类型分类l不同系统的特征和对比从MC到Grid,耦合度越来越低,但可扩展性越来越高,系统规模越来越大,而能耗也

20、越来越高MC处理器核通过NOC(片上网络)集成在一个芯片上,通常使用混合式内存访问机制(本地缓存加全局内存),功耗很低SMP使用独立的处理器和共享内存,以总线结构互联,运行一个操作系统,定制成本高,难以扩充,规模较小(2-8处理器)MPP使用独立的处理器及独立的内存、OS,专用的高速内联网络,难以升级和扩充,规模中等(TOP500中有80多个)Cluster使用商品化的刀片或机架服务器,以网络互联为一个物理上紧密的计算系统,可扩展性强,规模可小可大,是目前高性能并行计算最常用的形式(TOP500中有400多个)Grid则为地理上广泛分布的异构计算资源构成的一个极为松散的计算系统,主要用于并行度

21、很低的大规模科学计算任务并行计算技术的分类并行计算技术的分类按计算特征分类按计算特征分类数据密集型并行计算(Data-IntensiveParallelComputing)数据量极大、但计算相对简单的并行处理如:大规模Web信息搜索计算密集型并行计算(Computation-IntensiveParallelComputing)数据量相对不是很大、但计算较为复杂的并行处理如:3-D建模与渲染,气象预报,科学计算数据密集与计算密集混合型并行计算兼具数据密集型和计算密集型特征的并行计算,如3D电影渲染并行计算技术的分类并行计算技术的分类按并行程序设计模型按并行程序设计模型/方法分类方法分类共享内存

22、变量(SharedMemoryVariables)多线程共享存储器变量方式进行并行程序设计,会引起数据不一致性,导致数据和资源访问冲突,需要引入同步控制机制;Pthread,OpenMP:共享内存式多处理并行编程接口消息传递方式(MessagePassing)对于分布式内存结构,为了分发数据和收集计算结果,需要在各个计算节点间进行数据通信,最常用的是消息传递方式;MPI:消息传递并行编程接口标准MapReduce方式Google公司提出的MapReduce并行程序设计模型,是目前最易于使用的并行程序设计方法,广泛使用于搜索引擎等大规模数据并行处理并行计算技术的分类并行计算技术的分类不同类型并行

23、计算技术和系统的发展历史和现状不同类型并行计算技术和系统的发展历史和现状主要发展历史阶段 1975-1985 主要是向量机技术,如Cray1,Cray2。但基于多线程的并行计算也逐步引入。 1986-1995 大规模并行处理MPP成为主流并行计算技术,消息传递编程接口MPI得到开发应用。目前TOP500中有84个基于MPP。 1995-现在 Cluster和Grid并行计算技术成为主流,但目前Grid的发展已呈下降趋势,目前TOP500中有414个基于Cluster。并行计算技术的分类并行计算技术的分类不同类型并行计算技术和系统的发展历史和现状不同类型并行计算技术和系统的发展历史和现状主要发展

24、历史阶段并行计算技术的分类并行计算技术的分类不同类型并行计算技术和系统的发展历史和现状不同类型并行计算技术和系统的发展历史和现状主要发展趋势SMP作为共享内存式小规模并行计算技术一直活跃60-70年代基于大型机的SMP系统,80年代基于80386 /80486的SMP系统,90年代到目前基于多核的个人电脑、服务器大都基于SMP多核/众核并行计算成为重要发展趋势 由于单核处理器性能发展的瓶颈,同时由于多核/众核计算计算自身具有的体积小、功耗低等诸多技术特点和优势,今后多核/众核并行计算会称为必然趋势并行计算软件技术远远落后于硬件发展速度 并行计算硬件技术水平和规模发展迅速,但并行计算软件技术远远

25、跟不上硬件发展水平和速度,缺少有效的并行计算软件框架、编程模型和方法Ch. 1. 并行计算技术简介并行计算技术简介1.1.为什么需要并行计算?为什么需要并行计算?2.2.并行计算技术的分类并行计算技术的分类3.3.并行计算的主要技术问题并行计算的主要技术问题4.4.MPI并行程序设计并行程序设计5.5.为什么需要大规模数据并行处理?为什么需要大规模数据并行处理?3. 并行计算的主要技术问题并行计算的主要技术问题数据怎么存?怎么算?硬件构架软件构架并行算法3. 并行计算的主要技术问题并行计算的主要技术问题依赖于所采用的并行计算体系结构,不同类型的并行计算系统,在硬件构架、软件构架和并行算法方面会

26、涉及到不同的技术问题,但概括起来,主要有以下技术问题: 多核/多处理器网络互连结构技术 存储访问体系结构 分布式数据与文件管理 并行计算任务分解与算法设计 并行程序设计模型和方法 数据同步访问和通信控制 可靠性设计与容错技术 并行计算软件框架平台 系统性能评价和程序并行度评估并行计算的主要技术问题并行计算的主要技术问题多核多核/多处理器网络互连多处理器网络互连结构结构技术技术主要研究处理器间互联拓扑结构,尤其在包含大量处理器的并行计算系统中,需要具有良好的互联结构,以保证大量处理器能真正有效地协同工作,获得应有的并行计算效率。共享总线连接(SharedBus)交叉开关矩阵(CrossbarSw

27、itch)环形结构(Torus)Mesh网络结构(MeshNetwork)片上网络(NOC,Network-on-chip)并行计算的主要技术问题并行计算的主要技术问题存储存储访问访问体系结构体系结构主要研究不同的存储结构,以及在不同存储结构下的特定技术问题共享存储器体系结构(SharedMemory)共享数据访问与同步控制分布存储体系结构(DistributedMemory)数据通信控制和节点计算同步控制分布共享存储结构(DistributedSharedMemory)Cache的一致性问题数据访问/通信的时间延迟并行计算的主要技术问题并行计算的主要技术问题分布式数据与文件管理并行计算的一个

28、重要问题是,在大规模集群环境下,如何解决大数据块的存储和访问管理;尤其是数据密集型并行计算时,理想的情况是提供分布式数据与文件管理系统,如RedHatGFS(GlobalFileSystem)IBMGPFSSunLustreGoogleGFS(GoogleFileSystem)HadoopHDFS(HadoopDistributedFileSystem)并行计算的主要技术问题并行计算的主要技术问题并行计算任务的分解与算法设计并行计算任务的分解与算法设计 一个大型计算任务如何从数据上或者是计算方法上进行适当的划分,分解为一组子任务以便分配给各个节点进行并行处理,如何搜集各节点计算的局部结果 数据

29、划分 如何将特大的数据进行划分并分配给各节点进行处理。 算法分解与设计 一个大的尤其是计算密集型的计算任务,首先需要寻找并确定其可并行计算的部分,然后进一步寻找好的分解算法:可把一个整体的算法纵向分解为一组并行的子任务,或者对于复杂的计算任务可横向分解为多个并行处理过程。并行计算的主要技术问题并行计算的主要技术问题并行程序设计模型和方法并行程序设计模型和方法 根据不同的硬件构架,不同的并行计算系统可能需要不同的并行程序设计模型、方法、语言和编译技术。 并行程序设计模型和方法 共享内存式并行程序设计:为共享内存结构并行计算系统提供的程序设计方法,需提供数据访问同步控制机制(如互斥信号,锁等),典

30、型的如Pthread,OpenMP 消息传递式并行程序设计:为分布内存结构并行计算系统提供的、以消息传递方式完成节点间数据通信的程序设计方法 MapReduce并行程序设计:为解决前两者在并行程序设计上的缺陷,提供一个综合的编程框架,为程序员提供了一种简便易用的并行程序设计方法并行计算的主要技术问题并行计算的主要技术问题并行程序设计模型和方法并行程序设计模型和方法 并行程序设计语言 语言级扩充:使用宏指令在 普通的程序设计语言(如C语 言)上增加一些并行计算宏 指令,如OpenMP(提供C,C+, Fortran语言扩充,Linux&Windows) 并行计算库函数与编程接口: 使用函数库提供

31、并行计算编程接口,如MPI(消息传递接口),CUDA(NVIDIA GPU) 并行编译与优化技术 编译程序需要考虑编译时的自动化并行性处理,以及为提高计算性能进行并行计算优化处理int main(int argc, char *argv) const int N = 100000; int i, aN; #pragma omp parallel for for (i = 0; i 最大2倍75%=最大4倍90%=最大10倍95%=最大20倍Cite from http:/en.wikipedia.org/wiki/Amdahl%27s_lawCh. 1. 并行计算技术简介并行计算技术简介1.

32、为什么需要并行计算?为什么需要并行计算?2. 并行计算技术的分类并行计算技术的分类3. 并行计算的主要技术问题并行计算的主要技术问题4. MPI并行程序设计并行程序设计5. 为什么需要大规模数据并行处理?为什么需要大规模数据并行处理?4.MPI4.MPI并行程序设计并行程序设计MPI简介简介lMessagePassingInterface,基于消息传递的高性能并行计算编程接口l在处理器间以消息传递方式进行数据通信和同步,以库函数形式为程序员提供了一组易于使用的编程接口。l93年由一组来自大学、国家实验室、高性能计算厂商发起组织和研究,94年公布了最早的版本MPI1.0,经过MPI1.1-1.3

33、,目前版本MPI2.2,MPI3版本正在设计中l特点:提供可靠的、面向消息的通信;在高性能科学计算领域广泛使用,适合于处理计算密集型的科学计算;独立于语言的编程规范,可移植性好MPIMPIMPIMPI并行程序设计并行程序设计并行程序设计并行程序设计开放领域/机构实现MPICH 阿贡国家实验室和密西西比大学最早的完整最早的完整MPI标准实现标准实现.LAMOhioSupercomputercenterMPICH/NTMississippiStateUniversityMPI-FMIllinois(Myrinet)MPI-AMUCBerkeley(Myrinet)MPI-PMRWCP,Japan(

34、Myrinet)MPI-CCLCaliforniaInstituteofTechnologyCRI/EPCCMPICrayResearchandEdinburghParallelComputingCentreMPI-APAustralianNationalUniversity-CAPResearchProgram(AP1000)W32MPIIllinois,ConcurrentSystemsRACE-MPIHughesAircraftCo.MPI-BIPINRIA,France(Myrinet)MPI实现版本实现版本厂商实现HP-MPIHewlettPackard;ConvexSPPMPI-F

35、IBMSP1/SP2Hitachi/MPIHitachiSGI/MPISGIPowerChallengeseriesMPI/DENEC.INTEL/MPIIntel.Paragon(iCClib)T.MPITelmatMultinodeFujitsu/MPIFujitsuAP1000EPCC/MPICray&EPCC,T3D/T3E语言实现C/C+JavaPython.NETMPIMPI并行程序设计并行程序设计MPI主要功能主要功能用常规语言编程方式,所有节点运行同一个程序,但处理不同的数据提供点对点通信(Point-pointcommunication)l提供同步通信功能(阻塞通信)l提供异

36、步通信功能(非阻塞通信)提供节点集合通信(Collectivecommunication)l提供一对多的广播通信l提供多节点计算同步控制l提供对结果的规约(Reduce)计算功能提供用户自定义的复合数据类型传输MPIMPI并行程序设计并行程序设计MPIMPI基本程序结构基本程序结构MPI程序头文件初始化MPI环境并行计算与通信关闭MPI环境#include main(int argc, char *argv) int numtasks, rank; MPI_Init(&argc, &argv); 并行计算程序体 MPI_Finalize(); exit(0);MPIMPI并行程序设计并行程序设

37、计MPI并行程序设计接口并行程序设计接口基本编程接口MPI提供了6个最基本的编程接口,理论上任何并行程序都可以通过这6个基本API实现1.MPI_Init (argc,argv):初始化MPI,开始MPI并行计算程序体2.MPI_Finalize:终止MPI并行计算3.MPI_Comm_Size(comm,size):确定指定范围内处理器/进程数目4.MPI_Comm_Rank(comm,rank):确定一个处理器/进程的标识号5.MPI_Send (buf,count,datatype,dest,tag,comm):发送一个消息6.MPI_Recv(buf,count,datatype,so

38、urce,tag,comm,status) :接受消息size:进程数,rank:指定进程的IDcomm:指定一个通信组(communicator)Dest:目标进程号,source:源进程标识号,tag:消息标签MPIMPI并行程序设计并行程序设计MPI并行程序设计接口并行程序设计接口基本编程接口MPI并行计算初始化与结束任何一个MPI程序都要用MPIInit和MPIFinalize来指定并行计算开始和结束的地方;同时在运行时,这两个函数将完成MPI计算环境的初始化设置以及结束清理工作。处于两者之间的程序即被认为是并行化的,将在每个机器上被执行。#include #include main(

39、int argc, char *argv) int numtasks, rank; MPI_Init(&argc, &argv); printf(“Hello parallel world!n”); MPI_Finalize(); exit(0);Hello parallel world!Hello parallel world!Hello parallel world!Hello parallel world!Hello parallel world!在一个有在一个有5个处理器的系统中,输出为个处理器的系统中,输出为MPIMPI并行程序设计并行程序设计MPI并行程序设计接口并行程序设计接口基

40、本编程接口通信组(Communicator)为了在指定的范围内进行通信,可以将系统中的处理器划分为不同的通信组;一个处理器可以同时参加多个通信组;MPI定义了一个最大的缺省通信组:MPI_COMM_WORLD,指明系统中所有的进程都参与通信。一个通信组中的总进程数可以由MPI_Comm_Size调用来确定。进程标识为了在通信时能准确指定一个特定的进程,需要为每个进程分配一个进程标识,一个通信组中每个进程标识号由系统自动编号(从0开始);进程标识号可以由MPI_Comm_Rank调用来确定。MPIMPI并行程序设计并行程序设计MPI并行程序设计接口并行程序设计接口点对点通信同步通信:阻塞式通信,

41、等待通信操作完成后才返回MPI_Send (buf, count, datatype, dest, tag, comm) :发送一个消息MPI_Recv (buf, count, datatype, source, tag, comm, status) :接受消息同步通信时一定要等到通信操作完成,这会造成处理器空闲,因而可能导致系统效率下降,为此MPI提供异步通信功能异步通信:非阻塞式通信,不等待通信操作完成即返回MPI_ISend (buf, count, datatype, dest, tag, comm, request) :异步发送MPI_IRecv (buf, count, data

42、type, source, tag, comm, status, request) 异步接受消息MPI_Wait (request, status) :等待非阻塞数据传输完成MPI_Test (request, flag, status) :检查是否异步数据传输确实完成MPIMPI并行程序设计并行程序设计MPIMPI编程示例编程示例简单MPI编程示例#include #include main(int argc, char *argv) int num, rk; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, & num); MPI_

43、Comm_rank(MPI_COMM_WORLD, &rk); printf(Hello world from Process %d of %dn,rk,num); MPI_Finalize();Hello world from Process 0 of 5Hello world from Process 1 of 5Hello world from Process 2 of 5Hello world from Process 3 of 5Hello world from Process 4 of 5MPIMPI并行程序设计并行程序设计MPI编程示例编程示例消息传递MPI编程示例1#inclu

44、de#includeintmain(intargc,char*argv)intmyid,numprocs,source;MPI_Statusstatus;charmessage100;MPI_Init(&argc,&argv);MPI_Comm_rank(MPI_COMM_WORLD,&myid);MPI_Comm_size(MPI_COMM_WORLD,&numprocs);if(myid!=0)/*其他进程,向0进程发送HelloWorld信息*/strcpy(message,“HelloWorld!”);MPI_Send(message,strlen(message)+1,MPI_CHA

45、R,0,99,MPI_COMM_WORLD);else/*0进程负责从其他进程接受信息并输出*/for(source=1;source本地SqrtSum#3:data2,6,10,#4:data3,7,11,#0:SqrtSum=各子进程的SqrtSumIamprocess1.Irecvtotal251dataitemsfromprocess0,andSqrtSum=111.11Iamprocess2.Irecvtotal251dataitemsfromprocess0,andSqrtSum=222.22Iamprocess3.Irecvtotal250dataitemsfromprocess

46、0,andSqrtSum=333.33Iamprocess4.Irecvtotal250dataitemsfromprocess0,andSqrtSum=444.44Iamprocess0.Irecvtotal0dataitemsfromprocess0,andSqrtSum=1111.10MPIMPI并行程序设计并行程序设计MPIMPI编程示例编程示例消息传递MPI编程示例2#include#include#include#defineN=1002intmain(intargc,char*argv)intmyid,P,source,C=0;doubledataN,SqrtSum=0.0;MP

47、I_Statusstatus;charmessage100;MPI_Init(&argc,&argv);MPI_Comm_rank(MPI_COMM_WORLD,&myid);MPI_Comm_size(MPI_COMM_WORLD,&numprocs);-numprocs;/*数据分配数据分配时除去除去0号主号主节点点*/ if(myid=0)/*0号主号主节点,主要点,主要负责数据分数据分发和和结果收集果收集*/for(inti=0;iN;+i;)/*数据分数据分发: 0, */MPI_Send(datai,1,MPI_DOUBLE,N%numprocs+1,1,MPI_COMM_WORL

48、D);for(intsource=1;source=numprocs;+source;)/*结果收集果收集*/MPI_Recv(&d,1,MPI_DOUBLE,source,99,MPI_COMM_WORLD,&status);SqrtSum += d;elsefor(i=0;iN;i=i+numprocs;)/*各子各子节点接受数据点接受数据计算开平方,本地累加算开平方,本地累加*/MPI_Recv(&d,1,MPI_DOUBLE,0,1,MPI_COMM_WORLD,&status);SqrtSum+=sqrt(d);MPI_Send(SqrtSum,1,MPI_DOUBLE,0,99,M

49、PI_COMM_WORLD);/*本地累加结果送回主本地累加结果送回主节点节点*/printf(Iamprocess%d.Irecvtotal%dfromprocess0,andSqrtSum=%f.n,myid,C,SqrtSum);MPI_Finalize();MPIMPI并行程序设计并行程序设计MPI编程示例编程示例消息传递MPI编程示例3MonteCarlo方法计算圆周率MonteCarlo是一种随机抽样统计方法,可用于解决难以用数学公式计算结果的复杂问题的近似求解。设r取值为0.5,为了提高计算精度,需要计算尽量大的随机点数,我们考虑在一个并行系统中让每台机器都各自算一个,然后汇总求

50、一个平均值作一个直径为2r的圆及其外切正方形,在其中随机产生n个点,落在圆内的点数记为m。根据概率理论,当随机点数足够大时,m与n的比值可近似看成是圆与正方形面积之比。故有:m/nxr2/(2r)2,4m/nMPIMPI并行程序设计并行程序设计MPI编程示例编程示例消息传递MPI编程示例3MonteCarlo方法计算圆周率#include“mpi.h”#include #include main(int argc,char *argv) int myid, numprocs; int namelen,source; long count=1000000; MPI_Status status;

51、MPI_Init(&argc,&argv); MPI_Comm_rank(MPI_COMM_WORLD,&myid); MPI_Comm_size(MPI_COMM_WORLD,&numprocs); srand(int)time(0); /* 设置随机种子*/ double y, x, pi=0.0, n=0.0; long m=0,m1=0,i=0,p=0; for(i=0;icount;i+) /* 随机产生一个点(x, y),判断并计算落在圆内的次数*/ x=(double)rand()/(double)RAND_MAX; y=(double)rand()/(double)RAND_M

52、AX; if(x-0.5)*(x-0.5)+(y-0.5)*(y-0.5)0.25) +m; MPIMPI并行程序设计并行程序设计MPIMPI编程示例编程示例消息传递MPI编程示例3MonteCarlo方法计算圆周率 pi=4.0*m/n; printf(“Process %d of % pi= %fn”, myid, numprocs, pi); if(myid!=0) /* 从节点将本地计算的圆内计数值发送到主节点*/ MPI_Send(&m,1,MPI_DOUBLE,0,1,MPI_COMM_WORLD); else /* 主节点接受各从节点的圆内计数值并累加*/ p=m; for(so

53、urce=1;sourcenumprocs;source+) MPI_Recv(&m1,1,MPI_DOUBLE,source,1,MPI_COMM_WORLD,&status); p=p+m1; printf(“pi= %fn”,4.0*p/(n*numprocs); /* 各节点输出结果*/ MPI_Finalize();Process0of3pi=3.14135Process1of3pi=3.14312Process2of3pi=3.14203pi=3.14216汇总平均值MPIMPI并行程序设计并行程序设计节点集合通信接口节点集合通信接口 提供一个进程与多个进程间同时通信的功能Buff

54、erBufferTransmissionSendBufferBufferReceiveMPIMPI并行程序设计并行程序设计节点集合通信接口节点集合通信接口三种类型的集合通信功能同步(Barrier)MPI_Barrier:设置同步障使所有进程的执行同时完成数据移动(Datamovement)MPI_BCAST:一对多的广播式发送MPI_GATHER:多个进程的消息以某种次序收集到一个进程MPI_SCATTER:将一个信息划分为等长的段依次发送给其它进程数据规约(Reduction)MPI_Reduce:将一组进程的数据按照指定的操作方式规约到一起并传送给一个进程MPIMPI并行程序设计并行程序

55、设计节点集合通信接口节点集合通信接口数据规约操作将一组进程的数据按照指定的操作方式规约到一起并传送给一个进程MPI_Reduce(sendbuf, recvbuf, count, datatype, op, root, comm)其中规约操作op可设为下表定义的操作之一:MPI_MAX求最大值MPI_MIN求最小值MPI_SUM 求和MPI_PROD 求积MPI_LAND逻辑与MPI_BAND按位与MPI_LOR 逻辑或MPI_BOR按位或MPI_LXOR逻辑异或MPI_BXOR按位异或MPI_MAXLOC最大值和位置MPI_MINLOC最小值和位置MPIMPI并行程序设计并行程序设计节点集合

56、通信接口节点集合通信接口规约操作编程示例-计算积分根据微积分原理,任一函数f(x)在区间a,b上的积分是由各个x处的y值为高构成的N个小矩形(当N趋向无穷大时的)面积之和构成。因此,选取足够大的N可近似计算积分。设y=x2,求其在0,10区间的积分。先把0,10分为N个小区间,则对每个x取值对应小矩形面积为:y*10/N。求和所有矩形面积,当N足够大时即为近似积分值。我们用n个节点来分工计算N个区间的面积。如图所示,根据总节点数目,每个节点将求和一个颜色的小矩形块。010MPIMPI并行程序设计并行程序设计MPIMPI编程示例编程示例规约操作编程示例计算积分#define N 10000000

57、0#defined a 0#defined b 10#include #include #include #include “mpi.h”int main(int argc, char* argv) int myid,numprocs; int i; double local=0.0, dx=(b-a)/N; /* 小矩形宽度 */ double inte, x; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &myid); MPI_Comm_size(MPI_COMM_WORLD,&numprocs);MPIMPI并行程序设计并行

58、程序设计MPIMPI编程示例编程示例规约操作编程示例计算积分for(i=myid;i40%!YearZB(1000EB)2006200720082009201020112012201320142015201620172018201920200510152025303540.16.28.480.81.01.88.0350.8ZB:astackofDVDsreachingfromtheearthtothemoonandback35ZB:astackofDVDsreachinghalfwaytoMars海量数据并行处理技术简介海量数据并行处理技术简介为什么需要海量数据并行处理技术?为什么需要海量数据

59、并行处理技术?数据处理能力大幅落后于数据增长速度传统关系数据库已经无法应对海量数据的存储和处理传统关系数据库构架难以扩展以提供巨大的数据存储能力和并行处理能力;现实世界80%的海量数据为非结构化数据,关系数据库难以有效处理例如,基于分布式集群的数据库OracleRAC(OracleRealApplicationClusters)目前最多支持16个节点,存储能力和处理能力有限,难以扩展。海量数据并行处理技术简介海量数据并行处理技术简介为什么需要海量数据并行处理技术?为什么需要海量数据并行处理技术?数据处理能力大幅落后于数据增长速度数据存储能力将大幅落后于数据增长速度 海量数据并行处理技术简介海量

60、数据并行处理技术简介为什么需要海量数据并行处理技术?为什么需要海量数据并行处理技术?数据处理能力大幅落后于数据增长速度数据存储访问能力大幅落后于数据增长速度磁盘容量增长远远快过存储访问带宽和延迟:80年代中期数十MB到今天1-2TB,增长10万倍,而延迟仅提高2倍,带宽仅提高50倍! 100TB数据顺序读一遍需要多少时间? 设硬盘读取访问速率128MB/秒 1TB/128MB 约2.17小时 100TB/128MB = 217小时 = 9天! 即使用百万元高速磁盘阵列(800MB/s),仍需1.5天!Numbers Everyone Should Know*L1cachereference0.

61、5nsBranchmispredict5nsL2cachereference7nsMutexlock/unlock25nsMainmemoryreference100nsSend2Kbytesover1Gbpsnetwork(100MB/s)20,000ns(20s)Read1MBsequentiallyfrommemory(4GB/s)250,000ns(0.25ms)Roundtripwithinsamedatacenter(2GB/s)500,000ns(0.5ms)Diskseek10,000,000ns(10ms)Read1MBsequentiallyfromdisk(100MB/s

62、)10,000,000ns(10ms)1MBdatavia100Mbnetwork80,000,000ns(80ms)1MBdatavia1000Mbnetwork8,000,000ns(8ms)SendpacketCANetherlandsCA150,000,000ns(0.15s)* According to Jeff Dean (LADIS 2009 keynote)* According to Jeff Dean (LADIS 2009 keynote)海量数据并行处理技术简介海量数据并行处理技术简介为什么需要海量数据并行处理技术?为什么需要海量数据并行处理技术?海量数据将引领新一代技

63、术发展图灵奖获得者JimGray:数据密集型科学发现(Data-IntensiveScientificDiscovery)将成为科学技术发展的第四范式世界著名存储技术公司EMC提出了“DataScience”的概念,“DataScienceteamswillbecomethedrivingforceforsuccesswithbigdataanalytics”IDC报告:Bigdatatechnologiesdescribeanewgenerationoftechnologiesandarchitectures,designedtoeconomicallyextractvaluefromver

64、ylargevolumesofawidevarietyofdata,byenablinghigh-velocitycapture,discovery,and/oranalysis.海量数据并行处理技术简介海量数据并行处理技术简介为什么需要海量数据并行处理技术?为什么需要海量数据并行处理技术?海量数据将带来巨大的技术和商业机遇海量数据分析挖掘和利用将为企业带来巨大的商业价值原始信息行业数据知识报表制图电子文档信息检索数据仓库海量分析知识挖掘信息化技术海量数据分析海量数据并行处理技术简介海量数据并行处理技术简介为什么需要海量数据并行处理技术?为什么需要海量数据并行处理技术?海量数据将带来巨大的技术

65、和商业机遇单位数据量的处理成本大幅下降,但由于数据量巨大,大数据处理需要巨大的投入,未来将创造一个巨大的IT市场,达到4-5万亿美元5. 5. 海量数据并行处理技术简介海量数据并行处理技术简介为什么需要海量数据并行处理技术?为什么需要海量数据并行处理技术?海量数据处理对未来技术和人才的需求IDC研究报告DataUniverseStudy“Overthenextdecade,thenumberofserversworldwidewillgrowbyafactorof10theamountofinformationmanagedbyenterprisedatacenterswillgrowbyaf

66、actorof50andthenumberoffilesthedatacenterwillhavetodealwithwillgrowbyafactorof75,atleast.Meanwhile,thenumberofITprofessionalsintheworldwillgrowbylessthanafactorof1.5.”“Asaresult,theskills,experience,andresourcestomanageallthesebitsofdatawillbecomescarcerandmorespecialized,requiringanew,flexible,ands

67、calableITinfrastructure,extendingbeyondtheenterprise.Todaywecallitcloudcomputing.”IDC Report“Extracting Value from Chaos”, June 2011海量数据并行处理技术简介海量数据并行处理技术简介为什么需要海量数据并行处理技术?为什么需要海量数据并行处理技术?海量数据隐含着更准确的事实信息检索、自然语言理解和机器学习的三个要素:数据,特征,与算法2001,BankoandBrill发表了一篇自然语言领域的经典研究论文,探讨训练数据集大小对分类精度的影响,发现数据越大,精度越高;更

68、有趣的发现是,他们发现当数据不断增长时,不同算法的分类精度趋向于相同,使得小数据集时不同算法在精度上的差别基本消失!结论引起争论:算法不再要紧,数据更重要!不再需要研究复杂算法,找更多数据就行了!海量数据并行处理技术简介海量数据并行处理技术简介为什么需要海量数据并行处理技术?为什么需要海量数据并行处理技术?海量数据隐含着更准确的事实2001年,一个基于事实的简短问答研究,如提问:WhoshotAbrahamLincoln?在很大的数据集时,只要使用简单的模式匹配方法,找到在“shotAbrahamLincoln”前面的部分即可快速得到准确答案:JohnWilkesBooth2007,Brant

69、setal.描述了一个基于2万亿个单词训练数据集的语言模型,比较了当时最先进的Kneser-Neysmoothing算法与他们称之为“stupidbackoff“(愚蠢退避)的简单算法,最后发现,后者在小数据集时效果不佳,但在大数据集时,该算法最终居然产生了更好的语言模型!结论:大数据集上的简单算法能比小数据集上的复杂算法产生更好的结果!海量数据并行处理技术简介海量数据并行处理技术简介为什么需要海量数据并行处理技术?为什么需要海量数据并行处理技术?海量数据隐含着更准确的事实IBM智力竞赛机器人Watson收集了2亿页知识文本数据,并基于HadoopMapReduce并行处理集群进行数据分析,可

70、在1秒内完成对大量非结构化信息的检索海量数据并行处理技术简介海量数据并行处理技术简介为什么需要为什么需要MapReduce?并行计算技术和并行程序设计的复杂性依赖于不同类型的计算问题、数据特征、计算要求、和系统构架,并行计算技术较为复杂,程序设计需要考虑数据划分,计算任务和算法划分,数据访问和通信同步控制,软件开发难度大,难以找到统一和易于使用的计算框架和编程模型与工具海量数据处理需要有效的并行处理技术海量数据处理时,依靠MPI等并行处理技术难以凑效MapReduce是目前面向海量数据处理最为成功的技术MapReduce是目前业界和学界公认的最为有效和最易于使用的海量数据并行处理技术,目前尚无

71、其它更有效的技术Google,Yahoo,IBM,Amazon,百度等国内外公司普遍使用Google:超过7千个程序基于MapReduce开发!海量数据并行处理技术简介海量数据并行处理技术简介MapReduce简介简介问题与需求:如何对巨量的Web文档建立索引、根据网页链接计算网页排名,从上百万文档中训练垃圾邮件过滤器,运行气象模拟,数十亿字符串的排序?解决方案:如果你想学习如果编写程序完成这些巨量数据的处理问题,MapReduce将为你提供一个强大的分布式计算环境和构架,让你仅需关注你的应用问题本身,编写很少的程序代码即可完成看似难以完成的任务!什么是MapReduce?MapReduce是

72、Google公司发明的一种面向大规模海量数据处理的高性能并行计算平台和软件编程框架,是目前最为成功和最易于使用的大规模海量数据并行处理技术,广泛应用于搜索引擎(文档倒排索引,网页链接图分析与页面排序等)、Web日志分析、文档分析处理、机器学习、机器翻译等各种大规模数据并行计算应用领域海量数据并行处理技术简介海量数据并行处理技术简介MapReduce简介简介什么是MapReduce?MapReduce是面向大规模数据并行处理的:基于集群的高性能并行计算平台(ClusterInfrastructure)允许用市场上现成的普通PC或性能较高的刀架或机架式服务器,构成一个包含数千个节点的分布式并行计算

73、集群并行程序开发与运行框架(SoftwareFramework)提供了一个庞大但设计精良的并行计算软件构架,能自动完成计算任务的并行化处理,自动划分计算数据和计算任务,在集群节点上自动分配和执行子任务以及收集计算结果,将数据分布存储、数据通信、容错处理等并行计算中的很多复杂细节交由系统负责处理,大大减少了软件开发人员的负担并行程序设计模型与方法(ProgrammingModel&Methodology)借助于函数式语言中的设计思想,提供了一种简便的并行程序设计方法,用Map和Reduce两个函数编程实现基本的并行计算任务,提供了完整的并行编程接口,完成大规模数据处理海量数据并行处理技术简介海量

74、数据并行处理技术简介MapReduce简介简介Google MapReduce2004年,Google在OSDI国际会议上发表了一篇论文:“MapReduce:SimplifiedDataProcessingonLargeClusters”,公布了MapReduce的基本原理和主要设计思想。Google公司用MapReduce重新改写了其整个搜索引擎中的Web文档索引处理自MapReduce发明后,Google大量用于各种海量数据处理,目前Google内部有7千以上的程序基于MapReduce实现Cite from Google海量数据并行处理技术简介海量数据并行处理技术简介MapReduce

75、简介简介Google MapReduce巨大的Web搜索引擎和海量数据并行处理硬件平台Google目前在全球的数十个数据中心使用了百万台以上的服务器构成其强大的Web搜索和海量数据并行计算平台,支撑其搜索引擎、Gmail、GoogleMap、GoogleEarth、以及其云计算平台AppEngine的大型应用服务需求。强大的数据处理服务能力Google可提供超过80亿网页和10亿张图片的检索索引,每天处理2亿次以上检索请求,平均每个检索耗时0.5秒;每个搜索请求背后有上千个服务器同时进行检索计算和服务海量数据并行处理技术简介海量数据并行处理技术简介MapReduce简介简介开源的HadoopM

76、apReduce在Google发表了文章后,DougCutting,2004年,开源项目Lucene(搜索索引程序库)和Nutch(搜索引擎)的创始人,发现MapReduce正是其所需要的解决大规模分布数据处理的重要技术,因而模仿GoogleMapReduce,基于Java设计出了称为Hadoop的开源MapReduce,该项目成为Apache下最重要项目Hadoop目前最新版本是0.21/August23,2010Yahoo是Hadoop联盟中最大的支持者,目前大量使用了Hadoop集群Yahoo! Hadoop集群(引自Yahoo)Doug Cutting in “Hadoop in Ch

77、ina 2011”in Beijing海量数据并行处理技术简介海量数据并行处理技术简介为什么为什么MapReduce很重要?很重要?WhyisMapReduceimportant?Inpracticalterms,itprovidesaveryeffectivetoolfortacklinglarge-dataproblems.Butbeyondthat,MapReduceisimportantinhowithaschangedthewayweorganizecomputationsatamassivescale.MapReducerepresentsthefirstwidely-adopte

78、dstepawayfromthevonNeumannmodel.MapReducecanbeviewedasthefirstbreakthroughinthequestfornewabstractionsthatallowustoorganizecomputations,notoverindividualmachines,butoverentireclustersMapReduceisthemostsuccessfulabstractionoverlarge-scalecomputationalresourceswehaveseentodate.Cite from Jimmy Lin, Uni

79、versity of Maryland, Data-Intensive Text processing with MapReduce海量数据并行处理技术简介海量数据并行处理技术简介我们的工作我们的工作参加Google技术培训2009年12月Google在清华大学举办的MapReduce技术培训班海量数据并行处理技术简介海量数据并行处理技术简介我们的工作我们的工作Google资助课程建设 在Google公司中国大学合作部“精品课程建设计划”资助下进行课程建设和教材编写,编写了计700多页的课件,并准备了4个课程实验;是目前江苏省唯一开设该课程的院系和教师海量数据并行处理技术简介海量数据并行处理技

80、术简介我们的工作我们的工作编写书籍2011年7月合著编写实战Hadoop,有关Hadoop技术第一本具有原著性质的书籍,456页,9月电子工业出版出版发行。海量数据并行处理技术简介海量数据并行处理技术简介我们的工作我们的工作编写书籍5.1 简介简介 114 5.2 复合键值对的使用复合键值对的使用 115 5.2.1 把小的键值对合并成大的键值对把小的键值对合并成大的键值对 115 5.2.2 巧用复合键让系统完成排序巧用复合键让系统完成排序 117 5.3 用户定制数据类型用户定制数据类型 123 5.3.1 hadoop 内置的数据类型内置的数据类型 123 5.3.2 用户自定义数据类型

81、的实现用户自定义数据类型的实现 124 5.4 用户定制输入用户定制输入/输出格式输出格式 126 5.4.1 hadoop 内置的数据输入格式和内置的数据输入格式和recordreader 126 5.4.2 用户定制数据输入格式与用户定制数据输入格式与recordreader 127 5.4.3 hadoop 内置的数据输出格式与内置的数据输出格式与recordwriter 133 5.4.4 用户定制数据输出格式与用户定制数据输出格式与recordwriter 134 5.4.5 通过定制数据输出格式实现多集合文件输出通过定制数据输出格式实现多集合文件输出 134 5.5 用户定制用户定

82、制partitioner 和和combiner 137 5.5.1 用户定制用户定制partitioner 137 5.5.2 用户定制用户定制combiner 139 5.6 组合式组合式mapreduce 计算作业计算作业 141 5.6.1 迭代迭代mapreduce 计算任务计算任务 141 5.6.2 顺序组合式顺序组合式mapreduce 作业的执行作业的执行 142 5.6.3 具有复杂依赖关系的组合式具有复杂依赖关系的组合式mapreduce 作业的执行作业的执行 144 5.6.4 mapreduce 前处理和后处理步骤的链式执行前处理和后处理步骤的链式执行 145 5.7

83、多数据源的连接多数据源的连接 148 5.7.1 基本问题数据示例基本问题数据示例 149 5.7.2 用用datajoin 类实现类实现reduce 端连接端连接 150 5.7.3 用全局文件复制方法实现用全局文件复制方法实现map 端连接端连接 158 5.7.4 带带map 端过滤的端过滤的reduce 端连接端连接 162 5.7.5 多数据源连接解决方法的限制多数据源连接解决方法的限制 162 5.8 全局参数全局参数/数据文件的传递与使用数据文件的传递与使用 163 5.8.1 全局作业参数的传递全局作业参数的传递 163 5.8.2 查询全局查询全局mapreduce 作业属性

84、作业属性 166 5.8.3 全局数据文件的传递全局数据文件的传递 167 5.9 关系数据库的连接与访问关系数据库的连接与访问 169 5.9.1 从数据库中输入数据从数据库中输入数据 169 5.9.2 向数据库中输出计算结果向数据库中输出计算结果 170 第第1 章章 神奇的大象神奇的大象hadoop 第第2 章章 HDFS不怕故障的海量存储不怕故障的海量存储 第第3 章章 分久必合分久必合MapReduce 第第4 章章 一张无限大的表一张无限大的表HBase 第第5 章章 更上一层楼更上一层楼MapReduce 进阶进阶 第第6 章章 Hive飞进数据仓库的小蜜蜂飞进数据仓库的小蜜蜂

85、 第第7 章章 Pig一头什么都能吃的猪一头什么都能吃的猪 第第8 章章 Facebook 的女神的女神cassandra 第第9 章章 Chukwa收集数据的大乌龟收集数据的大乌龟 第第10 章章 一统天下一统天下Zookeeper 第第11 章章 综合实战综合实战1打造一个搜索引擎打造一个搜索引擎 第第12 章章 综合实战综合实战2生物信息学应用生物信息学应用 第第13 章章 综合实战综合实战3移动通信信令监测与查询移动通信信令监测与查询 第第14 章章 高枕无忧高枕无忧Hadoop 容错容错海量数据并行处理技术简介海量数据并行处理技术简介我们的工作我们的工作购建高性能MapReduce并

86、行计算集群 2011年斥资100万建成南京大学第一台专用于科研的高性能MapReduce并行计算集群:41台DELL高性能机架式服务器构成其中40台服务器每台包含:2路4核IntelXeon5620,2.4GHz24GB内存4TB硬盘整个集群总计:326个处理器核1000GB内存162TB硬盘存储量千兆以太网交换机,背板带宽184Gbps可扩充更多节点可扩充更多节点今后计划扩充到今后计划扩充到:100个节点个节点800个处理器核个处理器核 2.5TB内存内存400TB硬盘硬盘海量数据并行处理技术简介海量数据并行处理技术简介我们的工作我们的工作开展研究工作大数据存储管理模型与技术大数据索引和查询技术Hadoop系统改进与优化研究大数据分析挖掘基础并行算法特定于应用的大数据处理并行算法大数据并行处理应用研究与开发Thanks!

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号