智慧城市中时空数据小文件合并方法与流程

文档序号:15272071发布日期:2018-08-28 22:33阅读:270来源:国知局

本发明涉及智慧城市中时空数据小文件合并策略研究领域。



背景技术:

在以物联网、云计算为基础的智慧城市中,无所不在的传感器时刻产生着包含有时间、空间和类型三大固有属性的传感数据,这些数据体积小(通常在几十到几百kb)、种类繁多、数量庞大,冗余性高且随时间动态增长,属于典型的时空数据小文件。

当前主流的分布式文件系统在元数据管理、数据布局、条带设计、缓存管理等实现策略上都侧重于大文件。目前较为通用的分布式文件系统有googlegfs、hadoophdfs、pvfs以及lustre等。这些文件系统均采用了主从结构的集中式数据管理机制,将文件的元数据(描述数据的数据,如名字空间、访问控制信息、文件位置、大小等)和数据块文件分开存储。系统中的管理者为mds(metadataserver,mds),它除了保存文件的元数据外,还负责维护数据存储节点的ip、状态等信息。而工作者即为数据存储服务器(datastorageserver,dss)。典型主从结构的分布式文件系统及访问机制如图1所示。从图中可以看出,client每发出一个文件访问请求,都要先与mds进行通信,获取到元数据信息后,再与dss建立文件传输链接。显然,大规模高并发的小文件访问请求将会使client-mds之间频繁通信,占据系统有限的带宽和计算资源,从而使得mds变成系统性能的瓶颈,严重影响数据访问性能,增加文件访问的响应时间。

海量时空数据小文件及相关应用给人们生活带来便利的同时,也严重影响了系统的访问性能。主要体现在:①内存占用率高:海量小文件占用大量的元数据服务器内存,系统存储的文件总数受限于内存容量;②元数据服务器负载大:文件的操作都要通过元数据服务器进行,频繁的交互使得元数据服务器负载过大,容易成为整个系统访问性能的瓶颈;③文件的存取效率低:文件的每一次存储和读取,都要与元数据服务器进行通信,相对于文件自身少量的数据传输时间,大部分时间都花在了系统开销上。

研究表明(wangf,xinq,hongb,etal.filesystemworkloadanalysisforlargescalescientificcomputingapplications[c].ieee.2004:139-152.),在基于小文件的应用服务系统中,用户对小文件的请求数超过所有请求数的90%,而访问的数据量却不到所有访问数据的10%。海量小文件严重影响到系统的数据访问性能。小文件合并作为一种微观的数据布局机制,可以根据将多个不同的小文件合并成大文件,一方面减少客户端client和元数据服务器之间通信次数,另一方面也能减轻mds负载,提升小文件访问性能。但是,现有的关于小文件合并研究,都把焦点放在了改进存储系统结构和分析文件自身特性上。当前,针对小文件问题的研究归纳起来可以分为两种:

(1)改进系统架构

马等人(马灿,孟丹,熊劲.曙光星云分布式文件系统:海量小文件存储[j].小型微型计算机系统,2012,7(33):1481-1482.)针对海量小文件的访问延时问题,通过改进的分布式可扩展哈希对元数据进行组织和管理,提出了一个基于分布式表存储的文件系统hvfs,实现了小文件的高效存取。zhang等人(张启飞,张尉东,李文娟,等.基于对等网络的面向小文件的云存储系统[j].浙江大学学报:工学版,2013(1):214-215.)通过引入中心路由节点,用来存储系统中所有节点的路由和状态信息,并结合客户端的路由信息预取机制,降低了资源的查询时间,解决了基于对等网络(p2p)分布式云存储系统的小文件访问效率问题,但该方法的访问性能受中心节点限制且成本较高。付等人(付松龄,廖湘科,黄辰林,等.flatlfs:一种面向海量小文件处理优化的轻量级文件系统[j].国防科技大学学报,2013,35(2):120-126.)摒弃了传统文件系统的层次文件管理模式,设计了一个扁平式的数据存储轻量级文件系统flatlfs,以牺牲灵活性为代价换来了小文件存取的高效率。赵等人(赵跃龙,谢晓玲,蔡咏才,等.一种性能优化的小文件存储访问策略的研究[j].计算机研究与发展,2012,49(7):1579-1586.)考虑到存储系统中小文件的访问和布局特征,首先使用cache充当元数据服务器,然后将逻辑上连续的小文件最大程度的放在连续磁盘空间,通过提高预取命中率和减小磁盘寻道时间提升小文件的i/o性能,但该方法中cache容量容易成为系统访问性能瓶颈。zhang等人(zhangzh,ghosek.hfs:ahybridfilesystemprototypeforimprovingsmallfileandmetadataperformance[c].acmproceedingsofthe2007eurosysconferenceonoperatingsystemsreview,2007,175-187)结合了快速文件系统ffs和逻辑结构文件系统lfs的各自优点,设计了一种混合的文件系统hfs,通过将大文件数据块存储在ffs部分的数据区,元数据和小文件存储在lfs的逻辑区,实现了小文件的高效访问。

(2)利用文件自身特性合并

小文件合并技术可以将多个小文件合并成大文件后存储存至dss中。一方面,使得client-mds之间通信一次即可获取多个小文件的元数据信息,避免了每次交互只传输很小的数据量,提升系统带宽利用率;另一方面,作为分布式文件系统的管理中心,mds负载过重会导致系统性能下降,小文件合并可以降低mds中存储的文件元数据信息量,减小mds存储负载。

最初的小文件合并方法有hadooparchive(har)归档文件技术、sequencefile序列文件技术和mapfile。随后,2001年余等人(余思,桂小林,黄汝维,等.一种提高云存储中小文件存储效率的方案[j].西安交通大学学报,2011,45(6):59-60.)综合考虑了小文件的读取时间、合并时间和内存占用率,运用多维属性决策理论,采用序列文件技术将小文件合并为大文件。该方法很好的降低了内存消耗,提高了小文件的存储效率,但没有提出相关方法用来提高文件的读取效率。jiang等人(jiangl,lib,songml.theoptimizationofhdfsbasedonsmallfiles[a].broadbandnetworkandmultimediatechnology(ic-bnmt),20103rdieeeinternationalconferenceondateofconference[c]:26-28oct.2010.912-915.)一方面将小文件合并成大文件,另外一方面还把部分小文件的元数据信息存放在datanode内存中,从而进一步减轻了namenode的内存消耗,提高了小文件读取速度。dong等人(dongb,zhengqh,tianf.anoptimizedapproachforstoringandaccessingsmallfilesoncloudstorage[j].journalofnetworkandcomputerapplicationsvolume35,issue6,november2012,1847-1862.)根据实际应用特点和文件自身特性,将小文件分为结构相关、逻辑相关和独立文件三种类型,并由此制定出了小文件合并策略。liu等人(liuxh,hanjz,zhongyq.implementingwebgisonhadoop:acasestudyofimprovingsmallfilei/operformanceonhdfs[c].clustercomputingandworkshops,2009.cluster'09.ieeeinternationalconferenceondateofconference,2009:1-8.)在hadoop平台上,利用webgis中的应用特点和用户访问特性,将相邻地理位置信息的小文件合并,并为其建立全局索引,有效的提高小文件的存储效率。dong等人(dongb,qiuj,zhengq,etal.anovelapproachtoimprovingtheefficiencyofstoringandaccessingsmallfilesonhadoop:acasestudybypowerpointfiles[m].ieee,2010.)针对bluesky系统中ppt课件的存储和访问问题,考虑到课件间的相关性和访问的局部性,提出了将属于同一个课件的文件合并成一个大文件,并利用两级预取机制进行读取的小文件合并机制。张等人(张春明,芮建武,何婷婷.一种hadoop小文件存储和读取的方法[j].计算机应用与软件,2012(11):95-100.)从小文件之间的相关性和目录结构出发,通过为合并后的大文件建立分层索引,并在用户访问时实现索引文件的预加载,提高了小文件的读取效率。

从上述研究工作中可以看出,通过改进系统结构或利用文件自身特性合并,均能提升小文件的访问性能。而且,在不改变系统架构或提升硬件性能前提下,小文件合并作为一种微观的数据布局机制,可以有效降低存储系统中管理节点的负担和通信开销,提升小文件的存储和访问性能。

但是,现有小文件合并策略都是利用文件自身特性(上文中,小文件的读取时间、用户访问特性(主要指用户访问次数、停留时间等),都是与具体文件直接相关,同属于文件自身特性),只能合并历史上被访问过的文件,或者简单的进行时空相邻文件的合并,并没有深层次的利用用户访问信息。而智慧城市中海量时空数据小文件合并的目的是减小用户访问延时,提供更为方便快捷的时空数据服务。因此,除了文件自身特性之外,用户访问行为的其他特性也会对合并后访问性能产生重要影响,这正是目前研究所欠缺的。



技术实现要素:

本发明所要解决的技术问题是,深层次的利用用户访问信息,提供一种基于用户访问行为在某个时空范围内会较为聚集的时空特性指导小文件合并的方法,该方法关注用户对什么地方、什么时间、什么类型数据具有更大的兴趣和访问热度,将这类数据进行合并,可以明显提高数据的访问效率,而且对历史上未被用户访问过的数据或新生数据,均能进行合并。

用户访问行为(用户对小文件的访问行为)在某个时空范围内会表现得较为聚集,即该时空范围内的小文件表现出访问相关性,基于该发现,本发明一种智慧城市中时空数据小文件合并方法通过如下技术方案实现:利用数据挖掘算法,从历史的小文件访问信息中挖掘出具有访问相关性的时空范围,然后将该时空范围内的小文件进行合并。

推荐的数据挖掘算法包括关联规则中的apriori、fp-growth、can-tree算法等,聚类中的层次聚类算法agnes(agglomerativenesting)、密度聚类算法dbscan等,目的都是通过对历史的用户访问信息进行挖掘,挖掘出具有访问相关性的时空范围。

这些算法除了计算复杂度和所占用的存储空间不同,更重要的是,如果使用关联规则算法,则需要考虑挖掘出来的关联文件的位置信息,然后取相邻地理区域的关联文件计算空间范围;如果使用密度聚类算法,则需要考虑聚类后的簇形状,再结合实际应用场景,对簇内所包含的文件进行选择并计算空间范围。本发明推荐采用agnes聚类算法,因为其简单有效,不需要考虑聚类后簇的形状。

利用层次聚类算法agnes,从历史的小文件访问信息中挖掘出具有访问相关性的时空范围,然后将该时空范围内的小文件进行合并的过程如下:

1)将历史的用户访问信息进行参数化表示和时空属性提取;

根据时空数据小文件的定义,每个文件均包含固有的位置属性l类型属性s以及时间属性t,所以,任意小文件均可用其时空三要素表示(l,s,t);

假设智慧城市中产生的时空数据小文件集为f={f1,f2,…,fm},包含的位置属性集合可表示为l={l1,l2,…,lm},时间属性集合为t={t1,t2,…,tm},类型属性集合为s={s1,s2,…,sm},用户通过访问智慧城市中的应用服务,产生的小文件访问请求序列为a=(a1,a2,…an),其中每个请求项ai,1≤i≤n均对应于一个时空数据小文件fi,1≤i≤n;对该请求序列进行参数化表示和时空属性提取后,形成时空属性序列:

a=(a1,a2,…an)=((l1,s1,t1),(l2,s2,t2),…,(ln,sn,tn))(1);

2)文件合并

2.1)类型属性分类:从历史的小文件访问请求序列a=(a1,a2,…,an)中将包含类型属性为si,si∈s的访问请求序列分离出来;

2.2)时空聚类:利用层次聚类算法agnes对访问请求序列分别进行位置属性的聚类和时间属性的聚类,得到位置属性的合并范围和时间属性的合并范围;

2.3)小文件合并:根据位置属性、时间属性的合并范围对类型属性为si的小文件进行合并;

2.4)循环步骤2.1)-2.3),计算出不同属性小文件的时空合并范围(即位置属性、时间属性的合并范围)分别进行合并,并建立索引。

本发明在时空聚类之前,先进行了类型属性的分类,因为通常来说,用户对不同类型属性的小文件有着不同的访问特性,对应的具有访问相关性的时空范围通常不一样。在聚类之前进行类型属性分类,能得到一个更为准确的时空合并范围。

作为推荐方案:步骤2.2)中,利用层次聚类算法agnes对访问请求序列分别进行位置属性的聚类和时间属性的聚类,并对聚类结果进行基于访问密度的加权计算,然后利用加权后的结果得到位置属性的合并范围和时间属性的合并范围。对聚类结果进行基于访问密度的加权计算,可减小噪声点对计算结果的影响,使计算出来的时空范围最大程度上代表访问相关文件对应的时空范围。

上述步骤2.2)中,位置属性的合并范围推荐通过如下方式获取:

(1a)请求里包含的位置属性集合表示为将位置属性集合里的每个坐标作为一个簇;

(2a)计算每个簇之间的组平均距离,找到距离最近的两个簇进行合并;

(3a)重复步骤(2a),直到任意两个簇之间的组平均距离均大于预定义的距离阈值聚类算法结束;预定义的所述距离阈值为位置属性集合里所有坐标点之间距离的平均值;

(4a)假设步骤(3a)聚类过程结束后,生成的簇集合为利用这个簇集合,计算它们的平均空间范围,并根据用户的访问热度,即每个簇内坐标点的密度(个数),为簇的空间范围半径进行加权,密度越大权值也越大;

(5a)最后,再对簇集合内所有的簇加权后的空间范围半径取平均,计算出类型属性si,si∈s的时空数据小文件对应的位置属性合并范围。

本发明利用平均连接算法,通过计算组平均距离来定义两个簇之间的相似度,组平均距离越近的簇相似度越高,有利于保证聚类过程中对离群点或噪声点不过分敏感。

上述步骤2.2)中,时间属性的合并范围推荐通过如下方式获取:

(1b)请求里包含的时间属性集合表示为将时间属性集合里的每个坐标作为一个簇;

(2b)计算每个簇之间的组平均时间差,找到时间差最小的两个簇进行合并;

(3b)重复步骤(2b),直到任意两个簇之间的组平均时间差均大于预定义的时间差阈值聚类算法结束;预定义的所述时间差阈值为时间属性集合里所有时间点之间差值的平均值;

(4b)假设步骤(3b)聚类过程结束后,生成的簇集合为利用这个簇集合,计算它们的平均时间跨度范围,并根据用户的访问热度,即每个簇内时间属性点的密度(个数),为簇的时间跨度半径进行加权,密度越大权值也越大;

(5b)最后,再对簇集合内所有的簇加权后的时间跨度半径取平均,计算出类型属性si,si∈s的时空数据小文件对应的时间属性合并范围。

与位置属性一样,本发明利用平均连接算法,通过计算组平均时间差来定义两个簇之间的相似度,组平均时间差越小的簇相似度越高,有利于保证聚类过程中对离群点或噪声点不过分敏感。

上述步骤2.3)实现的过程推荐如下:

假设小文件数据集f={f1,f2,…,fm}中类型属性为si,si∈s的时空数据小文件位置属性集合为时间属性集合为根据步骤2.2)挖掘出来的位置属性合并范围和时间属性合并范围对类型属性为si的小文件合并步骤如下:

(1c)创建一个文件;

(2c)以时间属性集合里最靠前(最早)的时间属性tv为参考点,找到与其时间跨度小于等于的时间属性组成集合range_tv;

(3c)以位置属性集合里任意一个位置属性lu为参考点,找到与其空间距离小于等于的位置属性组成集合range_lu;

(4c)将位置属性属于range_lu,时间属性属于range_tv的时空小文件合并步骤(1c)创建的文件中;

(5c)如果合并后的文件总大小大于预定义的大文件存储容量,跳转至步骤(6c);如果合并后的文件总大小小于预定义的大文件存储容量,则跳转至步骤(7c);

(6c)将集合range_tv里已经参与合并的时间属性从中删除维持当前的位置属性参考点lu不变,循环执行步骤(1c-5c);

(7c)将集合range_tv里的时间属性从中删除循环执行步骤(2c-5c),直至将位置属性集合range_lu、时间属性集合内所有的小文件都进行了合并;

(8c)如果此时合并后的文件总大小还不够预定义大文件存储容量,将集合range_lu里的位置属性从中删除重置时间属性集合执行步骤(2c-5c);

(9c)循环执行步骤(1c-8c),直至将位置属性集合为时间属性集合为类型属性为si的小文件全部合并。

目前常见的分布式存储系统,比如hdfs,其底层存储都是以数据块(datablock)为单位,通常情况下系统默认为64mb。当进行文件存储时,必须达到一个数据块的大小,系统才会将其放入底层磁盘中。因此,分布式存储系统进行小文件存储时,合并是必须的。并且,合并的时候需要判断是否装满了整个数据块,只有装满了一个数据块,才能放入底层磁盘中。否则,上传的小文件会一直放在客户端的缓存队列中,直至达到64mb,系统才会执行文件的写操作,以数据块的形式存储在底层的磁盘中。当然,数据块大小是可以自定义的,比如128mb,这时候我们合并的小文件总容量必须达到128mb,才能存储至底层磁盘中。智慧城市中产生的小文件属于典型的流数据,同一空间范围随时间会不断产生新的数据。因此,智慧城市中产生的小文件数据,其对应的空间属性范围是有限的(比如一个城市的空间区域),但其时间属性范围是无限的。因此,为能够有效的合并现有及后续新增数据,本发明在进行小文件合并时,会根据文件自身的时间属性,先合并同一位置属性范围内最早产生的数据,然后继续合并当前位置属性范围内下一个时间段产生的数据,直至该位置属性范围内所有的小文件数据都合并完。接着继续找到下一个位置属性范围,根据时间属性的先后顺序对该范围内的小文件继续合并,以此达到遍历整个地理区域的所有小文件数据,并对它们进行合并的目的。

步骤2.4)中,文件合并后,在生成的大文件内部建立本地索引,用来存储小文件的长度和在大文件内部的偏移位置,这样应用服务器在处理数据请求时,就可以直接通过文件内部索引进行定位,从而方便快捷的获得所需小文件数据。合并好的大文件尽可能的放在底层数据存储服务器内同一节点连续存储区间,因为一些原本连续的小文件很可能放在了大文件的边缘位置,当用户访问它时,客户端需要跨大文件甚至跨数据存储服务器读取,影响小文件的访问性能。

与现有技术相比,本发明具有以下有益效果:

本发明利用用户访问文件的时空相关性,从历史访问信息中,挖掘出隐藏的时空范围,利用该时空范围指导小文件的合并,实验结果表明,本发明合并算法简单高效,可减小mds内存消耗和client-mds之间通信次数,极大的提高系统内时空数据小文件的访问效率;另外,本发明是根据访问相关文件的时空范围合并文件,与用户访问次数、停留时间等这些文件自身特性无关,所以能对系统内所有的文件进行合并,无论用户是否访问过,对新生数据也可以进行合并。

附图说明

图1表示主从结构的分布式文件系统及访问机制;

图2用于表明数据对象{a,b,c,d,e}的agnes聚类过程;

图3用于表明合并后生成的大文件结构;

图4用于表明系统中存储文件的大小分布;

图5用于表明mds存储负载情况;

图6用于表明小文件的存储速度;

图7用于表明小文件访问的总平均响应时间。

具体实施方式

智慧城市为给用户提供方便快捷的时空数据服务,往往是通过网络平台,以预定义应用的方式给公众提供时空数据应用服务。系统在接收到用户的应用访问请求之后,会根据用户选择的预定义应用及时空参数,对一定时空范围内的数据进行访问,然后在后台利用功能函数对访问到的数据进行分析和处理,最后将结果返回给用户。

显然,如果在某一空间范围、时间跨度内的小文件被用户频繁访问,则说明该时空范围内的小文件访问相关。受这个启发,本实施例考虑利用层次聚类算法,从历史的小文件访问信息中挖掘出这种具有访问相关性的时空范围,并利用该范围指导系统内小文件的合并,由此减小mds内存消耗和client-mds之间通信次数,降低用户访问延时。

本实施例智慧城市中时空数据小文件合并方法,具体包括如下步骤:

步骤1)将历史的用户访问信息进行参数化表示和时空属性提取

具体:根据时空数据小文件的定义,每个文件均包含固有的位置属性l类型属性s以及时间属性t。因此,任意小文件均可用其时空三要素表示(l,s,t)。

假设智慧城市中产生的时空数据小文件集为f={f1,f2,…,fm},包含的位置属性集合可表示为l={l1,l2,…,lm},时间属性集合为t={t1,t2,…,tm},类型属性集合为s={s1,s2,…,sm}。用户通过访问智慧城市中的应用服务,产生的小文件访问请求序列为a=(a1,a2,…an),其中每个请求项ai,1≤i≤n均对应于一个时空数据小文件fi,1≤i≤n。对该请求序列进行参数化表示和时空属性提取后,形成时空属性序列:

a=(a1,a2,…an)=((l1,s1,t1),(l2,s2,t2),…,(ln,sn,tn))(1)。

步骤2)文件合并

2.1)类型属性分类:从历史的小文件访问请求序列a=(a1,a2,…,an)中将包含类型属性为si,si∈s的访问请求序列分离出来;

2.2)时空聚类:利用层次聚类算法agnes对访问请求序列分别进行位置属性的聚类和时间属性的聚类,并对聚类结果进行基于访问密度的加权计算,然后利用加权后的结果得到位置属性的合并范围和时间属性的合并范围;

2.3)小文件合并:根据位置属性、时间属性的合并范围对类型属性为si的小文件进行合并;

2.4)循环步骤2.1)-2.3),计算出不同属性小文件的时空合并范围(即位置属性、时间属性的合并范围)分别进行合并,并建立索引。

步骤2.2)中,位置属性的合并范围获取过程如下:

位置属性的合并范围其实就是求解多大空间范围内的小文件应该被合并在一起。因此,通过对历史的小文件访问请求序列进行位置属性聚类,形成不同的簇,然后对这些簇进行分析计算,得到一个加权后的平均簇半径,这个半径就是合并的空间范围,也即是关于位置属性的合并规则。

a.基于agnes算法的位置属性聚类

agnes算法是一种经典的基于凝聚的层次聚类方法。初始时,agnes将每个对象作为一个簇,然后这些簇根据某种准则被一步一步地合并。例如,簇c1中的一个对象和簇c2中的一个对象之间的距离是所有属于不同簇对象之间欧式距离中最小的,则认为它们是相似的,c1和c2可能被合并。聚类过程中,每一个簇都用簇中所有对象代表,两个簇间的相似度由这两个簇中距离最近的数据点的相似度来确定,簇合并的过程反复进行,直到所有对象最终合并成一个簇。基于凝聚的agnes算法的聚类过程如图2所示。

假设本文考虑的智慧城市中的时空数据小文件的位置属性均为二维,即用经纬度坐标可表示为:

l={l1,l2,l3,…}={(x1,y1),(x2,y2),…,(xm,ym)}(2)

那么根据(1)式,用户访问请求序列a中包含有类型属性si的访问请求可表示为:

从而,请求里包含的位置属性集合可表示为:

聚类的目标是使同一簇对象的相似度尽可能地大,不同簇对象之间的相似度尽可能地小。因此,聚类方法的一个核心问题就是,怎么度量两个簇之间相似度。首先要针对时空数据小文件位置属性聚类来定义相似度,其中每一个簇都是一个位置属性集合。为保证聚类过程中对离群点或噪声点不过分敏感,本文利用平均连接算法,通过计算组平均距离来定义两个簇之间的相似度,组平均距离越近的簇相似度越高。

首先定义任意两个位置属性坐标点l=(x,y)与l′=(x′,y′)之间的距离:

假设簇cm包含的坐标点集合为cm=(l1,l2,l3,…),簇cn包含的坐标点为集合为cn=(l′1,l′2,l′3,…),两个簇之间的元素没有交集。那么,簇cm与cn之间的组平均距离为:

其中,nm=card(cm)表示簇cm中坐标点的个数,nn=card(cn)表示簇cn中坐标点的个数。这时候,簇cm=(l1,l2,l3,…)的空间范围半径为:

b.合并范围的产生

根据agnes算法的原理,如果不预先指定聚类算法要生成的簇个数,算法将会把生成的簇一直合并下去,直至将全体对象合并成一个簇。显然,聚类成一个簇相当于没有聚类,那样从原始的位置属性坐标点中就无法找到位置属性的合并规则。但是,由于每种数据类型的时空数据小文件都涉及到很多种应用服务,同时不同用户的访问行为偏好也不同,造成每次访问应用服务都会访问不同时空范围内的小文件数据。因此,我们需要设置一个agnes算法的终止条件。

为此,定义类型属性为si,si∈s的时空数据小文件对应的空间距离阈值为位置属性集合里所有坐标点之间距离的平均值,并用该值作为聚类算法的终止条件:

其中,位置属性坐标点表示位置属性序列包含的坐标点的个数。显然,如果簇与簇之间的组平均距离则它们不能合并成一个簇。当所有簇都不能进行凝聚合并时,agnes算法的聚类过程结束。

下面用agnes算法对包含有类型属性si的访问请求的位置属性序列进行聚类,目的是通过聚类的结果,来区分用户对该类型数据的每一次应用服务访问涉及到的空间范围。聚类过程总结如下:

(1)将位置属性序列里的每个坐标都作为一个簇。

(2)计算每个簇之间的组平均距离,找到距离最近的两个簇进行合并,假如簇之间的组平均距离最近,则将它们合并形成一个新的簇

(3)重复步骤(2),直到任意两个簇之间的组平均距离均大于预定义的距离阈值聚类算法结束。

假设聚类过程结束后,生成的簇集合为下面要做的就是利用这个簇集合,计算它们的平均空间范围。显然,如果某一簇内包含的位置属性点很密集,这说明其对应的空间范围为用户访问该类型属性小文件的热点区域。

因此,为减小噪声点对计算结果的影响,使计算出来的空间范围最大程度上代表访问相关文件对应的时空属性范围。可以根据用户的访问热度,即每个簇内坐标点的密度(个数),为簇的空间范围半径进行加权,密度越大权值也越大。那么,对于簇1≤k≤kl,对其按照访问密度加权后的空间范围半径为:

其中,表示簇包含的坐标点个数,表示位置属性序列包含的坐标点个数,为簇的空间范围半径。最后,再对集合内所有的簇加权后的空间范围半径取平均,计算类型属性si,si∈s的时空数据小文件对应的位置属性合并范围:

步骤2.2)中,时间属性的合并范围获取过程如下:

时间属性的范围规则其实就是多长时间跨度内的小文件应该被合并在一起。和前面的位置属性一样,通过对历史的小文件访问信息进行时间属性聚类。不同的是聚类的对象由二维的经纬度坐标变成了一维的时间属性。

a.基于agnes算法的时间属性聚类

和前面的位置属性聚类一样,请求里包含的时间属性集合可表示为:

首先定义簇与簇之间的相似度,其中每一个簇都是一组时间属性的集合。通过计算组平均时间差来定义两个簇之间的相似度,组平均时间差越接近的簇相似度越高。定义任意两个时间属性点之间的时间差值:

d(t,t′)=|t-t′|(12)

假设簇cm包含的时间属性点集合为cm=(t1,t2,t3,…),簇cn包含的时间属性点集合为cn=(t′1,t′2,t′3,…),两个簇之间的元素没有交集。那么,簇cm与cn之间的组平均时间差为:

其中,nm=card(cm)表示簇cm中时间属性点的个数,nn=card(cn)表示簇cn中时间属性点的个数。这时候,簇cm=(t1,t2,t3,…)的时间范围半径为:

b.合并范围的产生

和前面计算位置属性根据agnes算法的原理,定义类型属性为si,si∈s的时空数据小文件对应的时间差阈值为时间属性集合里所有时间点之间差值的平均值,并用该值作为聚类算法的终止条件:

其中,时间属性点表示时间属性序列包含的坐标点的个数。显然,如果簇与簇之间的组平均时间差则它们不能合并成一个簇。当所有簇都不能进行凝聚合并时,聚类结束。

下面用agnes算法对包含有类型属性si的访问请求的时间属性序列进行聚类,目的是通过聚类的结果,来区分用户对该类型数据的每一次应用服务访问涉及到的时间跨度范围。聚类的过程和前面的位置属性一样。

假设聚类过程结束后,生成的簇集合为利用簇内时间属性点的密度,对簇的时间跨度进行加权,密度越大权值越大。那么,对于簇对其按照访问密度加权后的时间范围半径为:

其中,表示簇包含的时间属性的个数,表示时间属性序列包含的坐标点的个数,为簇的时间范围半径。最后,再对集合内所有的簇加权后的时间范围半径取平均,计算类型属性si,si∈s的时空数据小文件对应的时间属性合并范围:

步骤2.3)根据位置属性、时间属性的合并范围对类型属性为si的小文件进行合并的具体过程如下:

假设小文件数据集f={f1,f2,…,fm}中类型属性为si,si∈s的时空数据小文件位置属性集合为时间属性集合为根据步骤2.2)挖掘出来的位置属性合并范围和时间属性合并范围对类型属性为si的小文件合并步骤如下:

(1c)创建一个文件;

(2c)以时间属性集合里最靠前(最早)的时间属性tv为参考点,找到与其时间跨度小于等于的时间属性组成集合range_tv;

(3c)以位置属性集合里任意一个位置属性lu为参考点,找到与其空间距离小于等于的位置属性组成集合range_lu;

(4c)将位置属性属于range_lu,时间属性属于range_tv的时空小文件合并步骤(1c)创建的文件中;

(5c)如果合并后的文件总大小大于预定义的大文件存储容量,跳转至步骤(6c);如果合并后的文件总大小小于预定义的大文件存储容量,则跳转至步骤(7c);

(6c)将集合range_tv里已经参与合并的时间属性从中删除维持当前的位置属性参考点lu不变,循环执行步骤(1c-5c);

(7c)将集合range_tv里的时间属性从中删除循环执行步骤(2c-5c),直至将位置属性集合range_lu、时间属性集合内所有的小文件都进行了合并;

(8c)如果此时合并后的文件总大小还不够预定义大文件存储容量,将集合range_lu里的位置属性从中删除重置时间属性集合执行步骤(2c-5c);

(9c)循环执行步骤(1c-8c),直至将位置属性集合为时间属性集合为类型属性为si的小文件全部合并。

根据前面合并规则的产生方法,可以继续计算s={s1,s2,s3,…}里其它类型属性小文件对应的时空合并范围,并按照上面的合并步骤对每个类型属性进行合并。从而将整个小文件数据集f={f1,f2,…,fm}里的文件都合并至大文件集f′={f1,f2,…,fn}。

合并后的小文件,需要为其在大文件内部建立本地索引(internalindex),用来存储小文件的长度和在大文件内部的偏移位置,这样应用服务器在处理数据请求时,就可以直接通过文件内部索引进行定位,从而方便快捷的获得所需小文件数据。合并好的大文件应尽可能的放在底层数据存储服务器内同一节点连续存储区间,因为一些原本连续的小文件很可能放在了大文件的边缘位置,当用户访问它时,客户端需要跨大文件甚至跨数据存储服务器读取,影响小文件的访问性能。合并后的大文件结构如图3所示。

实验

实验数据来源于武汉市智能城市网络应用示范平台,其中包括14个不同地区的传感器,自2010年1月1日起生成传感器数据,并向公众提供20种预定义的应用程序。这些数据都具有明显的时空属性,大部分都属于典型的时空数据小文件(一般不超过4mb),数量众多且占用的存储空间不大。

以气象监测传感数据为例,我们在武汉市不同区域设置了5个采集点,每个采集点包含七种类型的传感器,采集密度为5分钟。一个传感器一天采集的数据生成一个文件,大小在3.2kb-5.8kb之间,平均大小为4.25kb,后续通时空克里金插值,模拟出10000个采集点的数据。所有的采集点在2017年1月1日至2017年6月1日共采集的数据文件大约有12,740,058个,总大小约53.68gb。图4即为系统中存储的文件大小分布图。

经过处理,我们得到了用户在2017年3月1日至2017年6月1日这段时间内的4,076,328条小文件访问信息。

实现结果实验测试包括三部分:mds存储负载、文件的存储速度和文件访问请求平均响应时间,后两项测试包含单用户和多用户并发两种情况,其中多用户并发通过单客户端多进程进行模拟,每次实验重复10次取平均,实验结果与原始的hdfs及文献(hadooparchive.hadooparchivesguide[eb/ol],http://hadoop.apache.org/common/docs/current/hadoop_archives.html.2011.)中提到的har归档文件技术进行比较。

mds存储负载

小文件合并可以有效减少mds中元数据的数量,为此,以mds中内存的消耗大小来反映其存储负载情况,测试当系统分布存储5,000、10,000、15,000、20,000、25,000和30,000个小文件时mds的内存消耗情况。实验结果如图5所示。

从图中可以看出,在不存储任何文件的情况下,系统自身的内存消耗约为4.2mb,随着存储文件数目的变化,所占内存也线性增长。传统hdfs由于每存入一个小文件均在内存中占据一个对象的空间,占用内存非常大。har归档技术和本文提出的算法均包含小文件的合并,存入内存中的都是合并后的大文件对象,减少了mds内存中对象的数量。同样是合并,而且合并后一个大文件包括的小文件数量也一样多,本文所提算法与har不同的是,对于合并后的小文件建立了本地索引(将小文件的目录信息放在了合并后的大文件中),所以相对于har来说,进一步减小了内存开销。

文件的存储速度

文件的存储测试是通过应用示范平台的存储系统客户端client进行(不是用户,用户只能通过网络平台访问预定义的应用服务),方法是一次性将总大小为0.396gb的100,000个小文件数据写入存储系统中,计算文件的平均存储速度。实验结果如图6所示。

从图中可以看出,不管对文件合并与否,存储系统都是在5个用户并发访问时写入速率最大,而且随着并发用户数的增加,总的传输效率趋于稳定。其次,由于小文件的合并,带有合并策略的har和本文算法的存储速度均全方面优于传统的hdfs。同时可以看到,由于har合并机制是直接将多个小文件打包成一个文件写入hdfs文件快中,因此速度比较快,但其缺点就是合并后的文件若要修改必须重新创建存档文件,且并不适合于后续的小文件读取。而本文提出的算法,由于考虑到文件的时空属性再进行合并,因此一定程度上影响了文件的存储速度降低,但相对于一个大的数据集来说,对文件的整体写入速度影响不大,依然有着非常高的存储效率。

平均响应时间

合并的目的是减小用户访问平均响应时间,为此本文分别计算了单用户访问500-3000个小文件时系统的总平均响应时间,实验结果如图7所示。

从图中可以看出,总平均响应时间与小文件的个数呈线性关系,本文所提的合并算法在访问小文件时总响应时间最小,其次是har,最后是原始的hdfs。这是因为过多的小文件导致mds中元数据检索复杂,系统内部通信频繁,大部分时间都花在了系统开销上,增加了读取时间。而har归档技术虽然存储效率很高,但在文件的读取上,虽然其每一次访问也能得到一个大文件,但由于没有考虑到文件之间的相关性,导致大文件中包括的小文件并不是对应的应用该服务所需要的若干个小文件,降低了大文件的读取命中率,同样增加了client-mds之间的通信次数,影响了数据的读取速度。而本文提到的合并算法是在分析用户访问时空相关性和文件自身属性的基础上进行的,把相关联的文件尽可能的合并到了一起。使得每次应用服务访问请求所获取的大文件,都包括该服务后续所需要的小文件,避免了client-mds之间的频繁通信,减小了应用服务的响应时间,有效的提高了系统的小文件访问性能。

结论

本文利用文件自身的时空属性和用户访问的时空特性进行合并,一方面解决了不同类型文件合并的时空粒度问题,另一方面还能对系统内所有的文件进行合并(无论用户是否访问过)。

总的来说,根据小文件自身时空属性合并,没有直接合并的存储效率高,但却可以极大的提高读取效率,而智慧城市时空数据小文件合并的目的就是减小用户访问延时,显然我们所提算法更适合该应用场景。

另外,需要说明的是,本发明除利用聚类算法(层次聚类agnes)从历史的用户访问信息中挖掘访问相关的时空范围外,还可以利用其他数据挖掘算法,如关联规则中的apriori、fp-growth、can-tree等,聚类中的其他聚类算法如密度聚类dbscan等。申请人认为,在本发明思想的指导下,利用这些通用的数据挖掘算法挖掘访问相关的文件,计算这些文件所包含的时空范围,最后利用该时空范围指导小文件合并,是本领域技术人员能够实现的,在此不再一一叙述。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1