SQL-DFS:一种基于HDFS的海量小文件存储系统.pdf

所需积分/C币:50 2017-09-13 17:18:58 2.58MB PDF
收藏 收藏
举报

针对 Hadoop 分布式文件系统(Hadoop distributed file system,HDFS)进行小文件存储时 NameNode 内存占用率高的问题,通过分析 HDFS 基础架构,提出了基于元数据存储集群的 SQL-DFS 文件系统. 通过在 NameNode 中加 入小文件处理模块实现了小文件元数据由 NameNode 内存到元数据存储集群的迁移,借助关系数据库集群实现了小文件元数据的快速读写,并对小文件读取过程进行化,减少了文件客户端对 NameNode 的请求次数;通过将部分 DataNode 文件块的校验工作交由元数据存储集群完成,进一步降低了 NameNode 节点的负
136 北京工业大学学报 2016年 文件的透明操作.洪旭升等8通过将序列化后的小 基于上述研究基础,本文跳出小文件合并的思 文件存储至 MapFile容器,对小文件进行合并,并通路,提出一种基于关系数据库集群11的海量小文 过建立索引,有效降低了文件总数量和提高了文件件存储方案.通过在HDFS中加入小文件处理模 的访问效率. 块,对集群内的大小文件区分处理,小文件写入时产 上述方案主要思路是通过将小文件合并成大文生的元数据信息转化成记录存储到元数据存储集 件同时对小文件索引,然后再将合并的大文件存储群,避免了 Name Node节点需要加载维持大量的小 到HDFS中,通过这种合并的方式能够很大程度地文件元数据文件,同时利用主从复制、读写分离技术 减少 Name node节点上元数据文件的大小,有效降构建高效的元数据存储集群进一步提高了元数据记 低 NameNode的内存使用率,但难以满足低延迟要录的查询速率,使得小文件的读写速率得到了提升 求,即使借助索引、缓存技术文件随机读写性能仍无 法让人满意. 2SQL-DFS文件系统 2)基于数据库的小文件合并 SQL-DFS文件系统模型的核心思想:通过将小 张海等ν提岀了一种基于关系数据库的小文文件的元数据信息由 Namenode内存迁移到元数据 件合并策略,通过 append操作将小文件内容按用户存储集群,从而降低№ ame Node节点的内存消耗;通 追加到用户文件中,利用关系数据库记录小文件在过优化小文件读取过程,减少文件客户端对 用户文件中的位置,再通过sek操作实现小文件的 NameNode节点的访问次数;通过将 Datanode块报 读取.但目前HDFS对 append和sek操作支持不告校验工作转移到元数据存储集群,降低 Name Node 足.刘小俊等将小文件首先集中存储到关系库,节点的负载压力;通过建立元数据存储集群实现对 当数据库文件达到一定大小再将数据库文件转存至小文件元数据记录的快速查询,提高小文件的读写 HDFS,而当用户读取文件时,根据用户的请求信息效率 RDBMS将动态地加载数据库文件,然后根据文件的2.1SQL-DFS系统模型 位置信息再读取文件.上述2种解决方案都是借用 SQL-DFS的整体架构设计如图2所示,与 传统的关系数据库去解决小文件的存储问题,其本HDFS架构相比在 Name node节点上新增加了小文 质上还是文件合并的过程.朱晓丽等利用新兴件处理模块,整个集群附加了一个关系数据库集群 的列式数据库 HBase进行海量图片的存储,实现了SQL-DFS包括如下4个部分:客户端、 Name Node、元 系统层对图片的合并、全局命名,并通过对 HFile的数据存储集群和 Datanode Key- Value字节数组结构的完善,实现了图片读取时 客户端与 NameNode、 DataNode以及元数据存 的自动纠错,提髙了系统可靠性,然而基于 HBase储集群进行通信来访问SQL-DFS文件系统.客户端 存储支持的文件大小范围极其有限. 与 Name node通信可访问集群内的元数据信息, 小文件元数据记录查询 关系数据库集群 从 元数据 用;文件读写 访问 Name Node 元数据 记录同:数 复制 客户端) 小文件处理模块 接 理|数据 主人复制从 檀|访问复制 层 心跳报告心跳报告 从 数据读写数据读写 心跳报告 数据读写数据读写 心跳报告 Data node Datanode Data node Datanode 数据节点 数据节点 数据节点 数据节点 图2SQL-DFS文件系统架构 Fig 2 Architecture of SOL-DFS 第1期 马志强,等:SQL-DFS:一种基于HDFS的海量小文件存储系统 137 SQL-DFS中对文件的读取和査找操作进行了如下优行,主数据库在完成请求后对从数据库进行 化:当用户进行文件读取和查找时,如果通过文件类同步1+15 型判定客户端请求的文件为小文件,本次元数据请 元数据存储模块 求将不再经过 NameNode,直接查询元数据存储集 ↑数据读写 群,从而减少了客户端对 Name node的请求次数,减 数据库连接池 写操作 主数据库 轻了 Name node的负载压力.在得到文件元数据信 记录复制 息的前提下,客户端与 Datanode通信完成文件的 读操作 记录复制记录复制 读操作 读写 读操作 仍是整个文件系统的决策者和全部 从数据库 从数据库 从数据库 amend 元数据的持有者,只是将元数据由内存转存到了元 图3关系数据库集群 数据存储集群,元数据转存的工作是由新增的小文 Fig3 Relational database cluster 件处理模块完成的.小文件处理模块的处理过程 如下 2.3SQL-DFS文件操作 1)根据配置文件中的文件块大小设置,对用户 在改进后的HDFS架构中,提供了对文件全面 写入的文件进行大小性质的判断,即是否属于小的操作支持,如文件上传、下载、查找、删除等常规操 文件; 作.以文件上传和文件下载过程为例,分步骤对改 2)小文件写入时,接收 Name Node返回的元数进后的HDFS工作流程进行详细说明 据信息并返回到客户端,待文件上传完成后将元数2.3.1写文件操作 据信息同步到元数据存储集群; 客户端在写入文件时, Namenode首先根据文件 3)文件读取时,如果读取的文件是小文件,则大小对写入的文件进行判断,如果写入的文件属于 向元数据存储集群中的元数据管理模块请求元数据小文件,则执行图4中的A、B、C、D、E和F步骤.否 信息,并返回到客户端; 则,将执行A、G、H、D和I步骤.各个步骤如下: 4)接收来自 DataNode的心跳和块报告,将其 步骤A文件写入请求由文件判别模块进行判 中小文件相关的部分转发的元数据存储集群的元数别处理,如果文件大小小于配置文件中设定的文件 关系数据库集群主要负责存储小文件的元数据文·则判定该文件为小文件,否则判定为普通 据管理模块进行下一步处理. 阈值 记录,通过配置文件可以指定不同类型的关系型数 步骤B将小文件转交由小文件存储模块进行 据库.元数据存储集群通过元数据管理模块向上层存储, NameNode节点将为该文件分配空间 提供元数据访问服务,具体处理过程为 步骤C小文件存储模块元数据信息返回到客 1)接收来自客户端的元数据查询请求; 户端,完成文件写入的准备工作 2)接收 Name node的元数据记录同步请求 步骤D客户端根据元数据信息将文件写人到 3)接收来自 Name Node的部分块报告,与数据指定的 DataNode 库集群中的记录匹配对比,并将结果返回到 步骤E客户端返回文件写人确认信息 ime node 步骤F小文件存储模块将小文件信息、元数 2.2元数据存储集群 据信息数据写入到数据库集群. 元数据存储集群的架构设计如图3所示,主要 步骤G普通文件由通用文件存储模块进行存 存储小文件信息、小文件与Blck的对应关系和储, Name node节点将为该文件分配空间,并将产生 Block与 Data node节点的对应关系.集群通过元数的元数据信息写入到元数据文件 据管理模块将数据库接口提供给客户端和 步骤H通用文件存储模块将元数据信息返回 Name node,接收二者的访间请求.在接收到访问请到客户端,完成文件写人的准备工作 求后,根据数据库语句的关键字判断该访问请求是 步骤Ⅰ客户端返回文件写入确认信息. 读操作还是写操作.如果是读操作,则将该请求分2.3.2读文件操作 发到相对空闲的从数据库处理;如果是写操作,则该 文件读取时, Name Node首先根据请求信息对该 请求只能由主数据库处理,而且必须以事务方式进请求进行判断,如果请求的文件属于小文件,则执行 138 北京工业大学学报 2016年 分别搭建了原HDFS文件系统和SQL-DFS文件系 Name node 小文 统,并将2种文件系统中的文件块大小均设置为64 E 数据库集群 件 MB,副本数为3,硬件配置情况如表1所示.实验所 存储 客 文件模块 需的测试文件由程序生成得到,总数为50000个, Data node A判别B 文件的大小在1KB~5MB之间,文件总大小为 模块 规 DataNode Data Node 150.68GB,文件平均大小为316KB 文件 DataNode Data Node 处理 表1实验环境配置 模块 DataNode Data Node D Table 1 Experimental environment configuration 服务器数量 软件版本 图4文件写入过程 Web服务器1 Centos6.5,JDK1.6, Tomcat7.0.55 Fig 4 Small file writing process Hadoop集群8 Centos6.5,JDK1.6, Hadoop-2.2.0 图5中A、B、C、D和E步骤,否则将执行A、F、G和 Myq集群3 Centos6.5,JDK1.6,MySq5.5.16 E步骤.各个步骤解释如下: 步骤A文件读取请求信息交由文件判别模块 在上述环境中本文共进行了3组实验,分别是 进行判别处理,如果文件大小小于配置文件中设定文件写入实验、文件读取实验以及空闲时内存占用 的文件阈值,则判定该文件为小文件,否则判定为普 对比实验,并在每组实验内分别进行5次不同文件 通文件 数量下的实验,文件数量依次为:100000、2000、 步骤B小文件存储模块接收文件请求信息 300000400000和50000,文件均从测试文件中随 解析得到小文件的相关信息 机抽取得到 步骤C从数据库集群査询得到小文件的元数 本文将文件平均耗时( file average cost,FAC)和 据信息 空闲时 Name Node内存占用率指标作为实验的评价 步骤D将小文件元数据信息返回到客户端. 标准,其中文件平均耗时具体定义为 步骤E客户端根据名称节点返回的元数据记 FAC=∑t/um 录到指定的数据节点上读取文件 式中:sum为测试文件的总个数;t;为完成第i个文 步骤F将文件请求信息转发到常规文件处理 件处理所用时间.FAC代表集群对小文件处理操作 模块进行处理. 的平均用时,FAC值越小说明集群对小文件的处理 步骤G从名称节点内存中查询得到元数据记能力越好.而空闲时 Name Node内存占用率通过 录,并返回到客户端 free命令即可得到,由于 Name node机器仅安装运行 Datanode HDFS和SQL-DFS,所以本指标可直接说明2种平 数据库集群 台下的内存占用情况. 文件|模块 3.2文件写入实验 客 Data node 店际v 在文件写入实验中分别将不同数量的文件写入 模块常规 DataNode DataNode 端 到HDFS和SQL-DFS文件系统中上传,并测得完成 文件 Data Node DataNode 处理 写入所需的总时间,表2中给出了实验测得的具体 模块 Data Node Data Node 数据. E 表2不同平台下文件的写入耗时 Table 2 Writing time of the file on different platforms 图5小文件读取过程 Fig 5 Small file reading process 文件数量/个 HDFS/S SQL-DFS/S 100000 12214 13231 200000 24904 26742 3实验设计与结果分析 300000 46746 39324 3.1实验环境与评价指标 400000 75231 54342 为了验证SQL-DFS文件系统模型的性能,本文 500000 109034 70115 第1期 马志强,等:SQL-DFS:一种基于HDFS的海量小文件存储系统 139 将表2中的实验结果,按照式(1)处理可得到测得读取全部文件所需的总时间,表3给出了实验 不同数量的文件写入时的FAC值,将文件数量作为测得的具体数据.其中HAR列指的是对HDFS中 横轴,FAC作为纵轴,便可得到不同平台上传文件的文件执行归档命令以后再进行文件读取的耗时. 时随着文件数量的增加FAC的变化情况,如图6 表3不同平台下文件的读取耗时 所示 Table 3 Reading time of the file on different platforms 0.30 文件数量/个HDFS/sHAR/sSQL-DFS/s HDFS 0.25 100000 4082 5141 2066 SOL-DFS 200000 8766 11212 4402 0.20 300000 10272 7869 6906 0.15 400000 2096430174 9580 0.10 500000 29055 43042 12890 10 20 30 文件数量/万 将表3中的实验结果,按照式(1)处理可得到 图6小文件写入平均耗时 不同数量文件读取时的FAC值,将文件数量作为 Fig 6 Average time cost of the small file while 横轴,FAC作为纵轴,便可得到不同平台读取文件 writing on different platforms 时随着文件数量的增加FAC值的变化情况,如图 表2表明随着写入文件数量的增多,HDFS上7所示 传同样数量的小文件所需时间明显要多于SQL- 0.10 DFS,HDFS耗时增长更显著.通过图6同样可以发 HDFS HAR 0.08 现在SQL-DFS中随着上传文件数量的增加,FAC值 SQL-DFS 变化极为平缓,增速远低于HDFS,说明在 SQL-DFS 0.06 中新写入的文件对集群性能不会产生明显的负面影 0.04 响,而在HDFS中,新写入的小文件对集群性能产生 了明显的负面影响,如当文件达到50万时,SQL 30 40 50 DFS的FAC为0.14023s,而HDFS的FAC已达 文件数量/万 0.21807s,高出SQL-DFS0.0778s 图7小文件读取平均耗时 SQL-DFS架构设计在文件数量少的情况下,文 Fig. 7 Average time cost of the small file while ading on different platf 件写入性能并没有提高,相比原HDFS架构反而耗 时更多,这是由于改进后的架构中加入了小文件判 通过图7可以发现,SQL-DFS在文件读取方面 别模块,需要对用户上传的文件进行统一判别,但随性能有了显著的提高,用时明显低于同等文件数量 着上传文件数量的增多,SQL-DFS架构表现出更好下的HDFS以及归档操作后的HDFS.归档操作后 的性能,这是因为原HDFS的架构设计需要在的HDFS虽然节省了 NameNode节点内存,但由于 Name Node节点的内存中加载并维持文件的元数据需要读取2层索引文件导致其在文件读取性能上表 信息,随着文件的增多元数据占据消耗更多的内存现是最差的.在图7中,SQL-DFS的FAC变化最为 空间,使得系统整体性能下降.而在 SQL-DFS中,平缓,测试文件数量由10000增加到5000,FAC Name Node节点的内存占用几乎没有变化,所有的元值仅增加0.0051s,FAC均值约为0.0231s,相比 数据信息都转化成表记录存储到了数据库集群内.HDFS均值(0.0486s)降低了0.0255s,比HDFS 当上传的小文件约240000个时, SQL-DFS架构在HAR均值(0.0659)低了0.0428 文件写入时的表现已经优于原HDFS架构,此时原3.4空闲时内存占用对比实验 HDFS架构中元数据文件大小为206.7MB,而SQL 每次实验后,通过执行free命令查看到系统的 DFS架构中元数据文件大小为32.5MB. 内存占用率情况,具体如图8所示 3.3文件读取实验 通过图8可以发现, SQL-DFS在 Name Node内 在文件读取实验中,分别从HDFS、 HDFS-HAR存消耗上表现也是最好的,当文件数目达到了 以及SQL-DFS文件系统中读取不同数量的文件,并50000时,原HDFS中 Name Node节点内存使用率 140 北京工业大学学报 2016年 45 HDE 30 口HDF 40 QL-DeS 口HAR 口SOL-DFS 20 35 15 文件数量 图9普通文件写入平均耗时 0 10 30 Fig 9 Average time cost of the ordinary file while 文件数量/万 writing on different platforms 图8 Namenode节点内存使用情况 Fig 8 Usage of Name Node node memory 的平均耗时玓有所增加,增加速度都极为平缓,并且 二者的差值极小,说明SQL-DFS文件系统中的文件 达3.4%,而SQL-DFS中 Name Node节点内存使用判别模块对普通文件以及大文件的写入带来了极小 率仅有12.5% 的负面影响,可忽略不计.在普通文件以及大文件 3.5普通文件与大文件读写对比实验 读取时,文件判别模块带来了同样的负面影响,在读 为了验证sL-DFS在存储普通文件与大文件取实验的结果中也得到了验证,本文不另作陈述 时的性能,在实验平台上进行了 SQL-DFS与HDFS 文件系统的对比实验,分别为文件写入实验和文件4结论 读取实验.其中实验数据为50个视频文件,文件总 1)通过在HDFS的 Name Node中加入小文件处 大小为62.65GB,文件平均大小为1.253GB,过程理模块,将HDFS中部分 DataNode文件块的校验工 同小文件对比实验过程一致 作交由元数据存储集群完成,给出了一种基于元数 由表4可知,当普通文件与大文件写入时,SQ-据存储集群的SQL-DFS文件系统,实现了海量小文 DFS上传同等数量的文件所需时间比原HDFS文件件的快速读写 系统耗时要多,二者的差值仅占总上传时间的2% 2)构建了SQL-DFS文件系统,并与HDFS系统 左右,这是由于SQL-DFS文件系统上传普通文件进行了多组对比实验,实验结果表明SQL-DFS文件 时,所有上传文件需要统一经由文件判别模块进行系统在小文件的读写性能上表现均优于HDFS,可 文件大小的判定,从而导致了耗时差值. 以用于海量小文件的存储. 表4不同平台下普通文件的写入耗时 Table 4 Writing time of the ordinary file on 参考文献: [1 Apache. Welcome to apache hadoop[ EB/OL].(2010-02 different platforms 27)[2015-04-12].http:/hadoop.apacheorg 数量大小/ GB HDFS/sSQL-DFSs耗时差值/s [2 BORTHAKUR D. The hadoop distributed file system 11.47 344.83 352.65 7.82 architecture and design[ J]. Hadoop Project Website 2026.54759.09774.56 15.47 2007,11(11):1-10 37.901142.801165.86 23.06 [3 SHVACHKO K, KUANG H, RADIA S, et al. The hadoop 4051.261557.11 586.23 29.12 distributed file system[ c]//Mass Storage Systems and 50 62.651918.031952.90 34.87 Technologies( MSST), 2010 IEEE 26th Symposium on Incline village. ieee 2010.1-10 将表4中的实验结果,按照式(1)处理可得到4] MACKEY G, SEHRISH S, WANG J. Improving metadata 不同数量的文件读取时的FAC值,将文件数量作为 management for small files in HDFS C]//Cluster 横轴,FAC作为纵轴,便可得到不同平台写入普通 Computing and Workshops, 2009. CLUSTER09. IEEE International Conference on. New Orleans. IEEE. 2009 文件时随着文件数量的增加FAC的变化情况,如图 1-4 9所示 5]赵晓永,杨扬,孙莉莉,等.基于 Hadoop的海量MP3 由图9可知,文件数量的增多及文件系统中文 文件存储架构研究[J].计算机应用,2012,32(6): 件块的增多,导致SQL-DFS和HDFS写入普通文件 1724-1726 第1期 马志强,等:SQL-DFS:一种基于HDFS的海量小文件存储系统 141 ZHAOⅩY, YANG Y, SUN L L,etal. Hadoop- based[10]刘小俊,徐正全,潘少明.一种结合 RDBMS和 storage architecture for mass MP3 files[J]. Journal of Hadoop的海量小文件存储方法[J].武汉大学学报 Computer Applications, 2012, 32(6): 1724-1726. (信息科学版),2013,38(1):113-115 cinese LIUⅩJ,ⅩUZQ, PAN S M. a massive small file [6]刘高军,王帝澳.基于 Redis的海量小文件分布式存储 storage solution combination of RDBMS and hadoop[ J] 方法研究[J].计算机工程与科学,2013,35(10):58- Geomatics and Information Science of Wuhan University 2013,38(1):113-115.( in Chinese) LIU G J, WANG D A. Research of redis based[11]朱晓丽,赵志刚.一种基于 HBase的海量图片存储技 distributed storage method for massive small file [J] 术[J.信息系统工程,2013(8):22-24 Computer Engineering Science, 2013, 35(10):58-64 ZHU X L. ZHAO Z G. a massive image storage in Chinese) technology based on HBase J]. Information System [7]余思,桂小林,黄汝维,等.一种提高云存储中小文件 Engineering, 2013(8): 22-24.(in Chinese 存储效率的方案[J].西安交通大学学报,2011,4512] MONTANER H, SILLA F, FRONING H,etal.Anew (6):5963. degree of freedom for memory allocation in clusters[J YU S. GUI X L. HUANG R W, et al. Improving the Cluster Computing, 2012, 15(2): 101-123 storage efficiency of small files in cloud storage J [13]谷震离.关系数据库査询优化方法研究[J].微计算 Journal of Xi'an Jiaotong University, 2011, 45(6): 59 机信息,2006(15):162-164 63.( in Chinese) GU ZL. Research on optimization method for queries in [8]洪旭升,林世平.基于 Map file的HDFS小文件存储效 relational database[ J]. Control Automation, 2006 率问题[J].计算机系统应用,2012,21(11):179 (15):162-164.( in Chinese) 182 [14 AKAL F, BOHM K, SCHEK H J. OLAP query HONG X S, LIN S P. Efficiency of storaging small files in evaluation in a database cluster: a performance study on HDFS based on MapFile[J]. Computer Systems intra-query parallelism[ C]//Advances in Databases and Applications, 2012, 21(11): 179-182.( in Chinese) Information Systems. Berlin Springer, 2002: 218-231 9]张海,马建红.基于HDFS的小文件存储与读取优化策15] CATTELL R. Scalable sQl and nosQl data stores[J] 略[J].计算机系统应用,2014,23(5):167-171 Acm Sigmod Record, 2011, 39(4): 12-27 ZHANG H, MA J H. Optimizational strategy of small files (责任编辑吕小红) stored and readed on HDFS[ J]. Computer Systems Applications, 2014, 23 (5): 167-171.(in Chinese)

...展开详情
立即下载 低至0.43元/次 身份认证VIP会员低至7折
    抢沙发
    一个资源只可评论一次,评论内容不能少于5个字
    关注 私信 TA的资源
    上传资源赚积分,得勋章
    最新推荐