一种基于云计算平台的海量图片并行处理方法

文档序号:6508443阅读:177来源:国知局
一种基于云计算平台的海量图片并行处理方法
【专利摘要】本发明公开了一种基于云计算平台的海量图片并行处理方法,该方法基于云计算的分布式并行计算模型,该模型包括单个主节点和多个任务节点,主节点将待处理的图片根据分配策略映射到不同的任务节点上,任务节点通过处理代码对图片进行并行处理。本发明利用云计算平台对海量数目的图片文件或者单个大的图片文件实现快速并行处理,提升图片分析处理的响应速度和吞吐量。
【专利说明】一种基于云计算平台的海量图片并行处理方法
【技术领域】
[0001]本发明涉及云计算【技术领域】和图像处理领域,尤其涉及一种基于云计算平台的海量图片并行处理的方法。
【背景技术】
[0002]云计算(Cloud Computing)是网格计算(Grid Computing)、分布式计算(Distributed Computing)、并行计算(Parallel Computing)、效用计算(UtilityComputing)、网络存储(Network Storage Technologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等传统计算机技术和网络技术发展融合的产物,云计算是一种通过Internet以服务的方式提供动态可伸缩的虚拟化资源的计算模式。云计算基于互联网相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。
[0003]在云计算蓬勃发展的今天,海量图片处理成为一个非常热门和值得研究的领域,该研究领域涉及如何有效的存储和处理海量图片,其中图片按容量大小又分为几KB的小图片和几GB的大图片。为了高效的对不同大小的海量图片进行处理,所采用的处理方法也不同。
[0004]国内在海量小图片存储和处理领域,淘宝TFS文件系统针对于小图片的存储和处理进行了有针对性的优化,使得淘宝能够应付海量商品小图片的读取。
[0005]国外Facebook在海量图片存储和处理领域也是比较权威的,它们的架构要处理全球几亿用户上传的图片并进行存储和处理,以及接受相应高并发量的用户请求。
[0006]淘宝和Facebook在处理海量图片方面也是有针对性的,它们的主要目的是高效的图片数据存取,并不是有针对性的对海量图片进行算法处理和分析,并且目前针对GB级别大图片处理的相关方法研究仍然比较少。

【发明内容】

[0007]本发明提出了一种基于云计算平台的海量图片并行处理方法,其主要目的在于使用云计算平台的并行处理模型对海量小图片(小图片的大小判定依赖于算法、单个节点处理能力等)和单个大图片(一般可能几GB或几十GB)文件实现并行分析处理,提升图片分析处理的响应速度和吞吐量。
[0008]一种基于云计算平台的海量图片并行处理方法,基于云计算的分布式并行计算模型,该模型包括数据存储服务器,一个主节点和多个任务节点,包括以下几个步骤:
[0009]I)客户端将分配策略、处理代码和储存在数据存储服务器中待处理的图片信息递交至主节点;
[0010]2)主节点依据接收到图片信息,对数据存储服务器中的图片进行遍历,得到图片信息对应的图片位置信息,并对图片位置信息依据分配策略进行分包,然后将分包及处理代码传送至各任务节点;[0011]3)各任务节点读取所接收到的分包中的图片位置信息,然后根据图片位置信息从数据存储服务器中读取相应的图片,并根据处理代码对图片进行并行处理;
[0012]4)各任务节点将处理后的图片存储在数据存储服务器中,并将图片的处理状态信息反馈给主节点。
[0013]在整个处理过程中,主节点作为一个控制节点,负责管理多个任务节点,主节点对将要处理的海量图片进行分发,将图片分发给不同的任务节点进行处理,然后等待各个任务节点处理完成,按照此方法将海量图片的处理进行了高效的并行化,任务节点越多处理速度越快。
[0014]针对大图片和小图片的处理,主节点在分发策略上有所不同。若图片为海量的小图片,且图片大小为几兆甚至几十兆时,所述的分包中包括对应的小图片在数据存储服务器的位置信息。可以将多个这种小图片打包分发给一个任务节点进行批量处理,分发小图片策略主要依赖于任务节点的数量、单个任务节点的处理能力,以及图片存储的节点位置。
[0015]当所述图片为单个大图片,且图片大小大于100兆时,由于单个任务节点对一张大图片进行算法处理的速度较慢,甚至单个任务节点的计算资源根本无法满足这张大图片的计算需求时,主节点可以根据图片本身的特点、单个任务节点的计算能力、算法限制等,将一张大于GB的图片按一定大小进行分割,将不同的分片分发给不同的任务节点进行处理,主节点负责等待任务节点返回图片分片的处理结果,再进行图片拼接。
[0016]所述主节点将大图片分割成若干小图片并对小图片进行排序,所述分包中包括大图片的位置信息和每个小图片的分割片段信息,所述的分割片段信息包括对应小图片的分片ID、偏移和长度信息。主节点将待处理的大图片根据任务节点的数量和相应的图片分割策略进行分割,然后将图片位置信息和分割片段信息打包分发给各个任务节点,各个任务节点从数据存储服务器中获取指定的分割图片信息,并对其进行处理。
[0017]大图片分割成若干片后,各个任务节点对分片后的图片信息并行处理,处理完后,所述主节点将处理完的小图片依据排序信息拼接成相应的大图片。
[0018]并行处理可以依据对图片处理的目的不同选取不同的处理方法,在图片处理过程中,如果像素间无内容相关性,可以采用对单个图片文件进行分片并行处理的方法,如果像素间存在内容相关,可以采用以整个文件为单位进行分片处理的方法。
[0019]若所述图片的格式为压缩过的图片格式,在步骤2)中,主节点需对图片进行解压。待处理图片格式仅支持bmp等没有编码压缩的文件,如果是JPEG等压缩过的图片格式,需先进行解压再进行处理。
[0020]所述各任务节点处理完图片后生成相应的日志文件,并保存在数据存储服务器中。
[0021]本发明对于小图片和大图片的处理过程如下:
[0022]1、海量小图片的处理过程
[0023]该处理方法基于多个节点的云计算平台环境,设定一台主机为主节点,其它节点为任务节点。主节点负责海量图片的任务分发,该节点依据待处理图片的存储节点位置、每个任务节点的处理能力等限制因素,将各个图片进行打包,每个分包中包括图片的存储位置信息,将分包交由各个任务节点进行处理,任务节点从分包信息中获取所要处理的图片信息,然后从数据存储服务器中读取图片数据,对每个图片执行指定的图像分析算法,将处理结果反馈给主节点。主节点分配完任务后,等待并收集各任务节点的处理结果。
[0024]2、大图片的处理过程
[0025]该处理方法同样基于多个主机的云平台环境,设定一台主机为主节点,其它节点为任务节点。该处理方法和海量小图片处理方法的不同之处在于,由于单个任务节点对大图片文件进行分析处理时,不论在时间效率还是在吞吐量方面,都会受到比较大的限制。因此需要对大图片进行切割,主节点根据实际的图片处理需求对具体的切割策略进行设计,将一张大图片切割成各个〈key,value)键值对,其中,key为图片片段在整个图片中的偏移,value为当前图片片段的长度。主节点将图片存放位置和相应的〈key,value〉分发给不同的任务节点,并在分发时标识每个分片ID。不同任务节点根据获取到的图片存放位置和〈key,value)信息读取图片分片数据,针对该图片分片进行算法处理,处理完成后将处理结果反馈给主节点,主节点负责将处理结果依据分片ID进行整合。
[0026]本发明利用云计算平台的并行处理模型对海量小图片和单个大图片文件实现并行分析处理,提升图片分析处理的相应速度和吞吐量。
【专利附图】

【附图说明】
[0027]图1为本发明的MapReduce计算示意图。
[0028]图2为本发明处理海量小图片的流程图。
[0029]图3为本发明处理大图片的流程图。
【具体实施方式】
[0030]本发明提供的是一种基于云计算平台的海量图片并行处理方法。具体云平台使用Hadoop开源MapReduce框架进行搭建,该MapReduce框架是一个部署在多台主机节点上的分布式计算框架。该框架中有一个节点作为主节点,其余节点作为任务节点。主节点同时也是任务分配节点TaskTrack,任务节点同时也是任务执行节点JobTrack。
[0031]Hadoop云平台的数据存储在HDFS上,HDFS是一个分布式的文件系统,即为本发明中提到的数据存储服务器,该文件系统是一个能够实现大数据可靠性存储且高吞吐量读取的存储解决方案。Hadoop的MapReduce分布式计算框架建立在HDFS分布式文件系统的基础上,因此为了执行海量图片的并行处理,必须首先将海量图片存储到分布式HDFS中。
[0032]如图1所示,Hadoop的MapReduce编程模型将大数据进行切分,分割成一个个输入切片,然后将每个输入切片分别映射到不同的map节点,map节点根据输入数据处理并生成不同的〈key, value)键值对,然后map节点依据不同的key值,将生成的键值对映射到不同的reduce节点进行处理,一般常用的映射方法是依据key的哈希值。然后reduce节点将不同map节点输出的相同key值的键值对进行合并,最终得到处理结果。简单概括,Hadoop的MapReduce编程模型就是一个将大数据的任务分解成小任务,分别交给不同的map节点进行处理,再将处理结果由reduce节点进行整合输出,类似于将一个原本串行化的任务并行执行的过程。
[0033]如图2和图3所示为图片的处理流程,首先整个处理框架包含客户端、主节点、任务节点和HDFS文件存储四个组件。其中客户端是重要的组件,因为根据不同的任务处理需求,客户端在设定请求参数和具体处理算法时是不一样的,客户端将一个打包好待处理的任务和相应参数递交给主节点,任务就对应一个jar包,其中包含相应的处理代码。主节点执行jar包中的任务分配代码,依据相应的任务分配策略将待处理任务分配给指定的任务节点,同时将jar包发送给对应的任务节点,任务节点执行jar包中的任务处理代码,并从HDFS中读取相应的数据进行处理,然后将处理结果保存到HDFS的文件中。由此可见,整个流程中最重要的部分就是客户端对应的任务分配策略、具体算法处理函数、map函数和reduce函数的设计。
[0034]下面针对处理海量小图片和处理大图片进行分别阐述:
[0035]海量小图片的处理过程如图2所示:
[0036]1、客户端向主节点递交处理指定目录下所有图片的请求,请求中包含客户端工程的jar包,jar包中含有主节点分配策略、Map处理代码、Reduce处理代码,该jar包中的代码会在各个map任务节点和reduce任务节点执行;
[0037]2、主节点在HDFS文件系统中查询待处理图片信息,对所要处理的目录中的图片文件进行遍历,根据各个图片所在的存储节点(即图片在HDFS文件系统中的位置)以及每个任务节点的计算能力,在最大限度的降低各任务节点读取图片数据延迟的前提下,将目录中的文件进行有效的分包,分包中存储各个图片的位置信息;
[0038]3、主节点将不同的分包信息和jar包分别映射给不同的Map任务节点,不同的Map任务节点获取分包信息后,从分包中得到所要处理图片的位置信息,各Map任务节点从HDFS中获取每个图片的数据,调用jar包中相应的Map处理函数对其进行相应的算法处理;
[0039]4、各个Map任务节点在处理完主节点所递交的任务后,将处理结果反馈给主节点,反馈信息可能是图片信息或者是图片的统计日志信息,具体根据实际算法而定;
[0040]5、主节点收到所有Map任务节点的反馈信息后,将不同的处理结果映射给不同的Reduce任务节点,进行后续的处理;
[0041]6、各Reduce节点将处理后的图片或日志文件保存到HDFS分布式文件系统中,并返回相应的处理状态信息给主节点。
[0042]大图片的处理过程如图3所示:
[0043]1、客户端向主节点递交处理指定大图片(几GB或几十GB)的处理请求,请求中包含客户端工程的jar包,jar包中含有主节点分配策略、Map处理代码、Reduce处理代码,该jar包中的代码会在各个map节点和reduce节点执行;
[0044]2、主节点从HDFS文件系统中查询该大图片信息,对所要处理的大图片根据算法所能够处理的实际大小以及单个节点的处理能力等限制条件,将该大图片进行切分,切分结果为一系列的〈key, value〉键值对,key值对应当前文件分片相对于原始文件的起始位置,value为分片的长度信息,此外,主节点为每一个键值对生成一个图片分片ID,用于reduce节点的图片重组;
[0045]3、主节点将所要处理的图片存储位置信息和相应的〈key,value)键值对信息以及jar包,打包映射给不同的Map任务节点;
[0046]4、各个Map任务节点在获取到主节点递交的处理请求后,根据获取到的图片存储位置、相应的图片分片位置和偏移信息,从HDFS文件系统中读取对应的图片片段,然后调用jar包中的map函数进行算法处理,并将处理结果返回给主节点;[0047]5、主节点获取到不同Map任务节点的处理结果后,将不同处理结果映射给不同的Reduce任务节点;
[0048]6、Reduce任务节点将根据不同图片的分片ID进行图片重组,然后将重组后的图片或者日志信息写到HDFS文件系统中,并返回处理状态给主节点。
【权利要求】
1.一种基于云计算平台的海量图片并行处理方法,基于云计算的分布式并行计算模型,该模型包括客户端、数据存储服务器,一个主节点和多个任务节点,其交互过程主要包括以下几个步骤: 1)客户端将分配策略、处理代码和储存在数据存储服务器中待处理的图片信息递交至主节点; 2)主节点依据接收到的图片信息,对数据存储服务器中的图片进行遍历,得到图片信息对应的图片位置信息,并对图片位置信息依据分配策略进行分包,然后将分包及所述处理代码传送至各任务节点; 3)各任务节点读取所接收到的分包中的图片位置信息,然后根据图片位置信息从数据存储服务器中读取相应的图片,并根据处理代码对图片进行并行处理; 4)各任务节点将处理后的图片存储在数据存储服务器中,并将图片的处理状态信息反馈给主节点。
2.如权利要求1所述的基于云计算平台的海量图片并行处理方法,其特征在于,所述图片包括海量的小图片,所述的分包中包括对应的小图片在数据存储服务器的位置信息。
3.如权利要求1所述的基于云计算平台的海量图片并行处理方法,其特征在于,所述图片为单个大图片,且大图片大于100兆。
4.如权利要求3所述的基于云计算平台的海量图片并行处理方法,其特征在于,所述主节点将大图片分割成若干小图片并对小图片进行排序,所述分包中包括大图片的位置信息和每个小图片的分割片段信息,所述的分割片段信息包括对应小图片的分片ID、偏移和长度信息。
5.如权利要求4所述的基于云计算平台的海量图片并行处理方法,其特征在于,在所述的步骤3)中,所述主节点将处理完的小图片依据排序信息拼接成相应的大图片。
6.如权利要求1所述的基于云计算平台的海量图片并行处理方法,其特征在于,所述图片为没有进行编码压缩的文件。
7.如权利要求1所述的基于云计算平台的海量图片并行处理方法,其特征在于,所述图片的格式为压缩过的图片格式,在步骤2)中,主节点需首先对图片进行解压。
8.如权利要求1所述的基于云计算平台的海量图片并行处理方法,其特征在于,所述各任务节点处理完图片后生成相应的日志文件,并保存在数据存储服务器中。
【文档编号】G06F9/46GK103473121SQ201310365091
【公开日】2013年12月25日 申请日期:2013年8月20日 优先权日:2013年8月20日
【发明者】张亮, 沈沛意, 宋娟, 董洛兵, 王剑, 胡正川, 孙庚泽 申请人:西安电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1