基于hdfs的分布式智慧校园文件管理系统优化方法及装置

文档序号:1937214 发布日期:2021-12-07 浏览:14次 >En<

阅读说明:本技术 基于hdfs的分布式智慧校园文件管理系统优化方法及装置 (HDFS-based distributed intelligent campus file management system optimization method and device ) 是由 朱全银 冯万利 周泓 李翔 刘斌 申奕 马思伟 吴斌 曹猛 朱良生 于 2021-08-11 设计创作,主要内容包括:本发明公开了一种基于HDFS的分布式智慧校园文件管理系统构建方法及装置,本发明使用小文件合并关联算法,通过分析用户的操作日志信息,根据文件关联算法,计算得出不同文件之间关联的概率,并将符合条件的小文件进行合并;并采用数据封装方式,向智慧校园文件管理系统提供Web服务调用的接口,改变了传统高校存储海量数据的方式。本发明解决了学校教育资源小文件的规模越来越庞大,存储在HDFS中时,对NameNode的负载压力越来越大,导致文件存储、访问效率降低的问题;同时为智慧校园的研究和开发提供保证;减少了存储大量小文件后,文件元数据信息所占用的内存空间;提高了系统在存取小文件时的效率。(The invention discloses a method and a device for constructing a distributed intelligent campus file management system based on an HDFS (Hadoop distributed File System). the method and the device use a small file merging association algorithm, calculate the association probability among different files by analyzing the operation log information of a user according to the file association algorithm, and merge the small files meeting the conditions; and a data packaging mode is adopted, an interface for Web service calling is provided for the intelligent campus file management system, and the traditional mode of storing mass data in colleges and universities is changed. The invention solves the problems that the scale of small files of school education resources is more and more huge, and the file storage and access efficiency is reduced because the load pressure on the NameNode is more and more large when the files are stored in the HDFS; meanwhile, guarantee is provided for research and development of the smart campus; the memory space occupied by the file metadata information after a large number of small files are stored is reduced; the efficiency of the system when the small file is accessed is improved.)

基于HDFS的分布式智慧校园文件管理系统优化方法及装置

技术领域

本发明属于HDFS存储和优化领域,具体涉及一种基于HDFS的分布式智慧校园文件管理系统优化方法及装置。

背景技术

在当今的教育信息化逐步发展的时代中,智慧校园将为我们提供一个全面的信息服务平台。随着大学中师生人数的增加,信息量也在增加。为了能够在现代化时代的大背景下进一步发展,建设智慧校园不仅是当前物联网技术的一个应用,更要为建设智慧校园的数据中心服务,为大学数据共享提供更有效的途径,为教学管理提供了科学决策的依据,为教师的工作、学习和生活提供了更便捷的服务,提升大学大数据治理能力。

为了在确保高性能和可靠性的同时处理大量数据,使用分布式文件系统是最好的选择。与常规文件系统相比,分布式文件系统通常由分配存储服务并通过客户端之间的网络连接到客户端和服务器的几个服务器组成。与传统文件系统相比,这种分布式文件系统体系结构可以提供两个优势:可伸缩性和并行性。由于服务器具有有限的硬件端口来连接存储设备,因此分布式文件系统可以通过将多个服务器连接到网络来为客户端管理数千个服务器(可伸缩性)。因为连接了数千台服务器,所以也可以使用许多存储设备同时访问数据(并行性)。由于与传统文件系统相比,分布式文件系统中使用了大量存储设备。因此了解文件存储原理和机制,这对提高文件存储效率非常重要。

Hadoop被应用于大数据方面。Hadoop是使用Java语言开发的开源框架,利用并行计算框架,快速处理非结构化、异构、不同来源的海量数据。它由Doug Cutting和MikeCafaraella在2005年开发的Apache软件基金会管理。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。

朱全银等人已有的研究基础包括:朱全银,潘禄,刘文儒,等.Web科技新闻分类抽取算法[J].淮阴工学院学报,2015,24(5):18-24;李翔,朱全银.联合聚类和评分矩阵共享的协同过滤推荐[J].计算机科学与探索,2014,8(6):751-759;Quanyin Zhu,Sunqun Cao.ANovel Classifier-independent Feature Selection Algorithm for ImbalancedDatasets.2009,p:77-82;Quanyin Zhu,Yunyang Yan,Jin Ding,Jin Qian.The CaseStudy for Price Extracting of Mobile Phone Sell Online.2011,p:282-285;QuanyinZhu,Suqun Cao,Pei Zhou,Yunyang Yan,Hong Zhou.Integrated Price Forecast basedon Dichotomy Backfilling and Disturbance Factor Algorithm.InternationalReview on Computers and Software,2011,Vol.6(6):1089-1093;李翔,朱全银,胡荣林,周泓.一种基于谱聚类的冷链物流配载智能推荐方法.中国专利公开号:CN105654267A,2016.06.08;曹苏群,朱全银,左晓明,高尚兵等人,一种用于模式分类的特征选择方法.中国专利公开号:CN 103425994A,2013.12.04;刘金岭,冯万利,张亚红.基于重新标度的中文短信文本聚类方法[J].计算机工程与应用,2012,48(21):146-150.;朱全银,潘禄,刘文儒,等.Web科技新闻分类抽取算法[J].淮阴工学院学报,2015,24(5):18-24;李翔,朱全银.联合聚类和评分矩阵共享的协同过滤推荐[J].计算机科学与探索,2014,8(6):751-759;朱全银,辛诚,李翔,许康等人,一种基于K-means和LDA双向验证的网络行为习惯聚类方法.中国专利公开号:CN 106202480 A,2016.12.07。

分布式文件系统(Distributed File System)是指将原来只能存放在固定的某个本地节点上的数据资源分开进行存放,之后是通过计算机网络与分开的这些存放数据的设备进行相连;或是由许多的不同磁盘的设备或磁盘路径将他们连接在一起因此形成文件系统具有分层特点,并且能保证数据的完整性称为DFS[19]。现如今面对大数据的存储解决方案需要将文件分开存放,由于传统的单点存放,会导致数据维护困难,难以进行储存容量的扩容,分布式文件系统之所以能成为大数据发展的核心是因为它能够随时扩展存储设备数量达到高可扩展性的目的。

HDFS全称为Hadoop Distributed File System(Hadoop分布式文件系统)。分布式文件系统是实时处理大量数据的策略之一,分布式文件系统是原理上就是一个一个的独立计算机的集合,这些独立计算机作为单一的系统呈现给用户。在分布式文件系统中,公共文件可以在节点之间共享。HDFS是Hadoop分布式文件系统的三大组件之一,用于存储在计算机集群上所有存储节点的文件,适合在部署例如服务器和个人电脑等廉价的机器上。HDFS为大数据提供了可扩展,容错和经济高效的存储方式。由于支持数据复制,以实现高数据可靠性。但是,由于复制策略的原因,需要额外使用到磁盘存储空间。

Hadoop被应用于大数据方面。Hadoop是使用Java语言开发的开源框架,利用并行计算框架,快速处理非结构化、异构、不同来源的海量数据。它由Doug Cutting和MikeCafaraella在2005年开发的Apache软件基金会管理。Hadoop可利用集群实现对海量数据的高效专业化处理,是一个大规模数据存储、计算、分析、挖掘的软件平台,具有低成本、高效率等优点,能可靠地存储和处理PB级的数据。

NameNode管理文件系统命名空间的主服务器和管理客户端对文件的访问组成,如打开,关闭和重命名文件和目录。负责管理文件目录、文件和block的对应关系以及block和DataNode的对应关系,维护目录树,接管用户的请求。保存了两个核心的数据结构,即FsImage和EditLog。FsImage用于维护文件系统树以及文件树中所有的文件和文件夹的元数据。操作日志文件EditLog中记录了所有针对文件的创建、删除、重命名等操作。这两个会加载解析到内存中。

DataNode(数据节点)管理连接到它们运行的节点的存储,负责处理来自文件系统客户端的读写请求。DataNodes还执行块创建,删除。需要不断的与NameNode节点通信,来告知其自己的信息,方便NameNode来管控整个系统。

智慧校园建设中存在的各种形式的学习资源,其中绝大部分学习资源所占用的存储空间相较于当下主流的存储设备来说非常小,常常是KB级别,但是他们的数量却占系统中总文件数量的80%以上,在网络学习中教育资源小文件的规模越来越庞大,存储在HDFS中时,对NameNode的负载压力越来越大,导致文件存储、访问效率降低。在关于分布式智慧校园文件管理系统方面,目前多数研究主要面向对小文件的简单合并、增加磁盘空间,未能对小文件之间的关联关系进行有效的判断,只对物理地址临近的小文件进行合并,或只将同一类别中的小文件进行合并,未考虑到小文件之间潜在的联系规则,不能动态的根据小文件之间的关联关系进行合并。

发明内容

发明目的:针对背景技术存在的问题,本发明提出了一种基于HDFS的分布式智慧校园文件管理系统优化方法及装置,目的在于解决分布式文件系统HDFS下海量小文件占用大量内存资源空间问题以及智慧校园的构建与优化,能够帮助高校节省文件管理系统在存储海量小文件后的资源空间。

技术方案:本发明提供一种基于HDFS的分布式智慧校园文件管理系统优化方法,具体包括以下步骤:

(1)实时监测用户对系统中文件的操作,当检测到用户对文件进行下载操作时,记录下用户的操作日志,提取其中的用户的UID,操作时间LogTime,文件的FID,文件的路径FilePath,文件名FileName,文件大小FileSize得到日志文件LogList;

(2)将步骤(1)获得到的日志文件LogList,进行数据处理,分析每个日志信息,过滤其中文件大小大于M的日志,得到小文件日志集合SLog,根据SLog计算每个小文件的下载次数count,得到小文件下载次数集合SFDcount;

(3)通过计算得出用户在下载小文件FNamei后T时间内下载FNamej的次数集合为STDL;根据STDL集合中的数据,根据文件关联公式进行计算,得出用户在下载小文件FNamei后T时间内下载FNamej的概率,得到小文件关联度集合SRL;

(4)跟据SRL确定将哪些小文件进行合并,将结果进行分析计算,将文件关联概率P(FName_j│FName_i)>50%,并且统计符合该条件的文件的数量大于3时,将该文件放入到初始合并文件集合BMF;

(5)在得到初始合并文件集合BMF后,将计算文件合并后的大小,确保数据块的大小不超出初始设定的HDFS块大小;已经合并过的文件就不再合并,最终得到文件合并集合BMFL;

(6)采用数据封装的方式,得到用户操作日志信息LogList后,根据小文件关联算法进行计算,将得到的小文件合并结果BMFL返回给Web服务接口,提供给高校智慧校园文件管理系统使用。

进一步地,所述步骤(1)包括以下步骤:

(1.1)搭建Linux系统下的基于HDFS的分布式集群;

(1.2)根据Hadoop类库中提供的接口,将数据进行封装;

(1.3)定义文件列表FileList,FileList={FileList1,FileList2,…,FileListFN},FileListn为文件列表的第n个元素,FN为文件的总个数,n∈[1,FN];

(1.4)定义用户Id为UID,文件ID为FID默认值为1,文件的路径为FilePath,文件名为FileName,文件大小为FileSize;

(1.5)定义循环变量i1用于遍历系统中所有文件,i1∈[1,FN],i1的初始赋值为1;

(1.6)当满足条件FilePath!=NULL时,下一步跳转到(1.7),否则下一步跳转到(1.14);

(1.7)定义计数器Fcount,初始值为0;

(1.8)令Fcount=Fcount+1;

(1.9)将浏览器Session中记录的用户Id赋值给UID;

(1.10)将系统中文件信息,包括用户的UID,文件FID,文件的路径FilePath,文件名FName,文件大小FileSize记录在文件列表FileList中;

(1.11)FID=FID+1;

(1.12)i1=i1+1,下一步跳转到(1.6);

(1.13)FN=Fcount,得到系统中文件列表信息集合FileList;

(1.14)在登录系统之后,根据用户的鼠标、键盘等外部设备的操作,Web服务器会自动对用户的请求进行处理,产生请求信息,包括访问地址URLPath,请求方式RequestWay,请求参数Parameters,操作时间为LogTime,操作内容OperationContent,文件路径FilePath;

(1.15)定义用户对在文件下载操作时的传给服务器的操作内容是Download;

(1.16)拦截器在拦截到用户的请求时会进行判断,当OperationContent=Download时,跳转到(1.17);

(1.17)定义文件日志列表LogList,LogList={LogList1,LogList2,…,LogListLFN},LogListn为文件列表的第n个元素,LFN为文件的总个数,n∈[1,LFN];

(1.18)从请求信息中提取出文件名FName、操作时间FTime、文件大小FileSize、用户UID、文件FID,并将这些信息添加到LogList中;

(1.19)最终经过用户的操作之后得到日志信息LogList。

进一步地,所述步骤(2)包括以下步骤:

(2.1)定义小文件列表SList,SList={SList1,SList2,…,SlistSFN},SListn为小文件列表的第n个元素,SFN为小文件的总个数,n∈[1,SFN];

(2.2)定义小文件日志列表SLog,SLog={SLog1,SLog2,…,SLogSLFN},SLogn为小文件列表的第n个元素,SLFN为小文件的总个数,n∈[1,SLFN];

(2.3)定义循环变量i2用于遍历FileList,将文件列表FileList每一个文件大小FileSize进行遍历,i2∈[1,FN],i2的初始赋值为1;

(2.4)当满足条件i2≤FN时,下一步跳转到(2.5),否则下一步跳转到(2.10);

(2.5)若FileListi1的FileSize<=10M,则下一步跳转到(2.6),否则下一步跳转到(2.4);

(2.6)定义小文件的文件Id为SFID,默认值为1;

(2.7)将用户的UID,小文件SFID,文件的路径FilePath,文件名FName,文件大小FileSize,添加到小文件列表SList中;

(2.8)SFID=SFID+1;

(2.9)i2=i2+1,下一步跳转到(2.4);

(2.10)定义循环变量i3用于遍历LogList,将日志列表LogList中每一个文件大小FileSize进行遍历,i3∈[1,LFN],i3的初始赋值为1;

(2.11)当满足条件i3≤LFN时,下一步跳转到(2.12),否则下一步跳转到(2.17);

(2.12)若LogListi3的FileSize<=10M,则下一步跳转到(2.13),否则下一步跳转到(2.11);

(2.13)定义小文件日志Id为SLID,初始值为1;

(2.14)将文件LogListi3的SLID、FName、FTime、FileSize都记录在列表SLog中;

(2.15)SLID=SLID+1;

(2.16)i3=i3+1,下一步跳转到(2.11);

(2.17)定义小文件下载次数为count,小文件下载次数集合为SFDcount={[FName1,count1],[FName2,count2],…,[FNameSFDN,countSFDN]},SFDN为小文件下载次数集合的总个数,SFDcountn为小文件下载次数集合中第n个元素,n∈[1,SFDN];

(2.18)定义循环变量j1用于遍历SList,j1∈[1,SLFN],j1的初始赋值为1;

(2.19)当满足条件j1≤SLFN时,下一步跳转到(2.20),否则下一步跳转到(2.28);

(2.20)定义循环变量i4用于遍历SLog,i4∈[1,SLN],i4的初始赋值为1;

(2.21)当满足条件i4≤SLN时,下一步跳转到(2.22),否则下一步跳转到(2.19);

(2.22)定义计数器SFCount,令SFCount=0;

(2.23)当Slog中的FName和SList中的FName相等时,下一步跳转到(2.24);

(2.24)令SFCount=SFCount+1;

(2.25)i4=i4+1,下一步跳转到(2.21);

(2.26)将SFCount的值赋值给count,并将FName和count记录在集合SFDcount中;

(2.27)j1=j1+1,下一步跳转到(2.19);

(2.28)得到小文件下载次数集合SFDcount。

进一步地,所述步骤(3)包括以下步骤:

(3.1)定义常量时间T,定义用户在下载FNamei后T时间内下载其他文件的集合为STDL={[FName1,FName2,Dcount12],[FName2,FName3,Dcount23]…[FNamei,FNamej,Dcountij]},Dcountij表示用户在下FNamei后T时间内下载FNamej的次数,Dcountij∈[0,+∞],默认值是0;

(3.2)定义小文件关联度集合SRL,SRL={[FName1,FName2,Relevance12],[FName2,FName3,Relevance23]…[FNamei,FNamej,Relevanceij]},Relevanceij表示FNamei和FNamej之间的关联度,Relevanceij∈(0,+∞];

(3.3)定义循环变量i5用于遍历SLog,i5∈[1,SLFN],i5的初始赋值为1;

(3.4)当满足条件i5≤SLFN时,下一步跳转到(3.5),否则下一步跳转到(3.7);

(3.5)若文件FNamei的FTime<T时下载了FNamej,则将FNamei,FNamej,Dcountij=Dcountij+1添加到STDL中;

(3.6)i5=i5+1,下一步跳转到(3.4);

(3.7)计算得到STDL的结果;

(3.8)定义概率P为在下载FNamei后T时间内下载FNamej的概率;

(3.9)P的计算公式为:

(3.10)定义循环变量i6用于遍历STDL,i6∈[1,len(STDL)],i6的初始赋值为1;

(3.11)当满足条件i6≤len(STDL)时,下一步跳转到(3.12),否则下一步跳转到(3.14);

(3.12)根据(3.9)中的公式,将列表STDL中的数据带入计算,得到概率Pij,将FNamei,FNamej,Relevanceij,添加到列表SRL中;

(3.13)i6=i6+1,下一步跳转到(3.11);

(3.14)得到最终的文件关联计算结果STDL。

进一步地,所述步骤(4)包括以下步骤:

(4.1)定义循环变量j2用于遍历STDL,j2的初始赋值为2;

(4.2)将上述得到的SRL按照Relevance进行倒序排序,得到新的集合SRLS;

(4.3)当满足条件j2≤len(SRLS)时,下一步跳转到(4.4),否则下一步跳转到(4.10);

(4.4)定义计数器C,令C=0;

(4.5)定义初始文件BMF,BMF={[BMF1,C1],[BMF2,C2],…,[BMFBMFN,CBMFN]},BMFn为初始文件的第n个元素,BMFN为初始文件的总个数,n∈[1,BMFN];

(4.6)若FNamei和FNamej的Relevanceij≥50%;

(4.7)则C=C+1,将SFNamei赋值给BMFi,并将Ci添加到集合BMF中;

(4.8)j2=j2+1,下一步跳转到(4.3);

(4.9)定义循环变量i7用于遍历BMF,i7的初始赋值为1;

(4.10)当满足条件i7≤BMFN时,下一步跳转到(4.11),否则下一步跳转到(4.14);

(4.11)若Ci<3,则下一步跳转到(4.12),否则下一步跳转到(4.10);

(4.12)将当前BMF集合中的这条数据删除;

(4.13)i7=i7+1,下一步跳转到(4.10);

(4.14)得到初始文件BMF集合。

进一步地,所述步骤(5)包括以下步骤:

(5.1)定义文件合并集合BMFL,BMFL={BMFL1,BMFL2,…,BMFLBMLN},BMFLn为初始文件的第n个元素,BMLN为初始文件的总个数,n∈[1,BMFLN];

(5.2)定义循环变量j3用于遍历STDL,j3的初始赋值为1;

(5.3)当满足条件j3≤len(SRLS)时,若不满足则跳转到(5.11);

(5.4)当存在于STDL中的文件同时存在于BML中时;

(5.5)将Relevanceij≥50%的文件进行统计;

(5.6)令文件总大小为TFSize;

(5.7)TFSize=TFSize+FileSize;

(5.8)当TFSize<128M时;

(5.9)把待合并的小文件信息存储到BMFL集合中;

(5.10)j3=j3+1,下一步跳转到(5.3);

(5.11)得到最终的文件合并结果BMFL。

进一步地,所述步骤(6)包括以下步骤:

(6.1)采用数据封装方式,开放Web服务接口,提供给高校智慧校园文件管理系统高校智慧校园文件管理系统;

(6.2)创建线程池ThreadPool;

(6.3)判断线程池ThreadPool中所有子线程是否都结束,如果结束则进入(6.9),否则进入(6.4);

(6.4)系统开始记录用户的操作,得到文件操作日志LogList;

(6.5)定义子线程ChildThread,用于处理计算LogList;

(6.6)定义小文件关联度计算接口SRAPI,对用户的操作日志LogList拆分成不同批次,进行并行计算;

(6.7)合并不同批次的计算结果,得到最终的文件合并结果BMFL;

(6.8)结束该子线程ChildThread,进入(6.3);

(6.9)关闭线程池ThreadPool;

(6.10)将计算得到的文件合并结果BMFL返回给Web接口。

基于相同的发明构思,本发明还提供一种基于HDFS的分布式智慧校园文件管理系统优化装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述计算机程序被加载至处理器时实现上述的基于HDFS的分布式智慧校园文件管理系统优化方法。

有益效果:与现有技术相比,本发明的有益效果:本发明使用小文件合并关联算法,通过分析用户的操作日志信息,根据文件关联算法,计算得出不同文件之间关联的概率,并将符合条件的小文件进行合并;本发明采用数据封装方式,向智慧校园文件管理系统提供Web服务调用的接口,改变了传统高校存储海量数据的方式,减少了存储大量小文件后,文件元数据信息所占用的内存空间。提高了系统在存取小文件时的效率。

附图说明

图1为基于HDFS的分布式智慧校园文件管理系统优化方法流程图;

图2为获取用户下载文件的日志集合流程图;

图3为计算小文件下载次数流程图;

图4为计算小文件关联概率流程图;

图5为获得初始合并文件集合流程图;

图6为获得文件合并集合BMFL流程图;

图7为采用数据封装方式提供Web服务的接口调用流程图。

具体实施方式

下面结合附图对本发明作进一步详细说明。

本实施方式中涉及大量变量,现将各变量作如下说明,如表1所示。

表1变量说明表

本发明提出一种基于小文件关联规则的分布式智慧校园文件管理系统优化方法,如图1所示,具体包括如下步骤:

步骤1:实时监测用户对系统中文件的操作,当检测到用户对文件的下载操作时,记录下用户的操作日志,提取其中的用户的UID,操作时间LogTime,文件的FID,文件的路径FilePath,文件名FileName,文件大小FileSize得到日志集合LogList;如图2所示,具体包括以下步骤:

步骤1.1:搭建Linux系统下的基于HDFS的分布式集群;

步骤1.2:根据Hadoop类库中提供的接口,将数据进行封装;

步骤1.3:定义文件列表FileList,FileList={FileList1,FileList2,…,FileListFN},FileListn为文件列表的第n个元素,FN为文件的总个数,n∈[1,FN];

步骤1.4:定义用户Id为UID,文件ID为FID默认值为1,文件的路径为FilePath,文件名为FileName,文件大小为FileSize;

步骤1.5:定义循环变量i1用于遍历系统中所有文件,i1∈[1,FN],i1的初始赋值为1;

步骤1.6:当满足条件FilePath!=NULL时,下一步跳转到步骤1.7,否则下一步跳转到步骤1.14;

步骤1.7:定义计数器Fcount,初始值为0;

步骤1.8:令Fcount=Fcount+1;

步骤1.9:将浏览器Session中记录的用户Id赋值给UID;

步骤1.10:将系统中文件信息,包括用户的UID,文件FID,文件的路径FilePath,文件名FName,文件大小FileSize记录在文件列表FileList中;

步骤1.11:FID=FID+1;

步骤1.12:i1=i1+1,下一步跳转到步骤1.6;

步骤1.13:FN=Fcount,得到系统中文件列表信息集合FileList;

步骤1.14:在登录系统之后,根据用户的鼠标、键盘等外部设备的操作,Web服务器会自动对用户的请求进行处理,产生请求信息,包括访问地址URLPath,请求方式RequestWay,请求参数Parameters,操作时间为LogTime,操作内容OperationContent,文件路径FilePath;

步骤1.15:定义用户对在文件下载操作时的传给服务器的操作内容是Download;

步骤1.16:拦截器在拦截到用户的请求时会进行判断,当OperationContent=Download时,跳转到步骤(1.17);

步骤1.17:定义文件日志列表LogList,LogList={LogList1,LogList2,…,LogListLFN},LogListn为文件列表的第n个元素,LFN为文件的总个数,n∈[1,LFN];

步骤1.18:从请求信息中提取出文件名FName、操作时间FTime、文件大小FileSize、用户UID、文件FID,并将这些信息添加到LogList中;

步骤1.19:最终经过用户的操作之后得到日志信息LogList。

步骤2:将上述步骤获得到的日志文件LogList,进行数据处理,分析每个日志信息,过滤其中文件大小大于M的日志,得到小文件日志集合SLog,根据SLog计算每个小文件的下载次数count,得到小文件下载次数集合SFDcount;如图3所示,具体包括以下步骤:

步骤2.1:定义小文件列表SList,SList={SList1,SList2,…,SlistSFN},SListn为小文件列表的第n个元素,SFN为小文件的总个数,n∈[1,SFN];

步骤2.2:定义小文件日志列表SLog,SLog={SLog1,SLog2,…,SLogSLFN},SLogn为小文件列表的第n个元素,SLFN为小文件的总个数,n∈[1,SLFN];

步骤2.3:定义循环变量i2用于遍历FileList,将文件列表FileList每一个文件大小FileSize进行遍历,i2∈[1,FN],i2的初始赋值为1;

步骤2.4:当满足条件i2≤FN时,下一步跳转到步骤2.5,否则下一步跳转到步骤2.10;

步骤2.5:若FileListi1的FileSize<=10M,则下一步跳转到步骤2.6,否则下一步跳转到步骤2.4;

步骤2.6:定义小文件的文件Id为SFID,默认值为1;

步骤2.7:将用户的UID,小文件SFID,文件的路径FilePath,文件名FName,文件大小FileSize,添加到小文件列表SList中;

步骤2.8:SFID=SFID+1;

步骤2.9:i2=i2+1,下一步跳转到步骤2.4;

步骤2.10:定义循环变量i3用于遍历LogList,将日志列表LogList中每一个文件大小FileSize进行遍历,i3∈[1,LFN],i3的初始赋值为1;

步骤2.11:当满足条件i3≤LFN时,下一步跳转到步骤2.12,否则下一步跳转到步骤2.17;

步骤2.12:若LogListi3的FileSize<=10M,则下一步跳转到步骤2.13,否则下一步跳转到步骤2.11;

步骤2.13:定义小文件日志Id为SLID,初始值为1;

步骤2.14:将文件LogListi3的SLID、FName、FTime、FileSize都记录在列表SLog中;

步骤2.15:SLID=SLID+1;

步骤2.16:i3=i3+1,下一步跳转到步骤2.11;

步骤2.17:定义小文件下载次数为count,小文件下载次数集合为SFDcount={[FName1,count1],[FName2,count2],…,[FNameSFDN,countSFDN]},SFDN为小文件下载次数集合的总个数,SFDcountn为小文件下载次数集合中第n个元素,n∈[1,SFDN];

步骤2.18:定义循环变量j1用于遍历SList,j1∈[1,SLFN],j1的初始赋值为1;

步骤2.19:当满足条件j1≤SLFN时,下一步跳转到步骤2.20,否则下一步跳转到步骤2.28;

步骤2.20:定义循环变量i4用于遍历SLog,i4∈[1,SLN],i4的初始赋值为1;

步骤2.21:当满足条件i4≤SLN时,下一步跳转到步骤2.22,否则下一步跳转到步骤2.19;

步骤2.22:定义计数器SFCount,令SFCount=0;

步骤2.23:当Slog中的FName和SList中的FName相等时,下一步跳转到步骤2.24;

步骤2.24:令SFCount=SFCount+1;

步骤2.25:i4=i4+1,下一步跳转到步骤2.21;

步骤2.26:将SFCount的值赋值给count,并将FName和count记录在集合SFDcount中;

步骤2.27:j1=j1+1,下一步跳转到步骤2.19;

步骤2.28:得到小文件下载次数集合SFDcount。

步骤3:通过计算得出用户在下载小文件FNamei后T时间内下载FNamej的次数集合为STDL。根据STDL集合中的数据,根据文件关联公式进行计算,得出用户在下载小文件FNamei后T时间内下载FNamej的概率,得到小文件关联度集合SRL;如图4所示,具体包括以下步骤:

步骤3.1:定义常量时间T,定义用户在下载FNamei后T时间内下载其他文件的集合为STDL={[FName1,FName2,Dcount12],[FName2,FName3,Dcount23]…[FNamei,FNamej,Dcountij]},Dcountij表示用户在下FNamei后T时间内下载FNamej的次数,Dcountij∈[0,+∞],默认值是0;

步骤3.2:定义小文件关联度集合SRL,SRL={[FName1,FName2,Relevance12],[FName2,FName3,Relevance23]…[FNamei,FNamej,Relevanceij]},Relevanceij表示FNamei和FNamej之间的关联度,Relevanceij∈(0,+∞];

步骤3.3:定义循环变量i5用于遍历SLog,i5∈[1,SLFN],i5的初始赋值为1;

步骤3.4:当满足条件i5≤SLFN时,下一步跳转到步骤3.5,否则下一步跳转到步骤3.7;

步骤3.5:若文件FNamei的FTime<T时下载了FNamej,则将FNamei,FNamej,Dcountij=Dcountij+1添加到STDL中;

步骤3.6:i5=i5+1,下一步跳转到步骤3.4;

步骤3.7:计算得到STDL的结果;

步骤3.8:定义概率P为在下载FNamei后T时间内下载FNamej的概率;

步骤3.9:P的计算公式如下

步骤3.10:定义循环变量i6用于遍历STDL,i6∈[1,len(STDL)],i6的初始赋值为1;

步骤3.11:当满足条件i6≤len(STDL)时,下一步跳转到步骤3.12,否则下一步跳转到步骤3.14;

步骤3.12:根据步骤3.9中的公式,将列表STDL中的数据带入计算,得到概率Pij,将FNamei,FNamej,Relevanceij,添加到列表SRL中;

步骤3.13:i6=i6+1,下一步跳转到步骤3.11;

步骤3.14:得到最终的文件关联计算结果STDL。

步骤4:跟据SRL确定将哪些小文件进行合并,将结果进行分析计算,将文件关联概率P(FName_j│FName_i)>50%,并且统计符合该条件的文件的数量大于3时,将该文件放入到初始合并文件集合BMF;如图5所示,具体包括以下步骤:

步骤4.1:定义循环变量j2用于遍历STDL,j2的初始赋值为1;

步骤4.2:将上述得到的SRL按照Relevance进行倒序排序,得到新的集合SRLS;

步骤4.3:当满足条件j2≤len(SRLS)时,下一步跳转到步骤4.4,否则下一步跳转到步骤4.10;

步骤4.4:定义计数器C,令C=0;

步骤4.5:定义初始文件BMF,BMF={[BMF1,C1],[BMF2,C2],…,[BMFBMFN,CBMFN]},BMFn为初始文件的第n个元素,BMFN为初始文件的总个数,n∈[1,BMFN];

步骤4.6:若FNamei和FNamej的Relevanceij≥50%;

步骤4.7:则C=C+1,将SFNamei赋值给BMFi,并将Ci添加到集合BMF中;

步骤4.8:j2=j2+1,下一步跳转到步骤4.3;

步骤4.9:定义循环变量i7用于遍历BMF,i7的初始赋值为1;

步骤4.10:当满足条件i7≤BMFN时,下一步跳转到步骤4.11,否则下一步跳转到步骤4.14;

步骤4.11:若Ci<3,则下一步跳转到步骤4.12,否则下一步跳转到步骤4.10;

步骤4.12:将当前BMF集合中的这条数据删除;

步骤4.13:i7=i7+1,下一步跳转到步骤4.10;

步骤4.14:得到初始文件BMF集合。

步骤5:为了避免文件冗余,在得到初始合并文件集合BMF后,将计算文件合并后的大小,确保数据块的大小不超出初始设定的HDFS块大小。已经合并过的文件就不再合并,最终得到文件合并集合BMFL;如图6所示,具体包括以下步骤:

步骤5.1:定义文件合并集合BMFL,BMFL={BMFL1,BMFL2,…,BMFLBMLN},BMFLn为初始文件的第n个元素,BMLN为初始文件的总个数,n∈[1,BMFLN];

步骤5.2:定义循环变量j3用于遍历STDL,j3的初始赋值为1;

步骤5.3:当满足条件j3≤len(SRLS)时,若不满足则跳转到步骤(5.11);

步骤5.4:当存在于STDL中的文件同时存在于BML中时;

步骤5.5:将Relevanceij≥50%的文件进行统计;

步骤5.6:令文件总大小为TFSize;

步骤5.7:TFSize=TFSize+FileSize;

步骤5.8:当TFSize<128M时;

步骤5.9:把待合并的小文件信息存储到BMFL集合中;

步骤5.10:j3=j3+1,下一步跳转到步骤5.3;

步骤5.11:得到最终的文件合并结果BMFL;

步骤6:采用数据封装的方式,得到用户操作日志信息LogList后,根据小文件关联算法进行计算,将得到的小文件合并结果BMFL返回给Web服务接口,提供给高校智慧校园文件管理系统使用;如图7所示,具体包括以下步骤:

步骤6.1:采用数据封装方式,开放Web服务接口,提供给高校智慧校园文件管理系统高校智慧校园文件管理系统;

步骤6.2:创建线程池ThreadPool;

步骤6.3:判断线程池ThreadPool中所有子线程是否都结束,如果结束则进入步骤6.9,否则进入步骤6.4;

步骤6.4:系统开始记录用户的操作,得到文件操作日志LogList;

步骤6.5:定义子线程ChildThread,用于处理计算LogList;

步骤6.6:定义小文件关联度计算接口SRAPI,对用户的操作日志LogList拆分成不同批次,进行并行计算;

步骤6.7:合并不同批次的计算结果,得到最终的文件合并结果BMFL;

步骤6.8:结束该子线程ChildThread,进入步骤6.3;

步骤6.9:关闭线程池ThreadPool;

步骤6.10:将计算得到的文件合并结果BMFL返回给Web接口。

基于相同的发明构思,本发明还提供一种基于HDFS的分布式智慧校园文件管理系统优化装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述计算机程序被加载至处理器时实现上述的基于HDFS的分布式智慧校园文件管理系统优化方法。

为了更好的说明本方法的有效性,通过对随机生成的大量小文件上传到文件系统中,之后通过随机生成各个文件之间的访问日志,再进行本方法的小文件合并之后,比较未合并前系统内存的占用量下降了89%,有效的减少了内存资源的浪费。本发明可与计算机系统结合,从而完成对智慧校园中分布式文件管理系统的构建。

本发明提出的基于小文件关联规则的分布式智慧校园文件管理系统优化方法不但可以用于高校中的分布式文件系统小文件存储优化,也可以用于其他应用系统中小文件存储优化。

以上所述仅为本发明的实施例子而己,并不用于限制本发明。凡在本发明的原则之内,所作的等同替换,均应包含在本发明的保护范围之内。本发明未作详细阐述的内容属于本专业领域技术人员公知的已有技术。

27页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:扫描文件获取方法、计算机装置及计算机可读存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!