APP下载

基于MapReduce模型的并行计算平台设计

2013-08-21邵伟

计算机光盘软件与应用 2013年9期
关键词:并行计算平台设计

摘 要:现如今人们的生活已经进入了互联网时代,每天网络上都会形成海量的数据。对于互联网企业而言,需要对大量的数据进行系统分类,以便能够找寻对自身有价值的信息。MapReduce是一款能够用于大型计算机集群并发处理大量网络数据的模型,本文对该模型进行了系统的分析与研究,提出了一种更为通用且可扩展的平台。

关键词:并行计算;MapReduce模型;平台设计

中图分类号:TP338.6 文献标识码:A 文章编号:1007-9599 (2013) 09-0000-02

随着社会的不断发展与进步,互联网已经进入了web2.0时代,这就意味着更多的普通用户能够更为方便自由的使用互联网。对于互联网企业而言,web2.0在给企业带来海量数据的同时,也给企业数据收集带来了更多挑战。如何在大量的数据中收集对自身有价值的信息,成为企业发展的重中之重。并行计算思想的提出使得计算机计算速度以及处理能力有着显著的提高。也就是说,同一个数据的计算与处理可以在多个处理器中同时进行,把问题分解来提高处理速度。并行计算可以在一个包含多个处理器的超级计算机中进行,也可以在互联的多个计算机集群中进行。世界知名互联网企业Google公司每天均需要处理超过20PB的海量数据,这些大量数据的处理就是在该公司的高可扩展性分布式秉性基础框架上进行的。MapReduce是Google海量数据处理框架,在集群环境下,通过对数据的散布(map)和规约(reduce)来进行高并发计算。下面将分别介绍一下本文平台的关键设计策略。

1 通用平台策略

1.1 客户端任务上传

配置客户端任务使用的是XML文档,与通常使用的函数调用方式有着一定的区别。这样用户自定义任务就可以有多种表达方式,既可以是以编译可运行的类,或者jar包,还可以是一个shell命令或者Bash脚本,甚至于可以直接编辑为一个工作目录。之所以这样设计,就是为了能够进一步的扩大该框架的适用性。

1.2 监控用户自定义任务

用户自定义任务表达的多样性,使得框架更加通用,但同时带来了一个问题就是对任务执行过程很难以实现实时监控。所以只能够对任务完成后所反馈的状态码来判断任务是否已经正确完成。就像是反馈系统一样,如果反馈信息显示正确完成,则进入下一步骤;反馈信息显示错误,则重新执行该任务。

1.3 任务可串行执行

Map和Reduce是两种任务操作,对于Map任务而言,其输入文件需要进行一定的划分,把不同输出文件的同一个分区进行排序合并,然后再传送给Reduce进行操作。而Reduce的输出则当作一个结果文件来处理。实际上所执行的任务是更加复杂,该框架允许将多对Map/Reduce任务串行执行,也就是按照 [m1→r1→m2→r2→…→mn→rn]序列来执行。

2 中间结果文件的处理策略

在Map阶段多出现的中间结果文件经过散布分区处理后,就成为下一个阶段任务的输入函数。通常默认分区函数使用Hash(key)%R方法处理,但有时也可指定另外一种形式的分区函数。按照Map操作方式来运算中间结果文件时,会产生大量的重复键,如将这种中间结果文件直接传送至Reduce操作,必定会出现一系列的问题,所以必须对这些含有重复键的中间结果文件进行处理。这里可以通过用户自定义的合并方式,来对中间结果文件进行一定范围内的规约。

3 容错机制中的超时重发策略

本框架容错机制使用超时重发策略,也就是说,Master周期性的ping各个SN,同时检测他们当前所处的状态。一定时间范围内,Master未能接收到响应信号,则该SN就视为发生故障,如果在改SN上还有未处理完成的Map或者Reduce任务,则将被置于空闲,已进行重发操作;即使SN上的Map任务已经执行完成,也将进行重发操作。

本文设计并行计算平台可分为三个逻辑层,平台总体框架如下图所示。客户端与调度执行区二者之间,任务调度与执行区各个节点直接的通信,均是按照TCP协议消息来执行的,以完成层与层之间,节点与节点之间任务请求、文件信息、负载与节点状态的传送。因为网络带宽都是有一定限制的,所以平台在设计时,将任务单元输送至数据文件所处节点来执行,以进一步的降低网络带宽占用率。

4 分布式负载均衡与任务调度策略

分析并研究分布式负载均衡与任务调度问题,主要是为了能够把企业内部的各种服务器有机的联合在一起,不同类型服务器所能够承担或执行的任务有着非常大的区别,只有通过该策略处理,才能够把这些不同服务器整合在一起,呈现出一个整体的分布式计算机集群。

4.1 服务器对任务的智能调度

这里按照任务粒度来进行服务节点的选择,因为即使任务类型相同,也会因为输入文件大小的不同而引起粒度的变化。对任务粒度还有影响的另一个因素就是服务节点硬件资源,特别是系统CPU核数。一般情况下,如果系统具有多核处理器,那么线程池将会加大执行并发线程。所以实际运行过程中,Map/Reduce任务单元往往会多于服务节点个数。

4.2 网络均衡

网络带宽的固定使得其成为网络系统最为珍贵的一部分,但是个服务器节点之间的通信有需要使用以太网,所以系统在实际使用过程中,必须要进行一定的优化,以减少对网络的占有率。数据文件的本地化就是一种很好的优化措施。当系统中某一服务节点出现错误时,需要进行节点重新执行操作时,优先选择同一网关下的节点,以开放网关限制。

5 任务调度与执行层设计

该部分是整个并行计算的核心,计算是否能够正确完成主要看此部分的设计是否科学合理。任务调度与执行层分为主控节点——分派节点——服务节点三层架构,可以分别进行任务分解、分配、调度、实时监控、平衡分配以及任务执行与合并等操作。结构上分为以上三个部分,但实际上,这些执行不同任务的节点均处于同一台服务器中。每个节点之间按照TCP协议相互通信。所需执行的任务发送给系统中的分派节点,形成分派节点与主控节点之间的通信空间,并实时的向主控节点反馈当前状态,这个反馈信息即使主控节点的输入。上述执行过程完成后,系统将会把输入信息文件按规定划分为若干个单元,并选取一个服务节点执行这些任务单元。分派节点把执行的路径,执行的命令以及输入文件的详细信息打包发送给服务节点后,服务节点就通过工作线程进行下一步的计算。此时,分派节点的主要作用就是实时监控服务节点任务执行状态,以保证任务执行能够顺利进行。在分派节点按照顺序将任务逐一运算完成后,将自动切断与主控节点之间的通信通道,并向分布式文件管理器发送清除中间结果信号,同时把最终的结果文件发送至系统指定位置。

5.1 主控节点

主控节点是整个系统中最重要也是最中心的管理节点,该节点的主要作用就是任务的管理调度、对出现计算错误的节点进行处理以及均衡整个系统负载等主控任务。

(1)任务的管理调度

对系统中不同服务节点处的负载状态进行收集后,动态的分派调度Map任务和Reduce任务,并将调度信息发送至工作中的服务节点。同时还要实时监控不同任务当前的执行状态,以便于向用户进行反馈。遇见需要忽略的损坏数据时,按照任务要求来执行。

(2)处理发生错误或者失效的节点和任务的异常状态

Map节点失效:对各个节点的监控遵循心跳协议,一旦发现异常状态,则执行重选节点操作,以成功执行Map任务。当系统计算能力还有一定剩余时,可以执行备份任务。

Reduce节点失效:与Map节点失效时所实行的策略相同,通过分布式文件系统的复制存储功能,来确保Map任务所输出的中间文件是可靠的。

任务执行发生异常:系统发生该情况时,可以即时执行备份任务,以取代发生异常情况的任务。

(3)服务节点处负载均衡功能

对系统中每个节点所连接的网络、CPU、占用内存以及磁盘大小、任务粒度等负载信息进行收集,以进行系统任务调度操作,保证服务节点处的负载均衡。

5.2 分派节点

分派节点在系统中所承担的主要任务就是生成输入数据以及配置MapReduce任务,同时承担着发送任务执行请求信号至Master的任务。

(1)数据划分:按照不同数据类型将不同输入数据进行合理划分,同时控制任务粒度,以进一步的优化系统任务调度过程。

(2)调试代码:帮助用户更为方便的调试MapReduce程序,并反馈系统日志以及任务执行状态等信息。

5.3 服务节点

系统中的服务节点是实际执行任务的部分。所有需要执行的任务按照顺序被切分为相同大小的任务单元,初始输入数据同样被切分为相同大小块,每一个服务节点中,被切分的任务单元就运行于相同大小的数据块之上。假设当前运行的任务单元不是整个任务单元的尾部,则所输出的文件将直接当作下一任务单元的输入数据。服务节点的另一个作用就是定期收集系统的负载信息,以便于按时发送给Master。具体过程是:

(1)对系统Map任务实施调度来处理输入和输出数据

输入数据的读取:在本机中或者分布式文件系统中读取需要处理的Map输入数据。

系统Map任务调度:通过对Map任务的调度,来实时监控任务当前的执行状态,并实时将状态信息发送至Master。

输出数据的切分:将Map所输出的数据按照分区函数的规定来进行切分,每个切分数据集合输入至Reduce。

(2)调度本机Reduce任务来处理输入和输出数据

预排列过程:Map分区数据经过合并后输入至Reduce之前,可以对数据顺序进行排列,包括外部和内部两种排列。

调度执行Reduce任务:系统调度Reduce任务,来实时监控当前任务执行的状态,并实时将状态信息发送至Master。

(3)调度Combine任务

Map/Reduce任务间可以另外输入一个合并流程,并通过Map任务机在处理输出数据,例如将相同的key进行合并,以此来降低对网络带宽的占有率。

以上对本文并行计算平台进行了较为详细的描述,该平台现已经在实验中验证了其实际性能。在今后的工作中,将继续对该平台的各项性能进行更为细致的研究,以进一步的完善平台的通用性以及高速海量数据处理能力。

参考文献:

[1]迟学斌.高性能并行计算.http://lssc.cc.ac.cn/.

[2]Jeffery Dean,Sanjay Ghemawat.MapReduee:Simplified Data Processing on Large Clusters. OSDI04: Sixth Symposium on Operating System Design and Implemeniation,San Francisco,CA,2004.

[3]Luiz A.Barroso, Jeffrey Dean, and Urs Holzle. Web search for a Planet:The Google cluster architecture. IEEE Micro,2003,3:22-28.

[作者简介]邵伟(1969-),女,汉族,副教授,硕士,研究方向:计算机应用技术。

猜你喜欢

并行计算平台设计
基于自适应线程束的GPU并行粒子群优化算法
云计算中MapReduce分布式并行处理框架的研究与搭建
并行硬件简介
MOOC时代创新区域教师培训课程建设研究