基于Hadoop分布式架构的云存储系统、文件存储实现研究

发布时间:2023-08-24 19:54:02 来源:网友投稿

谢 帆 彭玉涛

(井冈山大学网络信息中心,江西 吉安 343009)

面对海量大文件、小文件存储混乱的问题,引入基于Hadoop分布式架构的云存储系统、HBase数据库,并提出海量小文件存储的HPM优化方案。根据小文件体积不均匀、数量多的特征,通过创建不同类别的小文件索引,将MDS镜像文件与文件名拼接成字符串,完成多个小文件合并设置,并采用Ehcache缓存框架对需要访问的特定数据文件,缓存至云存储平台的客户端中,能够充分保证用户在与Hadoop集群交互、重复信息访问的效率,以及分布式数据存储的可靠性、容错性。

2.1 分布式存储技术

分布式存储是将分布式文件系统,部署于多个分散的云服务器中,并采用ScaleOut横向扩展架构,将不同的数据信息处理、存储任务,分布到多个低成本的网络节点,并可根据数据存储的需求添加节点,来扩展云服务存储容量、存储功能。[1]外部客户端可通过互联网,接入到分布式存储的云服务平台之中,对任意时间、任意地点、任意数据对象的存储行为,进行独立存储节点、数据存储任务的配置,提供面向客户端、按需的云存储服务。

2.2 存储虚拟化技术

存储虚拟化是指存储设备虚拟化、存储服务虚拟化、网络虚拟化,目的在于通过硬件及应用虚拟化、数据封装技术,解决不同计算机设备接口、存储容量间的差异问题,使得用户在数据信息处理、存储过程中,无需考虑后台的硬件配置、资源负载状况。

在PC主机上设置虚拟化层,虚拟出应用软件、虚拟存储管理设备,并通过映像技术虚拟出CPU、I/O通讯接口,以及NAS、SAN等虚拟网络存储,在数据信息处理与存储中共用同一传输信道,或者经由数据通道直接访问存储设备,实现底层硬件、上层存储业务的互相耦合。

2.3 数据容错及加密技术

数据容错技术为分布式云存储的故障处理技术,包括复制性数据容错、纠删码型数据容错等内容。其中复制性数据容错技术,是通过设置多个数据处理模块,用于不同网络节点的数据处理、存储控制,当某一模块损坏后可断开或隔离该模块,内部节点的其余模块可正常运行,但缺点是复制性数据容错技术需要建立副本,会占用大量的存储硬件资源。纠删码型数据容错技术、数据加密技术,则是采用存储数据的编码处理方式、TTL/SSL技术等进行编码加密、解码控制,用于防控外部用户攻击、病毒入侵,其占用的存储硬件资源较少,但缺陷是编解码过程对服务器设备的性能要求更高。

HadoopArchives作为数据文档或文件的合并工具,通常利用MapReduce模型编程、HAR文件元数据信息设置与合并,完成小的数据文件处理、归档存储等操作,并将归档后的文件添加至系统索引中。[2]如针对_index、_masterindex形式的小数据文件,可由HAR打包工具设置*.har的文件扩展名,其中包含了不同数据的文件名、位置等元数据信息,然后用part-*存放数据内容、用masterindex存放hashcode指针,归档处理后的har文件可压缩和解压,这样能够最大程度减少磁盘容量的占用。

SequenceFile与HAR的数据文件合并方案类似,是以[key value]键值对的二进制文件作为小文件合并的元数据信息处理方式,其中设置key为小文件名、value为小文件内容,以数据块为单位进行序列化合并,将小文件数据切为split格式的片,作为MapReduce并行计算、存储的输入值,使小文件合并降低NameNode内存开销。但缺陷是该文件格式不能建立索引,读取时需遍历整个源文件。因而这一数据文件合并方案,即使采取Block组织方式对key、value都进行压缩,也难以满足低延时随机访问的数据读取需求。

为解决这一问题,本文给出HPM分级处理的小文件优化方案,采用HPM方案改进现有的HDFS分布式存储架构,将其设置为包含用户层、数据处理层、存储层的多层结构,具体如图1所示。

图1 HPM方案改进的HDFS分布式存储架构

其中HPM分级处理模块位于数据处理层,该层级包含文件重复判定、文件大小判定、文件合并、缓存和预取等的子模块,根据服务器/客户机(C/S)模式传输的文件大小,HPM通过以上多个处理模块,完成不同文件名称字符串、MD5值的数据检索分析,判定文件大小、是否存在重复,将小文件通过合并模块的合并队列、临时队列进行合并,使合并文件大小满足系统数据块的阈值要求,降低NameNode的内存开销。同时,在索引子模块中创建索引文件,在HBase数据库中记录临时索引信息,将检索的同一类型的小文件合并;
在缓存和预取子模块中,扫描数据文件的访问次数,记录访问频率更高的文件,并将该文件缓存于HDFS存储端,以便于用户端对数据文件的重复访问和读取。

4.1 Hadoop集群部署、环境变量配置

在分布式存储系统构建之前,需要利用各节点主机、VMWare虚拟机、Hadoop集群,进行完全分布式系统架构的环境部署。选用6台PC机作为NameNode节点、DataNode节点、SecondaryNameNode节点的主机,分别命名为masterl、master2、slavel、……、slave4,各主机在不同节点上执行主机名修改,以及network-scripts目录的ifcfg-eth0文件修改、静态IP地址配置等任务,使Hadoop集群的多个节点名与节点IP地址相对应[3]。

而后对Hadoop分布式架构的Java编译运行环境进行配置,设置由ssh管理的免密钥登录节点,设定各节点的数据存放目录/opt/software、解压目录/opt/module,ssh免密钥配置的执行流程为:$ssh-keygen-trsa;$cd/root/.ssh;$ssh-copy-idslavel~4,即输入命令分别对应id_rsa.pub(公钥)、id_rsa(私钥)等文件,在master节点进入/root/.ssh目录,将公钥拷贝到可免密登录的slavel、……、slave4节点,由此只需通过sshroot@slavel~4命令验证,即可完成存储节点设置。

Hadoop环境变量的配置需打开etc目录,将profile文件的用户名$LOGNAME/.profile、登录目录$HOME/.profile变量,添加到数据存储的运行环境中,在profile文件末尾添加Hadoop路径vim/etc/profile,保存退出。而后对masterl节点、slaves节点的环境变量进行设置,将jdk安装路径加入至masterl节点,添加slave节点的IP地址,修改Hadoop核心配置文件来完成节点IP和端口设置。

4.2 分布式存储系统的总体架构设计

基于Hadoop分布式集群环境,构建用于数据处理、存储的云服务管理系统,对系统内的文件大小、名称、长度、合并偏移值等元数据信息,以及数据文件的存储路径进行科学规范管理[4]。云存储系统模型的层次化组成结构,包括存储层、数据管理层、应用接口层、用户访问层等层级,具体如图2所示。

图2 分布式存储系统的组成架构

该分布式云存储系统模型以B/S(浏览器/服务器)模式,作为用户访问、数据处理与存储的功能实现方式,由应用服务器响应用户登录、文件上传/下载的执行命令,Hadoop集群节点存储大文件、小文件、合并文件。

存储层为系统最底层,通常包含HDFS存储器、Web服务器、存储硬盘等设备;
数据管理层借助于Hadoop分布式集群、存储器装置,设置多个网络节点、虚拟出NAS、SAN存储装置,可提供数据读取、写入、浏览、删除的功能服务。

应用接口层为系统的网络连接层,包含API、webserver等接口,在数据接入、网络信道传输过程中,由Web服务器控制用户访问请求、文件处理与存储需求,安排Nginx反向代理向多个网络节点分配负载,并将处理后的数据写入至Hadoop集群、MySQL或HDFS存储数据库中。

用户访问层为系统最外层,由管理服务器分配与配置系统账号、登录密码,展示用于用户访问控制的注册、登录等操作页面。

4.3 数据文件存储的功能实现

网络云平台中的数据文件存储设置,通常围绕着用户层、数据处理层、存储层等系统层级,设置用于数据文件存储的大小判定模块、重复判定模块、合并模块、缓存及预读写模块,分级完成多个小文件数据的连续处理[5]。

(1)文件大小判定的功能模块。当前网络传输、存储数据文件大小的阈值设定,通常依照HDFS分布式文件存储的标准,默认数据块大小为64MB,小于64MB的存储数据文件被称为小文件,但这一文件阈值设定过高,将导致不必要的文件合并,过低又会增加合并后的小文件数量,因此本文设定小文件阈值为10MB。

(2)文件重复判定的功能模块。数据文件传输的重复性判定,通常使用MDS信息摘要算法,对不定长度数据信息,处理为具有固定字符串长度的数据元组,并输出由MDS算法处理后的结果A。当用户客户端上传文数据件后,查看数据信息的MDS值是否存在于HBase数据库中,若存在表明数据已被写入、无需重复写入,具体基于MDS算法的数据文件重复判定步骤如下:

第一,对数据长度为M的文件进行二进制数填充(包括1和n个0),直到字符串扩充为448+N*512(bit)的长度则停止填充。

第二,用64位字符串存储填充前的数据信息长度,按照64位求余的结果,追加长度为448+N*512+64=(N+1)*512(bit)的数据序列。

第三,设置32位初始化链路变量A、B、C、D,对输入数据分为字符串长度为512bit的信息块,进行多轮线性函数循环运算,求解公式为lib=(ABC)T+(ABD)T+(ACD)T+(BCD)T,得到lib1、lib2……等的相加求和结果lib,作为MDS值。将MDS值与HBase数据库中的文件名、文件内容字符串作对比,进行重复数据的筛除、过滤。

(3)文件合并的功能模块。HDFS分布式存储架构,可按照顺序进行大文件的存取、合并,但在大量小文件的处理、合并方面性能较差,而对缓存区队列设定阈值、遍历小文件的方式,虽然能完成大部分主流小文件的处理、合并存储操作,但以“文件体积”控制为主的合并,将造成合并后的数据体积不均、NameNode内存浪费问题。

根据以上数据文件大小判定标准,设定小文件阈值为10MB的体积最优模式,也即当传输文件体积大于10MB时不作处理,小于10MB时按照数据文件大小判定的要求,按照文件体积大小进行均匀分布,执行文件大小的判定算法(具体代码如图3所示)对其合并处理,并调用API接口上传大文件至DataNode集群中存储。这一基于体积最优的小文件合并算法,可最大化利用数据块的存储空间,避免合并小文件被分割、跨越数据块存储,降低NameNode节点的内存开销。

文件大小的判定算法如下:

(4)文件索引、缓存的功能模块。在HPM多处理器架构中,设置小文件读取分级模块、建立索引文件,使用HBase索引表、数据库存储临时的索引文件信息,包括数据文件名、块BlockID、存储路径、MDS值等的信息,以及合并后的小文件长度、偏移值信息。其中对不同类型的数据文件进行标记,大小数据文件分别记为flag=1、flag=0,合并文件记为flag=2,根据标记选择数据读取、索引的执行策略。

网络数据小文件缓存的主要目的,在于方便HDFS分布式存储系统的读写操作,也即“一次写入、多次读取”。依托于HBase索引表、HDFS分布式存储器与I/O接口,可针对外部用户客户端访问的NameNode请求,设置元数据文件的缓存机制、置换策略,响应请求后将大文件、合并文件的元数据信息,以及将小文件的文件名、长度和偏移值等信息,缓存到HDFS存储器之中,当目标文件被访问时,直接检索HDFS存储器的元数据信息即可[6]。这里小文件缓存信息与的格式内容对应,Key值用于记录小文件检索的信息,value值用于记录小文件的文件名、长度和偏移值信息,进而实现分布式存储系统的用户管理、目录管理和文件管理功能。

分布式云存储是基于多台PC主机、服务器及数据库,将网络数据处理的任务程序,拆分为多个动态资源分配的小程序,为不同用户分配动态的资源池,完成数据存储的按需资源配置、功能扩展。因而对于不同数据信息的分布式云存储,借助于Hadoop分布式架构、HDFS存储器、HBase数据库、PC主机、VMWare虚拟机等软硬件设备,搭建起虚拟化云存储服务平台,提供分布式接入、全局访问、虚拟化处理与存储的服务,可完成对大小数据文件的分布式存储、存储虚拟化及数据容错处理。

猜你喜欢数据文件存储系统虚拟化分布式存储系统在企业档案管理中的应用哈尔滨轴承(2020年2期)2020-11-06基于OpenStack虚拟化网络管理平台的设计与实现电子制作(2019年10期)2019-06-17天河超算存储系统在美创佳绩发明与创新·大科技(2019年12期)2019-03-17对基于Docker的虚拟化技术的几点探讨电子制作(2018年14期)2018-08-21数据文件恢复专题问答网络安全和信息化(2018年9期)2018-03-03数据文件安全管控技术的研究与实现信息安全研究(2018年1期)2018-02-07SQL数据文件恢复工具网络安全和信息化(2017年12期)2017-11-08浅析虚拟化技术的安全保障电子制作(2017年7期)2017-06-05H3C CAS 云计算管理平台上虚拟化安全防护的实现电子制作(2017年24期)2017-02-02华为震撼发布新一代OceanStor 18000 V3系列高端存储系统中国教育信息化(2015年12期)2015-08-24

推荐访问:分布式 架构 存储系统

版权所有:睿智文秘网 2009-2024 未经授权禁止复制或建立镜像[睿智文秘网]所有资源完全免费共享

Powered by 睿智文秘网 © All Rights Reserved.。备案号:辽ICP备09028679号-1