APP下载

一种基于Hadoop架构和Django框架的图像存储系统设计与实现

2024-05-19杨龙胡锦华陈婷

电脑知识与技术 2024年7期
关键词:数据存储

杨龙 胡锦华 陈婷

摘要:Hadoop是一个可用于调度、处理、计算大数据的开源分布式架构。它提供了一整套涵盖数据预处理、数据存储及数据可视化等多阶段的数据解决方案。Hadoop架构的分布式存储优势和Django框架的Web开发能力相结合,可实现高效的图像存储和访问。文章以图像存储系统的设计与实现为主线,针对如何依托优质的Django前端框架在代码层对数据进行高效管理以及如何使用Django Web框架构建Hadoop计算模式下的数据可视化Web系统,提出了一种解决方案可供参考。

关键词:数据存储;Hadoop架构;Django框架

中图分类号:TP311      文献标识码:A

文章编号:1009-3044(2024)07-0057-03

开放科学(资源服务)标识码(OSID)

0 引言

随着计算机应用领域的不断深入发展,大容量数据存储面临着存储成本高、性能低、可扩展性差、访问延迟等诸多问题,其中数据访问和处理性能的挑战主要来自于数据处理任务的复杂性[1]。尤其以大容量图像和视频为代表,数据的安全存储与有效管理成为亟待解决的问题。本课题主要研究一种基于Hadoop架构和Django框架的图像存储系统设计与实现,以期发挥Hadoop架构的分布式存储优势和Django框架的Web开发能力,为用户提供良好体验效果。

1 理论技术背景分析

1.1 Hadoop数据核心处理技术

Hadoop是一个开源分布式数据计算框架,其核心技术HDFS(Hadoop Distributed File System) 和MapReduce是優势所在。HDFS采用Master/Slave的体系结构,集群中有一个NameNode的主控服务器管理文件的元数据[2]。可以将图像数据存储在NameNode中,使用Python语言写入并且支持一次写入多次读写。在HDFS的基础上配合上层的Map Reduce 的计算框架可实现对目标存储数据进行海量处理和完整保存。

1.2 Django架构设计优势分析

Django是由Python编写的一个开源Web应用框架,它提供了大量的特性和工具且具有完善的在线文档,使得开发人员只需较少的代码即可完成网站开发的大部分内容[3]。Django采用了MTV(Model-Template-View) 的软件设计模式,Model本质是定义了大量的数据库可操作API封装到ORM系统技术人员只需要调用就可以对大量数据进行增、删、改、查等操作,这样也方便用户高效管理图像数据。Template 可将后端的动态数据填充至HTML进行快速渲染,因此该框架也非常适合周期较短的项目。View 主要作用于数据间的逻辑运算和操作。Django框架原理如图1所示。

1.3 MVT 设计模式的设定

本系统采用Django中的MVT(Model-View-Template) 模式。MVT模式主要由三个模块组成,模型层主要是对数据的读取和数据库事务的处理;视图层主要是处理用户发的请求和发出响应;模板层主要负责Web页面的布局和数据渲染。MVT的设计模式更加适合Web应用程序,分层划分使得代码更加清晰和可维护,MVT模式的高灵活性和可重用性都非常适合存储系统的设计开发。

1.4 数据管理系统的选择

数据库作为一种重要的仓库,主要用于存储数据[4]。本系统就采用开源的关系型数据库管理系统MySQL作为后台数据库。其一些关键特点和功能被广泛应用于Web开发领域。该DBMS体积较小、响应速度快、可用性高,都非常适配本系统的需求定位,首先由Hadoop集群在处理计算完原始数据后会将一部分数据存储在Mysql中进行持久化数据存储,以便将数据提供给存储系统调用。

2 系统设计

2.1 架构设计

Hadoop是现在大部分企业都在使用的分布式计算框架,其本身是一个比较宽泛的概念是为了处理计算海量的数据而诞生的生态圈,它的核心是用多个机器组件计算集群,将问题先拆分再汇总提高计算速度也不浪费计算资源。恰好图像数据正是其中的经典,Hadoop本质上是处理海量的小文件,这也是HDFS存储模型所不擅长的,在处理图像数据时可能会因为HDFS存储文件占用较小的情况可自定义函数对文件进行合并和切割,便于后期对数据的处理和可视化。

Django Web 框架在数据库操作和Web应用开发方面有自己独有的优势,契合优秀的Hadoop的数据存储模型。首先框架中有非常优秀的ORM系统,其本质就是封装了大量的数据库操作Api,便于对图像数据的维护和调度,这也是选择Django框架的原因,其中的URL层、Model层、View层、Template层可更快配合Web应用的开发。

2.2 功能模块设计

图像存储系统是基于用户静态信息数据和数据计算技术平台并结合存储的相关理论和技术架构搭建,主要是用于对用户的大量图像数据存储使用,采用模块功能进行权限控制,对用户进行分析精准化营销一方面监控业务数据、核心数据,将用户数据价值最大化。系统功能模块设计如图2所示。

本系统分为两个模块,分别是存储模块和服务模块,用户本身使用系统只开放存储管理模块,服务模块需要用户向联系管理员申请进行激活,一方面用户可最大程度地对自己的数据进行存储和管理,另一方面用户可将数据一键自动分类管理,用户只需要上传数据,大大节省了时间,这样可对用户的数据进行最大化的整理和美化。

2.3 存储模块设计

用户上传原始数据,可选择多种格式数据进行批量上传,系统可自动对数据类型进行识别并添加至对应分类中,也可以自定义进行分类存储。设置图像上传接口,支持用户上传图像文件,并对上传的图像进行预处理、格式转换、压缩等操作,以节省存储空间和提高访问效率。设置图像数据管理权限确保只有授权用户能够访问和使用特定的图像数据,以保障图像数据的安全性和隐私性。根据存储图像的存储数据信息,如上传时间、地点、相关标签等信息进行图像检索,用户可对检索出的数据进行导出、删除等操作。

2.4 服务模块设计

服务模块分为两类别,一种是用户对数据的处理包括对图像的裁剪、美化、旋转、格式转化等操作,用户对图像的自定义管理服务可对图像进行分类、分享、查询等操作。用户可对每次上传至系统的数据进行管理分类,数据可自动生成缩略图。原始数据上传后,再删除的数据系统会进行自动备份,保存一周后数据库事务进行自动删除,在此期间,用户可通过回收站对数据进行永久删除或恢复至存储系统中。另一种是用户可将数据交予系统制作成个人主页,个人主页可直接分享。根据用户个人需求可单独为用户拍摄个人主页的影片并定制主题,为用户打造属于自己的独一无二的主题风格,当然用户也可直接在论坛分享自己的主页,在论坛分享的主页也可评论留言。

3 系统实现

3.1 运行环境及工具选择

根据系统的需求,最终决定将系统搭建在较为稳定的Ubuntu系统上[5],将开发环境搭建在Windows系统上,运行环境搭建在Ubuntu系统上包括Hadoop 分布式架构、MySQL数据库、Django 框架等,开发语言选择与Django契合的Python,开发工具选择企业开发人员都在使用的Pycharm 和Notepad++。Pycharm是一款集成开发工具是一款非常人性化的开发工具,拥有页面风格版式调整、代码补全、支持各种丰富的插件、版本控制及单元测试等。Notepad++是一款开源的编辑器,支持多窗口化、多种语言的语法编辑高亮显示和检视,非常适合用作代码走查的工具。因为本系统在性能上有一定要求,故选择Notepad++增加代码可读性。

3.2 用户及管理员登录注册功能实现

普通用户在注册页面输入用户名、密码、邮箱等信息进行登录注册,管理员账号通过系统管理后台添加,普通用户和管理员都可以在登录页面选择输入邮箱和密码进行登录。

3.3 图像分类管理功能实现

用户在上传原始数据时即可对图像数据进行分类,图像分类种类都是由用户自定义的,以此来增加数据存储的多样性,同一分类下可存储大量的数据。图像分类管理界面如图3所示。

3.4 用户管理界面实现

系统管理员登录系统后,点击系统左侧工具栏中的用户管理,即可进入用户管理界面,管理员可对用户永久删除的数据进行恢复,注意永久删除的数据只可在系统中存储一年,之后数据将在数据节点中永久删除。管理也可对用户进行权限提升,方便后续为用户提供服务模块中的主页定制服务。用户管理界面如图4所示。

3.5 回收站功能实现

回收站旨在为用户提供误删除数据恢复功能,对误删除的数据,用户可自行在7天内进行恢复,当然用户也可对需要永久删除的数据进行永久删除。

4 系统测试

4.1 系统使用效果测试

本节主要是对系统的功能进行了测试,查看系统功能是否正常和符合设计。测试主要采用黑盒测试与白盒测试。黑盒测试主要测试系统的各个功能模块是否符合系统的设计需求以及能否返回正确的结果,黑盒测试不考虑系统的内部构造和逻辑处理等问题。白盒测试则与之相反,只考虑系统内部结构和逻辑实现等问题,而不考虑系统的功能实现。以登录进入首页为例进行黑盒测试与白盒测试。登录进入系统的首页如图5所示。

用户可根据首页图表更加直观地查看所存储的图像,更加直观地查看图像类别及种类数量。首次登录后首页统计图加载慢的情况,这是因为初次登录时数据量较大,需要一定的查询时间。对于单个图像的检索几乎不存在查询缓慢的情况,同时对检索出的图像也可进行一系列操作,比如图像编辑、查看此图像再分享后的评论、移除单个图像等操作。在批量上传方面支持图片与视频混合上传,系统会自动识别图像类别进行分类。

4.2 系统性能测试

性能测试时评估系统是否达到用户主观感受的一个标准,根据表1可以看到数据在批量上传处理时性能的各项指标,这里列出数据的最大值和最小值可更加直观感受到存储系统对数据的处理能力和对系统的评估。可以看到接口响应和事务响应的最大值都达到了7 000ms,这里的接口耗时并不是单个接口而是多个接口的响应时间,这里的接口是单个系列的接口,比如上传的接口会回调数据加载、数据存储等接口。

根据系统性能的最关键指标探寻性能瓶颈[6]。系统都有一个相对极限,在访问压力下,TPS会上升到一个最大值,如果压力继续增大,TPS反而会下降。这个峰值就是系统的最大性能,并发数-性能测试(LoadRuner/ab)中特定术语,为模拟现实中的实际用户,测试软件使用虚拟用户代替真实的用户[7]。系统性能测试后各项指标表如表1所示。

5 结束语

本文首先介绍了用户图像存储系统实现的各个功能模块,基于Hadoop和Django 的图像系统随着图像数据的快速增长,图像存储系统需要具备更强大的存储和处理能力。未来的图像存储系统将继续优化不断迭代,通过横向扩展和并行处理,实现对PB级甚至EB级规模的图像数据的高效管理和处理。未来图像存储系统将不再局限于图像存储而是多模数据进行发展比如:音频、三模数据等,在多模数据的存储同时支持违规图像的在线线程检测,而不是一味地只存储不检测。

参考文献:

[1] 岳茹.云計算环境下的数据存储与管理技术研究[J].科技资讯,2023,21(21):29-32.

[2] 陈新房,赵晗清,刘义卿.Hadoop核心技术与实战课程教材建设的思考[J].电脑与电信,2022(12):40-43.

[3] 郭鹤楠.基于Django和Python技术的网站设计与实现[J].数字通信世界,2023(6):60-62.

[4] 赵停停.基于MySQL数据库技术的Web动态网页设计研究[J].信息与电脑(理论版),2023,35(17):174-176.

[5] 王春程,田羽,方誉,等.Linux系统容器兼容性应用研究[J].自动化应用,2023,64(20):224-226,230.

[6] 付豪.面向大数据分析应用平台的性能分析系统[D].贵阳:贵州大学,2022.

[7] 刘东旭.基于LoadRunner的性能测试技术研究——以某系统登录模块为例[J].滁州职业技术学院学报,2023,22(2):43-48.

【通联编辑:朱宝贵】

猜你喜欢

数据存储
简单的数据修复
大数据时代档案信息建设的认识和实践
开源数据库数据存储的实现路径分析
基于Android开发的APP数据存储研究
哈希算法在物联网数据存储中的应用
空难事故跨媒体信息采集与检索方法的研究
基于STM32的AD采集与SD卡数据存储
浅谈信息系统工程和POJO模型组件开发
基于MongoDB的调查决策系统数据存储方案设计
大型在线式UPS及监控系统在中控机房的应用