基于Hadoop的海量图片存储平台的设计与开发

2018-09-13 11:22周晓庆周智勇高江锦肖建琼罗兴贤
电脑知识与技术 2018年17期
关键词:分布式计算

周晓庆 周智勇 高江锦 肖建琼 罗兴贤

摘要:随着 Internet的飞速发展与深入应用,海量图片数据的存取问题显得越发突出,传统存储架构已突显管理效率不高、存储能力不足及成本太高等问题,Hadoop为我们提供了一种新的解决问题的思路,Hadoop可以充分利用集群的威力进行高速运算和存储,但是小文件过多时Hadoop的NameNode将导致内存出现瓶颈问题,使得系统效率变得极为低下。该文提出了一种基于Hadoop的、可对海量图片文件进行高效处理的存储架构,通过预处理模块的归类算法,并引入扩展一级索引机制,能较好地解决海量图片的处理问题,并避免内存瓶颈问题。实验表明,该系统易维护、具有良好的可扩展性,其稳定性、安全性、并发性均有较大改善。

关键词:海量图片;Hadoop;分布式计算;存储架构

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)17-0135-03

Abstract: With fast development and deep appliance of the Internet, problem of mass image data storage stand out, so the problem of low management efficiency, low storage ability and high cost of traditional storage framework has appeared. The appearance of Hadoop provides a new thought. However, Hadoop itself is not suit for the handle of small files. This paper puts forward a storage framework of mass image files based on Hadoop, and solved the internal storage bottleneck of NameNode when small files are excessive through classification algorithm of preprocessing module and lead-in of high efficiency and first-level of index mechanism. The test manifests that the system is safe, easy to defend and has fine extension quality; as a result, it can reach to a fine effect.

Key words: Massive Images; Hadoop; Distributed Calculation;storage framework

1 背景

随着 Internet的飞速发展与深入应用,大型门户网站、电子商务网站及网络社区大量出现,这些网站都存储有大量图片,传统的技术架构在处理海量数据方面显得越来越乏力[1]。如何构建一个能高并发访问且廉价高效的图片存储管理系统已经成为一个亟待解决的问题。云存储概念的提出给我们提供了一种解决思路, Hadoop能够对海量数据进行分布式高效处理,然而, HDFS并不是为处理小文件而设计的[2][3],要用Hadoop来进行海量图片的存储及处理,必须对其进行改进。通过对Hadoop的HDFS、MapReduce技术的研究以及图片存储的业务需求分析[4],我们提出了一种基于Hadoop的海量图片存储模型。系统采用 Map Reduce 编程算法实现并行处理,可以对海量数据进行快速处理,充分利用低廉PC的处理能力,充分利用现有资源实现高并发、高可靠的应用。

2 平台总体设计

系统采用HA架构及平滑扩容,可用性和扩展性都较好,通过引入高效的扩展一级索引机制,可使系统快速定位到图片文件所在的序列文件及其偏移位置。通过建立图片存储模型,可实现在高并发高访问下图片存取的高扩展性和高容错性。通过负载均衡系统和缓存系统的设计,对各存储节点进行存储优化,使其存储稳定性得到较大提高。系统采用 MVC三层架构设计,分别是数据资源层、业务逻辑层、应用接口层。

数据资源层是整个平台的基础,是云存储系统的基础部分。存储设备可以采用多种光纤存储设备,如NAS、iSCSI等设备,也可以采用SCSI或SAS等DAS存储设备[5]。由一个统一的存储设备管理系统对存储设备进行管理,从而对物理存储设备实现逻辑虚拟化管理、多链路冗余管理,并且对硬件设备进行状态监控及故障维护,其主要功能是协调下层若干存储设备,对上层的应用服务。该层通过利用HadoopHDFS提供的文件存储系统,HadoopMapReduce提供的海量数据处理能力,通过集成大量廉价PC的集群来提供海量存储容量。

业务逻辑层并行处理海量图片数据,并对整个平台系统进行配置管理,它是云存储系统中最重要的部分。该层使得各个存储设备协调运行,多个存储设备向上层应用提供统一的服务,屏蔽下层的存储设备,提供更好的访问性能。同时,通过集群、分布式文件系统和网格计算等来实现云存储中存儲设备间的协同工作,对外提供同一种服务。

应用接口层为用户提供方便、易用和友好界面,是云存储最灵活多变的部分,在云计算平台中,可以支持各种不同类型的应用,在相同的时间点上,云端也同时支持不同类型的应用,各系统可以自行定制各自的服务,这也正体现了云存储的优势。

3 平台功能设计

3.1 平台总体功能模块构成

从系统功能角度考虑,整个系统的总体功能模块构成如图1所示:

3.2 平台分层模块构成分析

3.2.1 业务逻辑层模块构成

业务逻辑层是本系统设计开发的重点内容,也是整个系统的核心,该层由5个功能模块构成,分别是图片文件索引模块、存储控制模块、缓存服务模块、业务处理模块、负载均衡模块。

图片文件预处理模块的主要功能是对图片文件进行预处理、文件名设计和图片元数据管理。预处理模块通过归类算法将具有强相关性强的文件合并为序列文件,从而大大减少文件数量,再通过扩展一级索引即可快速找到图片文件在序列文件中的位置。为此我们采用Hadoop中的HBase来存储图片元数据[6],索引则可保证其唯一性。

存储控制模块主要功能是对存储管理提供统一界面和命令,通过在廉价PC上部署 HDFS 文件系统,搭建机器集群,为海量数据的存储提供相关存储设备,对上层应用提供接口,以实现对图片的相关操作,保证数据的安全性及存储节点的稳定性,并进行存储优化。用户可通过Hadoop提供的端口50070查看NameNode信息。

缓存服务模块的主要功能是构建缓存区,起到筛检过滤的功能。与传统的缓存区使用 Memecache 来构建有所不同,我们利用Redis来构建缓存区。Redis 跟 Memecache 类似,也是一个的存储模型,但所支持的Value 类型更多,而且可支持像取交集、并集、差集等这样一些原子性操作。

业务处理模块主要对图片数据进行处理,上传图片都要进行相关处理,如缩放、切割等等。利用map Reduce即可对上传的图片进行处理,处理后的图片被存储到廉价PC的节点机器上,这样可减少各个节点的压力。在对存储的图像进行处理的时候,Map Reduce每次处理图像时,会读取缓冲区中相应的数据加载到内存中,由于缓冲区中的数据是按矩阵存储的,可通过各种图片处理算法对图片进行压缩,压缩完成后存入到 HDFS 系统中。

负载均衡模块的主要功能是在高并发情况下使系统能够安全稳定的运行,它承担着系统灾难控制,资源分配,故障规避等功能。Hadoop中,數据在HDFS节点中分布并不均衡,特别是当有新增从节点或从节点发生故障的时候,其数据分布不均匀状况则更加严重。该文采用HAProxy的RoundRobin负载均衡算法,通过负载均衡算法进行负载管理,降低系统局部负载,对系统资源进行合理分配和调度。

3.2.2 应用接口层模块构成

该层由基于用户的GUI界面模块和基于算法库的API模块两大模块构成。基于用户的GUI界面模块面向用户,针对不同的用户为用户提供各种友好的操作应用工具,以方便用户进行海量数据存储处理工作。基于算法库的API模块对于有较高、较多要求的高级用户,可提供编写应用系统,调用算法库中的API来扩展系统功能,实现所需的应用功能。

4 系统实现及结果分析

4.1 软件准备

操作系统使用Ubuntu9.04,分布式文件系统用Hadoop0.20.2,选择JDK1.6.0_31作为JDK环境,包括一个NameNode 服务器、一个JobTracker服务器和4个 DataNode 服务器。图片服务器用Nginx-0.9.6,缓存软件为Redis,负载均衡软件使用HAProxy,使用Java 作为开发环境。通过配置 host 文件、创建新的用户和目录、安装 JDK 和配置环境参数、然后配置SSH 免密码登录、安装 Hadoop ,从而完成Hadoop 的部署及配置。

4.2 实验结果分析

4.2.1 集群安全性测试

NameNode安全性测试,通过HeartAgent实现DataNode2对NameNode的热备份,当断开NameNode的网络连接后,迅速通过HeartAgent将vip绑定到NameNode2的地址,检查后确认满足安全性需求且服务正常,从而完成系统安全性测试。

4.2.2 图片存取接口测试

首先通过并发线程对小图片进行大量存取操作,以测试应用服务器的并发能力,然后随机对小图片的读取情况进行分析处理,其读取和写入效果如图2和图3所示。

从图中可以看出,通过Hadoop构建的存储系统的读写TPS (每秒传输的操作次数)与传统NFS构建的存储系统相比,其达到峰值时的所能容纳的线程数明显增加。这说明采用Hadoop的新存储系统减少了系统IO操作次数,提高了系统的承载量,在同等机器配置下,能实现更多的并发读取及写入操作。采用Hadoop的新存储系统在读写性能上优于NFS,可保证系统的高吞吐性。面对高并发的读写操作时,新存储系统中的HDFS能保证系统的稳定性及安全性。

4.2.3 系统性能测试

在系统性能测试中,我们将数据文件分成不同量级进行计算分析,并对单机和Hadoop 集群在不同量级上所耗时间进行统计对比。测试结果如图4所示。

从图4中可以看出,当数据量较小时,集群比单机耗用时间较多,说明集群的分布式架构在系统初始化和中间文件的生成与传递上耗时较多,Hadoop 集群在数据量较小时并没有优势。随着数据量增大,可看出Hadoop 集群的分布式并行计算的优势逐渐发挥出来,集群系统处理时间增加幅度明显较小。测试结果表明,随着数据量的增大,相比单机,集群节约的时间越来越大,这充分体现了 Hadoop 集群在大数据量处理速度上有很大的优势。

5 结束语

该文设计了一个基于Hadoop的海量图片数据存储平台架构,该平台采用并行分布式技术、Linux集群技术。平台以Hadoop分布式平台为基础,使用HDFS分布式文件系统、Map Reduce并行计算模型及HBase数据库技术作为处理海量图片数据的有效方法,以Redis和HAProxy来构建缓存区并进行负载均衡处理。通过使用大量的普通PC形成集群,达到了高效存储和管理海量图片数据的要求。仿真实验的结果表明,系统具有良好的稳定性,在处理大数据量时性能良好,同时还具有很好的扩展性和易维护性,具有编程简化、安全可靠性高、开发成本低、易于实现等优点

参考文献:

[1] 赵晓永, 杨扬, 孙莉莉, 等. 基于 Hadoop 的海量 MP3 文件存储架构[J]. 计算机应用,2012, 32(6): 1724-1726.

[2] 邓涵元, 卢山, 程光, 等. 基于MPP-Hadoop混合架构高校数据集成系统研究[J]. 计算机技术与发展, 2018(7).

[3] 崔杰, 李陶深, 兰红星. 基于Hadoop的海量数据存储平台设计与开发[J]. 计算机研究与发展, 2012(49): 12-18.

[4] 柳俊. 基于 Hadoop 的海量教学资源存储平台的设计与研究[J]. 电脑与电信,2013(7).

[5] Bibhudutta Jena, Mahendra Kumar Gourisaria, Siddharth Swarup Rautaray, et al. A Survey Work on Optimization Techniques Utilizing Map Reduce Framework in Hadoop Cluster[J]. International Journal of Intelligent Systems and Applications(IJISA), 2017, 9(4): 61-68.

[6] Systems, Tome White. Hadoop: The Definitive Guide [M]. O'REILLY PRESS, 2009: 9-13.

猜你喜欢
分布式计算
云计算中MapReduce分布式并行处理框架的研究与搭建
面向异构分布式计算环境的并行任务调度优化方法