更全的杂志信息网

海量小文件系统的可移植操作系统接口兼容技术

更新时间:2009-03-28

0 引言

近年来,Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)[1]以其高可靠性、高容错性、高可扩展性等优点得到工业界和学术界的青睐。HDFS设计初衷是实现大规模集群以支持大数据集的存储,并为运行在其之上的大数据应用提供高并发访问支持,因此,HDFS存储的文件主要是GB级或TB级以上的大文件。此外,为了实现集群数据的流式访问,HDFS放宽了一部分可移植操作系统接口(Portable Operating System Interface of UNIX,POSIX)约束[2],包括不支持文件的随机写操作以及删减了Linux下文件的可执行属性概念等。

随着云存储应用的普及,越来越多的应用产生对海量小文件的存储需求。基于这类应用存储需求,学术界围绕小文件聚合技术提出不少适用于海量小文件存储的方案[3-7],然而这些方案大多是基于特定的目录结构或是针对特殊文件格式进行的优化,在一定程度上不具备通用性。为此,国防科技大学实现了基于大空间聚合技术的海量小文件系统(Mass Small Distributed File System,SMDFS)[8],支持任意目录结构和任意格式文件的存储。

SMDFS基于HDFS研发,既继承了HDFS高吞吐量访问、高容错性等优点,同时也遗留了不兼容POSIX约束的问题,因此SMDFS在校园、企业和政府等群体的在线办公应用场景中,存在不支持文件的任意编辑等问题。除此之外,SMDFS提供的HDFS标准接口符合POSIX接口语义,不能直接兼容现有的B/S、C/S架构应用。

本文针对分布式文件系统SMDFS不兼容POSIX约束的问题,提出并实现了基于本地数据缓存的POSIX兼容技术以及基于数据暂存区的元数据高效管理技术。

1 基于本地数据缓存的POSIX兼容技术

SMDFS POSIX兼容最直接的实现方式是放弃文件的流式读写,修改底层存储文件的访问方式,但是这意味着系统并发性能的极大损耗。其次,对SMDFS来说,文件访问方式的改变必然导致文件访问接口与标准HDFS API产生差异,最终致使系统不支持Spark、Yarn、HBase等能部署在HDFS上的大数据应用。基于此,本文提出基于本地数据缓存的POSIX兼容技术。

1.1 文件流重定向技术

POSIX兼容技术的核心是基于Linux本地文件系统的POSIX兼容特性来实现文件流的重定向。实现文件流的重定向,需要在用户层与存储应用层之间的POSIX兼容层内设置数据暂存区,用于维护操作的目标文件的镜像。SMDFS POSIX兼容层根据文件读写模式对文件流进行重定向处理。

用户进行文件只写操作时,保持HDFS的写穿透模式以提高文件上传效率。由于SMDFS对小文件采用聚合存储,聚合文件中的单个小文件不能修改,如图1所示,在处理读写模式文件流重定向之前,若SMDFS存储层已存在目标文件,需要先将目标文件下传至数据暂存区作为镜像,等待用户以读写模式操作镜像文件结束后再将新的镜像文件同步至存储层,覆盖已有的目标文件。聚合存储状态下小文件的同步只能采用全量上传,而这里的覆盖操作是指在SMDFS存储层重新写入小文件数据并更新元数据和相关索引,并将原有的数据段标记为删除,等待后台回收数据存储空间。

  

图1 数据暂存区文件流重定向模型Fig.1 File flow redirection model in temporary data cache

用户文件读操作时,如果数据暂存区存在目标文件镜像,POSIX兼容层直接读取镜像文件。若不存在,则对读取的远程目标文件执行热点判断,符合热点标准则先将远程文件流重定向到数据暂存区进行热点数据缓存,否则直接将文件流返回给用户。数据暂存区的文件流重定向能减少远程过程调用(Remote Procedure Call,RPC),降低网络开销,实现用户操作的快速响应。

(3)听者在理解过程中,处于被动接受的层面,不能在听力前抓住线索进行积极的推理和预测,并无法在听音是验证和修正预测,在听力理解中解码失败。

1.2 异步线程池同步模型

SMDFS为实现海量小文件的高效存储,会对同时写入系统的一批文件的元数据缓冲并批量上传,这一操作减少了大量的RPC操作,有效节省了网络带宽。但是,对SMDFS Linux客户端而言,文件创建操作结束后会立即调用Exist操作来判断文件是否创建成功,此时,若元数据依然处于缓冲等待状态则会导致系统误报,因此,SMDFS客户端设计元数据缓存来实现对文件状态的高效管理与维护。

在文件系统中,称一个存在海量文件的目录为大目录。基于目录的元数据的缓存策略在处理大目录结构时存在严重的技术缺陷,因为可能一个大目录下的文件数目就超过了元数据缓存项上限。针对大目录结构做元数据缓存的代价过大,因此,在实际的缓存中针对大目录采取基于目录下目标文件的缓存策略以提高缓存的利用率。

留守儿童教育也需要学校和社会的努力。许多农村学校由于资金不足等因素的制约,教育质量普遍偏低。此外,社会本身是一个熟人社会,不乏可以帮助留守儿童的机构、个人,但是社会各阶层并没有太多作为,留守儿童得不到来自社会的帮助[3]。

  

图2 异步线程池文件同步模型Fig.2 Asynchronous thread pool model for file synchronization

异步线程池同步模型可以有效控制系统资源占用量,提高文件并发写的效率;但是,异步线程的使用带来了并发控制的难题。当镜像文件处于上传的同时,如果镜像文件需要被覆写,就会产生同一个文件的读写冲突,致使系统故障。本文采用覆写中断并发控制技术解决上述读写冲突问题。

1.3 覆写中断并发控制技术

为保证覆写线程和异步上传线程关于目标镜像文件的读写互斥,一个简单的处理方法就是等待上传线程将目标文件同步完成后,覆写线程再进行操作。然而这种模式存在明显的缺陷,即当上传文件较大时,覆写线程会长时间等待,影响系统效率,降低SMDFS的用户体验。在SMDFS系统的实际应用环境中,对于同一文件的连续覆盖只需保存最终版本。因此,在此场景中使用覆写中断技术会有效提高系统效率。

疏解整治促提升是北京近几年来的工作重点。根据2017年的统计数据,北京地区四年中停业或外迁的印刷企业达524家,占总数的29%,但北京地区印刷行业的规模仍然保持了3%的年平均增长,表明北京印刷业在疏解的同时,不规范和软散小企业的比例大幅度下降,提升了企业的档次。截至2017年末,北京地区印刷业的资产总值达到464.9亿元,主营业务收入为300.7亿元,分别是四十年前的141倍和87倍。

对于异步上传线程而言,当任务处于上传状态时,将同步信号量初始化为0,然后开始任务上传。上传过程中若覆写线程要获取该任务镜像文件的写权限,需先将任务状态置为中断状态并将线程睡眠,等待异步线程响应。异步上传线程在同步数据时监听到任务状态被置成中断状态时,将上传任务取消并唤醒等待中的覆写线程让其继续后续的文件覆写操作。覆写中断的操作能减少不必要的线程开销,加快系统对用户的响应。

2 基于数据暂存区的元数据高效管理技术

基于数据暂存区的元数据高效缓存技术包括数据缓存与元数据缓存绑定管理技术、元数据缓存的组织、基于目录的元数据缓存与淘汰策略、元数据缓存的一致性控制。

2.1 数据缓存与元数据缓存绑定管理技术

异步上传操作能避免用户线程阻塞,有效控制镜像文件同步操作的系统资源占用量,提高系统效率,因此,本文基于数据暂存区提出异步线程池[9-10]文件同步模型。

SMDFS引入数据暂存区后,对于文件的读写访问、权限控制、删除、元数据缓存一致性控制等操作都会涉及对数据暂存区中镜像文件的LOOKUP操作。LOOKUP操作与最终目标文件的查找以及挂载点处理等操作相关联,系统资源开销较大。为方便系统管理以及节约系统资源,SMDFS对数据缓存与元数据缓存绑定管理,将数据暂存区的每个镜像文件的属性记录在元数据缓存中对应的项中。当客户端需要检索数据暂存区是否存在目标文件的镜像文件时,可以直接将数据缓存对磁盘存储的LOOKUP操作转化为对内存中元数据缓存信息的访问,进而提高LOOKUP操作效率。

2.2 元数据缓存的组织

元数据组织与访问效率与分布式文件系统性能紧密相关。SMDFS采用跳表进行元数据的组织与管理。跳表[11]的效率与红黑树[12]旗鼓相当,可以实现元素的快速检索、插入、删除等操作。但使用跳表能高度还原用户的目录结构视图,实现高效的目录List操作。在SMDFS的POSIX兼容层中,首先,基于文件路径构建跳表节点索引,并为每个目录添加内容索引项,按照广度遍历优先的顺序将文件元数据缓存至跳表。因此,同目录下文件的元数据会连续地分布在跳表中某一段区域,并且目录的内容索引项位于该目录下所有文件元数据缓存项的最前面。在执行List操作时,只需先检索到该目录的内容索引项,再向后连续访问,即可获取该目录下所有文件的元数据。

2.3 基于目录的缓存与淘汰

c)每个客户端单线程,每个线程从集群某个目录下顺序下载1万个文件,5个客户端累计下载5万个文件,记录单个文件平均读延时。

对于某个目录下的文件第一次被访问时,将该目录下所有文件的元数据都存储到元数据缓存中,当用户执行List操作或者访问同目录下文件时,文件系统可以极快地响应用户操作。但是,系统需要对内存中元数据缓存的规模加以控制,在实际应用中需要设置元数据缓存的目录缓存上限和元数据缓存项数目上限,同时通过设置基于目录的策略来进行元数据缓存的置换,可以根据实际需求采用最近最久未使用算法(Least Recently Used,LRU)、先进先出算法(First Input First Output,FIFO)等置换策略。

从图6可以看出,当用户停车时间为3.3 h,超过预计停车时间的时长为1.43 h时,应将车辆停放在第8层。

如图2所示,用户层对镜像文件的写操作结束后,POSIX兼容层根据目标文件的路径信息创建上传任务,并将其加入上传队列。上传队列中的任务由异步线程池中的异步上传线程处理。当上传任务被成功创建后,会唤醒线程池中的异步上传线程执行上传任务。为避免系统的突发故障导致任务丢失,在数据暂存区创建上传任务加入队列的同时,会将任务同时写入日志记录文件中作持久化处理,同时维护一个任务执行的日志来记录任务对应的结果。当客户端或系统故障时,在系统重启后的初始化操作中会自动整理任务的执行情况,并自动对未执行或未执行成功的任务启动上传。

2.4 元数据缓存一致性控制

POSIX兼容层启动覆写中断直到异步上传线程完成最新镜像文件同步期间,会因为中断文件的不完整导致SMDFS存储层文件元数据与POSIX兼容层不一致。如果这期间触发存储层到缓存的元数据更新操作,将导致元数据缓存的对应数据变为“脏”数据。针对这一问题,本文设计了基于事件和定时器双重控制的元数据更新策略。如图3所示,对于元数据缓存来说,仅当接收到来自用户层对目标目录的访问事件时,才触发元数据缓存更新检查。若目标目录缓存超时,才会进一步触发元数据的更新操作。由于文件覆写时元数据缓存中保存的是最新镜像文件的元数据,所以元数据缓存更新操作会过滤掉文件暂存区镜像文件对应的缓存元数据以保证元数据缓存中数据的有效性。

如今,在塔里木垦区团场里,家家户户用上自来水后,连队的水井被淘汰了,水井渐渐消失在人们的视野里,只留在职工群众记忆中。

覆写中断并发控制技术通过0-1同步信号量实现覆写线程和异步线程的并发控制。

  

图3 元数据更新流程Fig.3 Metadata update flow

3 性能测试

我们基于课题组海量小文件系统SMDFS,实现了POSIX接口兼容的分布式文件系统SMDFS3.0,并支持Linux端的远程挂载。

3.1 测试环境

测试环境由9台通用服务器组成,其中1个元数据节点、3个数据节点,5个Linux客户端。其中分布式文件系统集群的硬件配置为:长城银河服务器EF420,CPU型号为飞腾FT-1500A,内存64 GB,硬盘48 TB,操作系统为中标麒麟。Linux客户端环境为超微2027TR-H71RF服务器,CPU型号为Xeon E5-2600V2,内存 64 GB,硬盘 12 TB,操作系统为 Centos6.7。

随机写测试客户端为 ThinkPad S5,CPU型号为 I7-6700HQ,内存4 GB,硬盘1 TB,操作系统为Centos6.7。

测试网络环境为千兆网,测试采用的小文件大小为100 KB。

3.2 测试结果

为测试文件系统的元数据缓存性能以及Linux客户端读写性能,针对 SMDFS2.0、实现POSIX兼容海量小文件系统SMDFS3.0以及HDFS进行以下测试:

运用Python语言调用Arcpy制图模块实现同一空间中所有数据链接修复,无需打开地图文档即可自动更改数据链接。首先,对地图工程模板中的数据库进行替换并另存一个新的目标工程;然后,对新的地图工程文件进行数据修复。运用Python语言如下:

1)元数据缓存性能对比测试。向文件系统存储层4个不同的目录各自写入5 000、10 000、30 000、50 000个文件,分别对有无元数据缓存的SMDFS3.0进行挂载,然后记录测试目录List操作从执行到响应的时间,比较性能差异。测试结果如图4所示。

该微信小程序由俄语摆渡研发设计,为用户提供2003-2016俄语专业八级考试全部选择题真题。该程序内容分为三大板块:顺序练习、随机练习、难题攻克。这三大板块皆又分为答题模式和背题模式,且答题的过程中,屏幕的右下方会显示正确答题的题目总数,有助于用户了解自己真实的俄语水平,但题目下方提供的解析相对Bears所提供的解析略显不足。另外该程序还设有我的错题和我的收藏,该功能有助于学生回顾错题、弥补不足。

㊱蒋介石:《唤醒党魂发扬党德与巩固党基》(1939年1月),张其昀主编:《先总统蒋公全集》第1册,(台北)中国文化大学出版部1984年版,第1215页。

张华军:当教师真正地把课堂看成一个不断促进学生和自己的生命在其中得到滋养、生长的地方时,就不会把是不是完成教学计划当作唯一标准。这并不是否定教学计划的重要性,而是强调不要把教学计划当作孤立的事情。它是在一个整体中,这个整体就是课堂教学中教师的教、学生的学以及教学内容为媒介所包容的一切。如果把实施教学计划当作一件事,把关注每一个学生当作另外一件事,把课堂发生的每件事都割裂地看,教师即使是超人,也没有办法兼顾。

  

图4 元数据缓存目录List性能对比实验Fig.4 Comparative experiments on List operation performance in metadata cache

2)文件系统随机写性能测试。使用测试工具iozone分别测试本地文件系统(LocalFS)和SMDFS3.0,参数为10线程,文件大小为1 GB,记录大小为4 KB。测试结果如图5所示。

  

图5 随机写性能测试实验Fig.5 Performance experiments on random write

b)每个客户端10个线程,每个线程从集群1000万文件中随机下载5000个文件,5个客户端累计下载25万个文件,记录单个文件平均读延时。

a)每个客户端单线程,每个线程从集群1 000万文件中随机下载1万个文件,5个客户端累计下载5万个文件,记录单个文件平均读延时。

3)文件系统读写性能测试与HDFS以及SMDFS2.0进行对比。由于 SMDFS2.0不支持远程挂载,实验中测试SMDFS3.0、HDFS 通过 FUSE(Filesystem in Userspace)挂载后的Linux客户端性能以及SMDFS2.0的Java接口性能。比较SMDFS3.0与HDFS的客户端读写性能以及SMDFS3.0 Linux客户端相对于SMDFS2.0 Java接口的性能损耗。分布式集群初始装载1000万个文件,对5个客户端同时进行以下测试:

第二阶段,视觉方式的主动性培养阶段。冲破了原有“视觉经验”的束缚,重新观察对象从中得到的新的视觉启示。

对于文件系统上层应用而言,目录的List操作属于频繁的用户操作。另外,基于局部性原理,当一个文件被访问时,同目录下的文件很可能被访问到。针对这种情况,对元数据缓存采取基于目录的缓存策略。

d)每个客户端10个线程,每个线程从集群某个目录下顺序下载1万个文件,5个客户端累计下载50万个文件,记录单个文件平均读延时。

e)每个客户端单线程,每个线程向集群写入2万个文件,5个客户端累计上传10万个文件,记录单个文件平均写延时。

二是抱团联动树品牌。通过政府主导,企业联动,市场运作,垦区特色产业规模化、产业化、标准化、品牌化程度得到大幅提升。目前,安顺有5家农垦企业、18家民营企业加入安顺“瀑布茶”品牌联盟,并成立了以农垦为核心的安顺有机茶联盟,已获农业农村部绿色食品中心认证产品2个,获省级著名商标3个,取得独立自营出口权企业2家,年出口茶叶2000吨以上。

f)每个客户端10个线程,每个线程向集群写入1万个文件,5个客户端累计上传50万个文件,记录单个文件平均写延时。

实验结果如图6所示。

  

图6 文件系统读写性能对比测试Fig.6 Comparative experiments on reading andwriting performance of some file systems

3.3 测试结果分析

总结比较实验结果可以发现,设置元数据缓存的情况下,第一次调用某目录List操作前会先装载该目录下元数据,再由本地元数据缓存接管后续目录的List操作,减少了RPC调用。因此,设置元数据缓存的情况下,List操作性能有明显提升。整体来说,Linux客户端元数据缓存的设计将目录的List操作性能提高了近10倍。根据随机写性能测试结果可以发现,SMDFS3.0的随机写性能大约为本地文件系统随机写性能的20%。对比文件系统读写性能测试结果,基于FUSE挂载的SMDFS3.0相比HDFS的Linux客户端,随机读性能有10倍以上的性能提升,顺序读和顺序写性能有约3~4倍的提升。但是,由于FUSE挂载后会引入额外的内核态和用户态切换等带来的开销,因此SMDFS3.0的Linux客户端相对于系统的Java接口会有大约50%的性能损耗。

将APS光纤传感器末端置于不同浓度的氯霉素-BSA偶联物溶液中,室温静置5 min后再将光纤生物传感器没入质量分数为15%蔗糖中,室温静置1 min。室温晾干,置于2~8℃下干燥保存。

4 结语

SMDFS不兼容POSIX约束,无法直接兼容传统B/S、C/S应用,在实际应用上也无法支持文件的任意编辑。本文提出的基于本地缓存的POSIX兼容技术,利用Linux本地文件系统POSIX兼容的特性,通过对用户层和存储层的文件流作重定向处理实现系统的POSIX兼容。同时,针对SMDFS的文件存储业务设计了基于目录的元数据缓存,提高了系统效率。但是,系统的POSIX兼容特性依赖于本地文件系统空间,在处理大文件时性能会随着文件大小增长而下降。这也是下一步需要考虑和解决的问题。

参考文献(References)

[1] HDFS users guide [EB/OL].[2017-06-25].http://hadoop.apache.org/docs/r2.6.5/hadoop-project-dist/hadoop-hdfs/HdfsUserGuide.html.

[2] POSIX [EB/OL].[2017-06-26].https://en.wikipedia.org/wiki/POSIX.

[3] 赵跃龙,谢晓玲,蔡咏才.一种性能优化的小文件存储访问策略[J].计算机研究与发展,2012,49(7):1579-1586.(ZHAO Y L,XIE X L,CAI Y C.A strategy of small file storage access with performance optimization[J].Journal of Computer Research and Development, 2012, 49(7):1579 -1586.)

[4] LIU X H, HAN J Z, YUN Q, et al.Implementing WebGIS on Hadoop:a case study of improving small file I/O performance on HDFS[C]//Proceedings of the 2009 IEEE International Conference on Cluster Computing and Workshops.Piscataway, NJ:IEEE,2009:1-8.

[5] 张春明,芮建武,何婷婷.一种Hadoop小文件存储和读取的方法[J].计算机应用与软件,2012,29(11):95-100.(ZHANG C M,RUI J W,HE T T.An approach for storing and accessing small files on Hadoop[J].Computer Applications and Software,2012,29(11):95-100.)

[6] DONG B,QIU J,ZHENG Q,et a1.A novel approach to improving the efficiency of storing and accessing small files on Hadoop:a case study by powerpoint files[C]//Proceedings of the 2010 IEEE International Conference on Services Computing.Piscataway,NJ:IEEE,2010:65-72.

[7] YANG Z,DAN L.Improving the efficiency of storing for small files in HDFS[C]//Proceedings of the 2012 International Conference on Computer Science and Service System.Washington,DC:IEEE Computer Society,2012:2239-2242.

[8] 严巍巍,何连跃,李三霞,等.SMDFS分布式海量小文件系统的大空间聚合存储技术[J].计算机研究与发展,2015,52(S2):29 -34.(YAN W W,HE L Y,LI S X,et al.Large aggregation space technology in mass small files system SMDFS[J].Journal of Computer Research and Development,2015,52(S2):29 -34.)

[9] 杨开杰,刘秋菊,徐汀荣.线程池的多线程并发控制技术研究[J].计算机应用与软件,2010,27(1):168 -170.(YANG K J,LIU Q J,XU T R.On multi-threaded concurrent control technology for thread pool[J].Computer Applications and Software,2010,27(1):168 -170.)

[10] LING Y,MULLEN T,LIN X.Analysis of optimal thread pool size[J].ACM SIGOPS Operating Systems Review,2000,34(2):42-55.

[11] Skip list[EB/OL].[2017-07-01].https://en.wikipedia.org/wiki/Skip_list.

[12] Red-black tree[EB/OL].[2017-07-06].https://en.wikipedia.org/wiki/Red-black_tree.

 
陈博,何连跃,严巍巍,徐照淼,徐俊
《计算机应用》 2018年第05期
《计算机应用》2018年第05期文献

服务严谨可靠 7×14小时在线支持 支持宝特邀商家 不满意退款

本站非杂志社官网,上千家国家级期刊、省级期刊、北大核心、南大核心、专业的职称论文发表网站。
职称论文发表、杂志论文发表、期刊征稿、期刊投稿,论文发表指导正规机构。是您首选最可靠,最快速的期刊论文发表网站。
免责声明:本网站部分资源、信息来源于网络,完全免费共享,仅供学习和研究使用,版权和著作权归原作者所有
如有不愿意被转载的情况,请通知我们删除已转载的信息 粤ICP备2023046998号