存储管理方法研究毕业论文
2020-04-04 10:54:05
摘 要
在大数据环境下,对数据的存储和处理有了更高的要求,尤其是对海量非结构化数据的存储管理,相比非结构化数据更加困难,也十分重要。在单机上很难存储和处理如此庞大的数据,分布式存储和云存储就成为了十分重要的内容。
对于如何解决海量数据的存储和管理,Hadoop 提供了一个很好的解决方案。HDFS 是比较成功的一个分布式文件系统,它可以部署在廉价的存储设备上,对大文件的管理提供了很好的支持。HDFS 是开源,容易部署,而且提供了很强容错性和扩展性等特点,使之成为当前海量数据存储的主流应用之一。
本文对分布式文件系统进行了简单介绍,并详细介绍了 HDFS 的体系架构和原理。在深入了解 HDFS 后,以 HDFS为基础的存储层,设计和实现了一个针对视频数据的云存储系统。该系统采用 Spring MVC 框架,完成了对 HDFS 底层的封装,很好地实现了前端与底层的分离,也大大简化了用户与 HDFS 之间的交互。
关键字:海量数据;非结构化数据;HDFS;云存储
Abstract
In the era of big data, higher requirements have been placed on the storage and processing of data. In particular, the storage and management of massive unstructured data is more difficult and unimportant than unstructured data. It is difficult to store and process such huge data on a single machine, and distributed storage and cloud storage have become very important contents.
Hadoop provides a good solution for how to solve the storage and management of massive data. HDFS is a relatively successful distributed file system. It can be deployed on inexpensive storage devices and provides good support for large file management. HDFS is open source, easy to deploy, and provides strong fault tolerance and extensibility, making it one of the mainstream applications for mass data storage.
This article gives a brief introduction to distributed file systems and details the architecture and principles of HDFS. After deeper understanding of HDFS, based on the HDFS-based storage layer, a cloud storage system for video data was designed and implemented. The system adopts the Spring MVC framework, completes the encapsulation of the HDFS bottom layer, and achieves a good separation between the front end and the bottom layer, and also greatly simplifies the interaction between the user and HDFS.
Key Words: Massive data; Unstructured data; HDFS; Cloud Storage
目录
摘 要 I
Abstract II
第1章 绪 论 1
1.1 研究背景、目的及意义 1
1.2 国内外研究现状 2
1.3 本文的主要工作和组织结构 4
第2章 HDFS 分布式文件系统 5
2.1 分布式文件系统概述 5
2.2 HDFS 架构分析 6
2.2.1 HDFS 体系架构 7
2.2.2 NameNode 8
2.2.3 DataNode 8
2.2.4 HDFS 客户端 9
2.3 HDFS 集群的文件操作 9
2.3.1 HDFS 客户端的读流程 9
2.3.2 HDFS 客户端写流程 11
2.4 本章小结 12
第3章 基于 HDFS 的视频云存储系统的设计与实现 13
3.1 云存储系统的背景与需求 13
3.2 云存储系统服务器端的设计与实现 14
3.2.1 云存储系统的总体结构 14
3.2.2 云存储系统的模块设计 15
3.2.3 云存储系统的索引方案 16
3.3 本章小结 22
第4章 系统实验和测试 23
4.1 开发工具和开发环境 23
4.1.1 开发工具 23
4.1.2 部署 Hadoop 23
4.2 实验结果及分析 24
第5章 总结与展望 25
5.1 论文总结 25
5.2 工作展望 25
参考文献 26
第1章 绪 论
1.1 研究背景、目的及意义
我们生活在一个海量数据时代,单个主机可以存储和处理的数据数量,已经远远不能满足我们每天处理的需求。大数据时代下,我们迎来了两个基本的挑战:如何存储和处理大数据,以及如何分析这些数据并完成数据向价值的转换[1]。
当下,互联网技术的发展更进一步,特别是 Web 2.0 技术发展迅速,,每天都会在互联网上产生和流通数量十分庞大的数据。与在传统的关系型数据库里存储的结构化数据相比,非结构化数据在这些庞大的数据中占据了更多的比重。EMC 在 2010 年发布的一份关于数据增长趋势报告中显示[2],非结构化数据的增长率达到指数级,占到了总数据的八成以上。而且,得益于数字娱乐设备的普及和互联网技术的发展,数字信息的总量曾在迅速增长,数据总量将在五年内增加十倍。其中,非结构化数据的增速达到了 60% 以上,在数字信息总量中占据七成以上。因此在长时间以内,数据总量的大部分仍将是非结构化数据,而在这些非结构化数据中,多媒体数据的增长速度十分可观,数量也在非结构化数据中占据了很大的比重。
人们对数据处理的要求变得更高,原有的数据处理方式已经很难满足。针对结构化数据的管理工作,传统的关系型数据库已经能够很好地胜任[3][4],然而,随着网络媒体数据量的不断增加,网络应用中非结构化数据的数量在不断增加,增长速度也不落下风。以现在的趋势来看,数据的量级轻易就能达到 TB 级乃至 PB 级,在这种状况下,关系数据库的性能和可靠性问题日益明显[5]。
与结构化数据相比,非结构化数据数量更多,占比更大,也更难管理,更难理解。最初,非结构化数据数量很小,人们只是将其暂存甚至完全忽略,现在非结构化数据的数量已经膨胀到人们再也不能忽略这些数据中所蕴含的庞大信息的地步。因此,对非结构化数据的存储和管理研究的热度和重要性逐渐超过了结构化数据,成为数据处理技术研究的重心。
显然,优秀的数据的存储系统是能够对数据进行高效处理的基础,所以解决海量数据的管理问题的最主要任务就是解决大量数据的存储问题。然而,由于单一设备的存储能力存在极限,而且盲目追求设备升级也会导致成本的膨胀,使用传统的单一服务器存储系统是很难胜任当前的数据存储工作的。相较而言,云存储作为一种新的思路,其基于服务器集群的分布式文件系统,似乎是一个更具有可行性的方案。实际上,分布式的云存储方案确实成为了当前海量数据存储最主流的方案。分布式存储思想,就是利用多台设备进行管理,通过当前成熟而强大的网络技术,我们可以轻易地将它们连接起来,让网络中的硬件资源得到最大程度的利用。在这种思想的指导下,各大互联网公司纷纷展开了对分布式文件系统的研究,其中比较突出的是 Google 文件系统 (GFS)[6],一个由 Google公司提出的分布式文件系统模型,以及基于 GFS 思想的开源项目 Hadoop 中的 HDFS。
Google 提出的 GFS 模式已得到业界的认可,因为它可以解决存储和分析大量网络媒体的问题。Hadoop[7][8] 的 GFS 模型的开源实现,许多企业都尝试对其进行研究和改进以满足自身的需求,从而产生了大量基于 Hadoop 的企业应用级的分布式存储。
云存储是对网络,并行和分布式计算等多种技术的开发和扩展,采用网络连接和分布式文件系统将网络中大量的存储设备集中在一起工作。云存储实现了存储的完全虚拟化,提供更强大的存储及共享功能[9][10]。在扩展性和容错性上,云存储有着十分突出的表现,此外,它还具有按需分配、可靠性强等优点。在分布式计算领域中,Hadoop 是一个十分优秀的开源框架,可以为我们解决当前海量数据的存储和处理提供十分现实的解决思路和方案
简而言之,无论是对非结构化数据的存储和管理进行研究,还是对云计算和Hadoop的研究,都非常重要。通过对 Hadoop 进行研究,我们可以了解到云的架构,还可以利用 Hadoop 框架设计和实现一个以此为基础的云存储系统。
综上所述,不管是研究非数据化数据的存储和管理,还是云计算和 Hadoop,都十分有意义。通过对 Hadoop 的研究,我们可以了解到云的架构,还可以利用 Hadoop 框架设计和实现一个以此为基础的云存储系统。
1.2 国内外研究现状
上文中我们提到,在这些海量的数据中,非结构化数据在总量和占比上都远远超过结构化数据,而且将持续走高,因此对非结构化数据的存储管理研究尤其迫在眉睫。
与结构化数据相比,非结构化数据具有以下五个特点[11-15]:
(1) 存储方式多样,目前对非结构化数据的管理存在多种形式,尚未形成统一的标准,包括在结构化数据库的BLOB 字段中、FTP 以及传统的纸质资料管理等;
(2) 非结构化数据的类型多样,如 office 文档,网页,以及图片、音频、视频等多媒体文件,都是我们所说的非结构化数据。其中,数量最多的是多媒体数据;
(3) 非结构化数据的处理需求多样。包括上传、下载、提取摘要等;
(4) 难以标准化。相比结构化数据,非结构化数据与应用密切相关,也更难以理解,在存储、检索、发布以及利用上更加困难;
(5) 非结构化数据具有十分庞大的数量,而且在异构系统中分布,尤其是多媒体数据。
基于上述五个特点,非结构化数据的存储和管理,在技术上是一个巨大的挑战。
目前对非结构化数据存储方法主要有三种[11][14]:基于文件系统存储、基于数据库存储和数据库和文件系统结合存储。
(1) 文件系统存储方式
在这种存储方式中,非结构化数据通过文件系统存放在物理磁盘上,以文件的形式存放在磁盘的特定目录下。该方式中,数据的存储通常是无序的,仅仅通过人工对目录进行简单的分类。如果要对数据进行访问,需要应用程序通过给定的文件路径直接进行读取。早期人们对数据存储没有这么复杂的要求,文件系统尚能提供差强人意的文件管理能力。
然而,计算机技术不断发展,计算机的应用不断领域扩展,数据的类型不再像以前那样比较单一,数据的规模也变得更加庞大,数据的复杂性和数据管理的难度提升了一个又一个台阶,单纯的文件系统已经难以应付现阶段数据的存储和管理需求。尤其是这样以文件的形式来管理非结构化数据,虽然便于数据的访问,但是对于根据数据的属性对数据进行索引、查找、排序的问题,却难统一提供很好的支持。通常需要程序进行定制[16]。
然而随着数据量的增加,在传统单机文件系统的基础上,又发展出了分布式的文件系统逐渐成为了非结构化数据存储的主流方式。关于分布式文件系统,将在第 2 章中做出详细介绍。
(2) 数据库存储方式
关系数据库经过不断的发展,在结构化数据的管理方面已经十分成熟。对非结构化数据的存储和管理,目前大多数系统都是采用 BLOB 字段,该字段以二进制的格式存储非结构化数据。但是非结构化数据相对结构化数据大,随着数据量的增大,存储在 BLOB 字段中会导致关系型数据库迅速膨胀,影像数据库性能,进而影响整个系统的性能;再一个是整个应用系统相对封闭和独立,数据资料难以共享。
多媒体数据库是针对多媒体数据信息多样、数据存储结构特殊和存取处理差异大的特点设计产生的新型数据库,它结合了数据库技术和多媒体数据,继承了传统数据库的优点可以有效地实现多媒体数据的存储检索。
非结构化数据库则是为存储和管理非结构化数据设计的新型数据库,和传统的关系型数据库相比,非结构化数据库最大的特点就是它突破了前者结构定义固定、数据存在定长限制的劣势,对重复字段和变长记录提供了良好的支持,也就是说,非结构化数据库中,字段的内容可以重复,属性的长度可以改变,一个变长记录可以包含一个或多个重复的字段,每个子字段又可以包含一个或多个子字段。这就使得非结构化数据库和非结构化数据本身的形式十分契合,使其能够在处理非结构化数据上,拥有传统关系型数据库难以望其项背的优势。
(3) 数据库与文件系统结合存储方式
这种方式结合文件系统和数据库的各自优势,在文件系统中存放数据的源文件,在数据库中反映数据的元数据信息。这种方式一方面将元数据存放在数据库中,可以有序地存储数据,在一定程度上解决了单纯文件系统难以对数据进行有效地检索和排序的问题,另一方面,在文件系统中直接存放数据的源文件,可以方便对数据进行浏览、传递和修改,避免了在 BLOB 字段直接存放大量非结构化数据导致的数据库臃肿膨胀等性能问题。在当前尚未出现一个能够有效管理非结构化数据的解决方案,乃至成为如关系型数据库之于结构化数据的能够成为标准的解决方案之前,将数据库与文件系统相结合,在本文看来,是比较有效而且十分可行的方案。特别地,分布式文件系统和分布式数据库的研究和发展,也能够解决使用单一数据库性能限制整个系统性能的问题。
目前,以分布式数据库结合分布式文件系统的方式来存储和管理大量数据,正是许多企业应用级的大数据管理方案。
1.3 本文的主要工作和组织结构
本文针对当前非结构化数据存储需求十分迫切的情况,对当前非结构化数据的存储管理进行研究。在几种分布式文件系统中,本文重点研究了 Hadoop 分布式文件系统 (HDFS),并详细介绍了 HDFS 的体系结构和一些基本原理。本文还设计并实现了一个云存储系统,该系统主要针对以视频为主的大文件,以 HDFS 为基础的文件存储系统,并在结合数据库方面进行了探索。全文分为 5 个部分:
第 1 章:绪论。本章主要对本文的研究背景、目的和意义进行介绍,同时,介绍了非结构化数据存储管理的研究现状。
第 2 章:HDFS 分布式文件系统。首先对分布式文件系统的概念及其发展历程进行了介绍,然后详细地介绍了 HDFS 的系统架构和文件操作。
第 3 章:基于 HDFS 的视频云存储系统的设计与实现。本章首先介绍了设计该系统的初衷,然后分别从需求、设计和功能实现的角度对该系统进行了详细的介绍。
第 4 章:系统运行及测试。本章首先对 HDFS 的伪分布式搭建进行详细的介绍,然后对上述系统进行测试预实验,并展示部分运行效果。
第 5 章:总结与展望。对本文实现的云存储系统进行总结,对该方案所获得的预期成果以及实施过程中遇到的问题进行详细的总结分析,并对进一步研究的内容和趋势作了展望。
第2章 HDFS 分布式文件系统
2.1 分布式文件系统概述
分布式文件系统作为分布式系统主要的技术之一,可以实现信息资源以文件形式的共享。云计算环境需要为用户提供文件服务,分布式文件系统正是承担此重任的角色,它要保证用户能够以接近访问本地磁盘的体验来访问和存储云文件,甚至在某些方面还要提供更更加出色的服务质量(包括性能、可行性等)。
用户通过网络来使用分布式文件系统提供的远程文件服务,所以在设计分布式文件系统时有一个十分重要的目标,那就是使用户在访问存储在远程服务器中的文件时,感知不到他们是在进行远程访问。也就是说,系统对用户的透明性是分布式文件系统设计中需要着重考虑的内容,这是设计中十分关键的需求,因为系统的透明性直接影响了用户访问远程文件的体验。当然,分布式文件系统需要满足除了透明性以外的许多其他特性,比如,高可用性 (HA)、对异构客户端并发访问的支持、为文件提供多个备份以及保持文件备份的一致性和安全性的支持等。
分布式文件系统要对网络中的各个节点以及其中存储的数据进行管理,因此它的实现要比本地文件系统复杂得多,除了具有本地文件系统的需求外,他还必须具有以下需求[21]:
(1) 文件透明性。用户不关心也无法得知访问的数据存储在那个节点上,即对用户而言,分布式数据节点是透明的存在,用户感知不到它的存在,整个分布式文件系统就像本地文件系统一样。除此之外,使用单一的文件命名空间也是分布式文件系统透明性的体现之一,这意味着文件可以在不改变路径名的情况下被重定位,同时在任意时刻,用户程序都可以用一致的命名空间执行。
(2) 并发文件更新。并发控制问题一直是多用户系统的一个关键问题,在分布式文件系统中,同一文件被多个用户多个处理器同时访问和修改的情况十分常见,这就要求分布式文件系统必须对并发文件更新提供有效的解决方案。
(3) 硬件和操作系统的异构性。即不论数据和文件以怎样的形式,存储在怎样的硬件和操作系统上,分布式文件系统都应该能够对数据进行有效管理,并向客户端提供一致的文件服务接口。也就是说,分布式文件系统应该明确文件服务的接口定义,以实现对不同硬件和操作系统的支持。
(4) 容错性。在分布式系统中,容错设计对于客户在发生服务器故障时能够继续使用文件服务有着十分重要的意义必要性,文件复制可以降低或避免服务器中断和故障带来的损失。文件复制保证此文件的至少拥有一份在其他服务器上的拷贝。当访问文件或服务器失败时,客户端可以数据的副本所在的服务器,并继续使用文件服务。
(5) 一致性。系统中的文件被修改时,这个修改应当能够传递到该文件所有的复制中。