一种基于Hadoop的海量图片检索策略

2016-11-14 23:54孙玉林王晓卉
电子技术与软件工程 2016年18期
关键词:分布式系统

孙玉林++王晓卉

摘 要

针对电商平台海量图片的检索出现的性能瓶颈问题,本文提出一种基于Hadoop的海量图片检索策略,通过Sequence实现对小图片合并,并在合并过程中设定单个Sequence File的偏移量,解析索引快速定位存储图片Block的DataNode和Fileld,解决海量图片数据扩容和快速检索的问题。

【关键词】分布式系统 海量图片 检索策略

随着互联网的普及和广泛应用,电商平台和社交网络也不断发展,用于商品展示或社交分享的图片数量呈爆炸式增长。在这些电子商务网站和社交网站上,图片的信息表达远远超过了文字信息的描述,所以这些电子商务网站和社交网站更加注重图片的质量。从对淘宝网的分析来看,在整个商务平台的流量中,对图片的访问高达91.5%以上。腾讯相册的用户每周上传的图片也高达11亿张,目前的总图片数量有近700亿张,总容量高达15PB。由于海量图片需要消耗海量的存储空间,图片的存储和检索都会出现性能瓶颈。面对海量的图片资源,如何高效的检索以及如何在满足高并发访问的前提下构建高效廉价的检索系统成为需要迫切解决的问题。

1 Hadoop云计算平台

Hadoop是一个能够对大量数据进行分布式处理的软件框架,同时它又是可靠、高效、可扩展的。可靠性体现在它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。高效性体现在它以并行的方式工作,通过并行处理加快处理速度。可拓展性指其能够处理PB级数据。由于Hadoop最初是针对大规模文本数据处理设计的,内部数据类型有限,不能直接处理图片数据。在HDFS中,文件或目录等均是以对象形式在内存中存储,每个对象约使用150比特内存。随着海量图片数量的增加,耗费的内存也迅速增加,大量名字节点内存的耗费,严重影响了Hadoop的应用性。同时,检索大量图片的速度远远慢于访问相同数据量的大文件。

2 基于Hadoop的海量图片检索策略

HDFS是分布式计算的存储基石,Hadoop的分布式文件系统和其他分布式文件系统有很多类似的特质。它将复杂的运行于大规模集群上的并行计算过程高度的抽象到了两个函数Map和Reduce。MapReduce是一个用于进行大数据量计算的编程模型,同时也是一种高效的任务调度模型,它将一个任务分成很多更细粒度的子任务,这些子任务能够在空闲的处理节点之间调度,使处理速度越快的节点处理越多的任务,从而避免处理速度慢的节点延长整个任务的完成时间。

步骤1 搭建Hadoop集群平台。每台计算机安装操作系统和Hadoop软件,将一台计算机配置成NameNode,其它计算机配置成DataNodes。各个机器通过SSH直接通信。NameNode负责的是整个存储层的管理,DataNode主要作为存储节点。验证DataNode和NameNode之间联通性是通过心跳检测来实现,并且DataNode还要定期将自己的存储区信息发送给NameNode。当客户端访问时,首先访问NameNode,NameNode会分配相应的空间,在得到相应的空间后开始各个作业。

步骤2 设置安全策略。Hadoop集群平台中新增一台DataNode2作为NameNode备份机,将原有NameNode中的数据复制到选定的DataNode2中,在NameNode运行时,NameNode2会实时的检测NameNode的运行状态,同时把NameNode中的操作实时更新到本地,在NameNode出现故障时,NameNode2代替NameNode保证服务的正常进行。

步骤3 单图片存储处理。图片先经过负载均衡模块过滤,进入应用服务器队列等待进入HDFS存储系统,通过NameNode分配DataNode进行存储,图片写入过程中先确定写入Block,再确定Sequence File,系统将二者的ID组合命名为图片的系统内的名称。图片元数据保存在HBase,同时元数据也保存在由Redis构建的缓存系统中。图片完成写入操作。

步骤4 文件预处理合并。将指定目录下的图片文件读取进图片数组,并初始化byte数组,用相应的输出文件流将byte中的图片读入到指定路径下的合并文件中去。

步骤5 建立图片索引。图片名用的是联合编码的方式,主要包含BlockId和FileId两部分。其中BlockId代表的是一个存储单元,NameNode可以根据其确定最近的DateNode地址,FileId代表的是小图片在拼接的时候SequenceFile的Id;offset代表的是相应key值的一个的偏移量。HDFS前端在接收到客户端的请求后首先会解析文件名,根据相关信息定位到相应的Block文件、FileId和offset,然后客户端直接对图片进行读取。在对文件名解析以后,可以直接读取DateNode节点数据,并可以通过偏移量定位到图片的开始位置。

步骤6 客户端以图片名称和创建时间为参数发起访问请求,NameNode运算获取图片所在分钟时间段和合并文件对应的Blocks信息,返回给客户端。客户端向最近的DataNode发起图片读取请求。DataNode运算获得图片具体地址信息。

3 结束语

本文提出的一种基于Hadoop的海量图片检索策略,可以很好的解决Hadoop检索海量图片时NameNode内存消耗过度和检索效率低下的问题,并有效降低了检索时的NameNode负载,实现了对NameNode性能的提升,从而推动hadoop平台更广泛的应用。

参考文献

[1]郭本俊,王鹏, 陈高云等.基于MPI的云计算模型[J].计算机工程,2009,35(24): 84-85,96.

[2]王文平,刘希玉,韩杰.基于并行遗传算法的关联规则挖掘[J].山东师范大学学报(自然科学版),2006,21(04):29-31.

猜你喜欢
分布式系统
机房温湿度监控系统研究
基于分布式计算的暴力破解密码系统的改进
基于现场采集与云服务的流量积算管理系统研究
典型应用领域全球定量遥感产品生产体系
以数据为中心的分布式系统自适应集成方法
分布式系统中的辩证对立统一概念与方法
基于Hadoop的MOOC学习分析系统的构建
一种分布式消息队列的可靠性研究
“中间件技术”课程教学方法改革探讨
下一代网络技术