基于云平台的MPI研究与应用
2015-06-08商娟叶
商娟叶
(西安外事学院 现代教育技术中心,陕西 西安 710077)
随着Internet技术的飞速发展,网络信息资源呈现出爆炸性的增长。传统的并行技术已无法满足日益增长的信息化数据处理需求,随之产生一种新型的并行计算技术——云计算(Cloud Computing)。在云计算的基础设施层,将MPI并行算法与云计算的结合起来[1],充分利用云平台的可共享性、高扩展性、高容错性的特点[2],来有效地解决海量的数据处理中遇到的计算问题。
1 云计算
1.1 云计算的概念
云计算是通过Internet将超大规模的计算和存储资源整合起来,形成一个虚拟的、动态的、可伸缩的计算资源池,并以服务的形式将相应的应用程序按需提供给用户。用户可以通过网络方便、快捷地获取强大的计算能力、存储能力及基础设施[1]。
1.2 云计算的优势
使用云计算降低了终端设备要求,同时还提高了数据处理能力。总的来说,云计算有以下几个方面的优势[2]:
1)使用方便、快捷。用户在终端只需要一个简单的输入或输出设备,就可以通过互联网随时随地享受各种能力超强的“云”服务。
2)数据存储安全、可靠。云计算提供了安全、可靠、可扩展的数据存储中心,使用了数据多副本容错、计算节点同构等措施保障云服务的高可靠性、安全性。
3)强大的运营能力。很多公司的“云”拥有几十万台服务器,甚至上百万服务器,比如 Google、亚马逊、IBM、微软和Yahoo等。普通用户可以利用云计算来完成各种业务。
4)按需服务。云计算把计算、服务和应用作为一种公共设施提供给用户,用户使用计算机资源就像按需使用水、电、煤气一样方便。
5)极其廉价。“云”是一个动态的、虚拟的、庞大的资源池。由于云资源可自动化管理及利用率大幅提升,使成本大幅降低。用户可按需购买,计费方式就和自来水、电和煤气类似。
2 MPI简介
2.1 MPI的概念
MPI(Message Passing Interface)是通过消息传递的方式在并行运行的程序之间进行相互通信一种接口模式。在消息传递模型MPI中,将程序分成若干个进程,不同的或者相同的这些进程单独运行在每个节点[3]。节点与节点之间可通过消息传递方式进行相互通信,从而利用并行处理方式来缩短程序处理的时间。MPI是消息传递并行程序设计的标准,具有运算效率高、移植性能好,扩展性能强等多种优点[4]。
2.2 MPI函数与消息传递过程
MPI库中共有上百个函数,Fortran、C及C++均可直接调用这些函数。MPI中只要掌握6个常用函数,就能完成几乎所有的通信功能。
在所有MPI程序中首先进行程序参数说明,并由MPI_Init()程序完成所有的初始化工作。进入系统后,MPI通过函数MPI_Comm_rank来获取当前进程的编号,MPI_Size获取当前进程的大小,不同的进程通过进程编号与其它进程进行区分。各进程根据需要调用相应的函数、应用程序,执行各自的任务,通过MPI_Send和MPI_Recv来实现进程间的并行与通信。最后用MPI_Finalize()来结束进程[5]。消息传递过程的程序设计流程图1所示。
图1 消息传递过程的程序设计流程图Fig.1 The programming flow chart in the message transfer process
2.3 并行集群MPI
集群系统是利用高速网络将一组高性能的计算节点上的计算机,统一调度,协调处理,来实现高效、并行处理的系统[6]。这些计算节点可以是普通计算机,主要由建立在操作系统之上的并行编程环境MPI完成系统的资源管理及各节点之间相互通信。可利用廉价的计算机集群系统实现高速、并行计算,优点在于集群系统易于实现、可靠性高、扩展性好,且节约了系统资源。
3 MPI云计算架构体系
3.1 MapReduce模式
Google提出一种云计算的分布式运算MapReduce模式。MapReduce模式是把要执行的任务自动分割后,通过Map()将数据映射成不同的区块,分配给计算机集群处理,实现分布式并行运算,再通过Reduce()将结果汇整,最后输出用户需要的结果[7]。MapReduce的处理流程如图2所示。
MapReduce模式的软件实现过程是先通过Map映射函数,把数据映射成键值对(key/value),使用Combiner函数进行合并,形成一系列中间结果的键值对(key/value),然后经过Partitioner函数分区和Sort函数排序,最后将键值对(key/value)传给Reduce函数,把具有相同中间形式key的value合并在一起,得出汇整后的结果。其过程举例如图3所示。MapReduce模式常用于解决大规模数据处理的问题,其程序能在计算机集群上实现并行化,故MapReduce模式应用广泛[7]。
图2 MapReduce的处理流程图Fig.2 The process flow chart of MapReduce
图3 MapReduce软件实现示意图Fig.3 The schematic diagram of MapReduce software implementation
3.2 Hadoop框架
Hadoop是一个实现了MapReduce模式的并行编程框架。程序员可借助Hadoop框架编写程序,用于实现MapReduce算法。将应用程序分割成若干很小的工作单元,每个单元可在任何集群节点上执行或重复执行,以实现对海量数据的处理。Hadoop框架提供了一个分布式文件系统(HDFS)和分布式数据库(HBase),用来存储各个计算节点上的数据。Hadoop框架具有数据读写吞吐率高、容错性高,还能自动处理失败节点的特点。Hadoop框架如图4所示。
图4 Hadoop框架Fig.4 The Hadoop framework
3.3 MPI的云计算模型
在云计算的MPI执行过程中,用户将要处理的问题提交给云平台的Hadoop框架,MapReduce模式通常把输入的数据集切分为若干独立的数据块,Map映射把指令分发到多个Slave上去,以完全并行的方式处理程序。有一台Master,通过JobTracker与计算机集群中的Slave机器定时通信,主要启动、跟踪及调度各个Slave的任务执行。还有多台Slave,根据实际应用需求,结合本地数据,通过TaskTracker来执行Map任务与Reduce任务。TaskTracker监控当前机器的任务运行情况,并将监控信息发送给JobTracker。当出现故障时,JobTracker会根据监控信息,重新执行Map,Reduce,若未完成,将任务重新分配在某个Slave上执行。Reduce规约把Slave计算出来的结果进行合并、汇整,最后将结果返回给用户[8]。其执行过程如图5所示。
图5 MPI云计算执行过程Fig.5 MPI implementation process on cloud computing
3.4 算法并行化
并行计算是利用多个处理机协同解决同一个算法问题,也就是将被求解的计算问题分解成若干个模块,每一个模块均由一个独立的处理机同时来进行处理。在消息传递处理中,将MPI并行程序、集群系统、Hadoop框架及云计算核心技术整合在一起,充分利用MapReduce模式来实现算法的并行计算和存储,达到海量数据高吞吐率的处理能力。
4 测试结果与分析
在Hadoop框架性能基准测试实验中,利用nnbench对3组数据使用6个Map函数进行测试。实验中主要在数据优化前后,针对3组数据进行读写操作,分析CPU负载、执行时间及内存使用情况[9]。3组测试数据如表1所示。
表1 数据优化前Tab.1 The data before optimization
3组数据分别代表3种情况。在第一组中,处理的文件数量相对较少,但每个文件较大。在第二组,处理的文件数量比较大,但文件的大小小于第一组。在第三组中,处理的文件数量特别大,但每个文件是非常小的。数据优化后处理情况如表2所示。
表2 数据优化后Tab.2 The data after optimization
从上面的结果可以看出,数据优化后,第一组性能测试结果明显较好。减少了节点名占用的内存容量,虽对CPU的性能有一定影响,但它仍在可接受的范围内。MPI消息传递方式在并行集群系统,分布式云计算框架中,提高了节点处理器的使用率,减少了并行处理的时间,一定程度上提高了计算的性能,可实现高吞吐率,大规模的数据操作能力。
5 结 论
文中提出云计算在MPI领域的应用方法,包括MapReduce模式、Hadoop架构及MPI云计算模型,为实现集群系统及海量数据的并行运算处理提供新思路。云计算在数据挖掘、大规模数据处理等领域有着广泛的应用价值和研究前景。要更好地发挥云计算在科研、办公和生活等方面的应用,我们还需要做深入的云平台算法的开发与研究。
[1]陆嘉恒,文继荣,毛新生,等.分布式系统及云计算概论[M].北京:清华大学出版社,2011.
[2]陈全,邓倩妮.云计算及其关键技术 [J].计算机应用,2009,9(29):2562-2567.CHEN Quan,DENG Qian-ni.Cloud computing and its key techniques[J].Journalof Computer Applications,2009,9(29):2562-2567.
[3]邓宾.基于MPI高性能计算的方法研究 [J].自动化与仪器仪表,2014,173(3):29-30.DENG Bin.Study on the computation method of high performance based on MPI[J].Automation and Instrumentation,2014,173(3):29-30.
[4]何艳辉,朱珍民.基于消息传递并行计算环境[J].湘潭大学社会科学学报,2003,27(5):233-235.HE Yan-hui,ZHU Zhen-min.Parallel computing environment based on message passing[J].Social Sciences Journal of Xiangtan University,2003,27(5):233-235.
[5]丁文剑.云计算中消息传递相关问题探讨[J].无线互联科技,2012(1):67-68.DING Wen-jian.Discussion on the related problems of the message passing in cloud computing[J].Wireless Internet Technology,2012(1):67-68.
[6]卢云娥,黄宗宇,李超阳,等.基于微机集群系统的 MPI并行计算[J].电子设计工程,2011,19(5):78-81.LU Yun-e,HUANG Zong-yu,LI Chao-yang,et al.The MPI parallel computing based on the microcomputer cluster[J].Electronic Design Engineering,2011,19(5):78-81.
[7]郭本俊,王鹏,陈高云,等.基于MPI的云计算模型[J].计算机工程,2009,35(24):84-86.GUO Ben-jun,WANG Peng,CHEN Gao-yun,et al.Cloud computing model based on MPI[J].Computer Engineering,2009,35(24):84-86.
[8]都志辉.高性能计算之并行编程技术——MPI并行程序设计[M].北京:清华大学出版社,2001.
[9]赵伟彪,吴俊峰,袁帅.MPI并行作业在云计算平台上的测试研究[J].电脑知识与技术,2014,15(10):3665-3667.ZHAO Wei-biao,WU Jun-feng,YUAN Shuai.Research on the testing of MPI parallel computing tasks based on cloud computing platform[J].Computer Knowledge and Technology,2014,15(10):3665-3667.