CN102075584B - 一种分布式文件***及其访问方法 - Google Patents
一种分布式文件***及其访问方法 Download PDFInfo
- Publication number
- CN102075584B CN102075584B CN201110033439.0A CN201110033439A CN102075584B CN 102075584 B CN102075584 B CN 102075584B CN 201110033439 A CN201110033439 A CN 201110033439A CN 102075584 B CN102075584 B CN 102075584B
- Authority
- CN
- China
- Prior art keywords
- data
- random access
- packet
- access request
- tcp
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种HDFS及其访问方法和***。所述方法,包括下列步骤:分布式文件***接收客户端发来的访问请求,根据实际情况设置packet的大小;获取所述访问请求的数据的起始偏移值,以及请求数据的长度,计算需要chunk的数量;将所述chunk封装成数据包传给客户端。其能够在保证HDFS顺序访问性能的情况下,优化随机访问性能。
Description
技术领域
本发明涉及网络通信领域,特别是涉及一种分布式文件***(HadoopDistributed File System,HDFS)及其访问方法。
背景技术
随着高性能应用和运算需求的迅猛发展,单台高性能计算机已经不能解决一些超大规模应用问题,如空间连接,多个数据集的最近邻查询(ANN)。这就需要将多台计算机资源联合起来,构成计算机集群,共同解决大规模应用问题。并行编程技术可以有效地开发并行计算机尤其是集群计算机的计算能力,是硬件和软件之间的桥梁,是并行计算的底层实现和高层抽象的界面。
Yahoo!首先发布了基于Google集群技术的Hadoop开源***,Hadoop由分布式文件***(HDFS)和MapReduce编程模型组成。
现有技术中提供的基于HDFS的数据访问方法,对于顺序访问方式,用户请求一部分数据,HDFS将该部分数据与紧随其后的其他数据一起发送给用户。由于HDFS主要支持顺序访问,因此,之前传送的那部分多余的数据马上就会被访问到。此时,就不需要去HDFS中去取数据了,可以直接在客户端的本地缓存中获得。
对于随机访问方式,如果随机访问在Block中的偏移值与上一次随机访问的偏移值相差在一个阈值(HDFS默认是128K)内,就采用上述顺序访问的方案,从上一次随机访问处开始顺序访问,数据传到客户端,客户端根据偏移值来裁剪所需的数据;如果偏移值不在阈值之内,就关闭该TCP连接,重新启动一个TCP连接。
因此,现有技术中基于HDFS的数据访问方法,存在如下缺陷:
随机访问相对于顺序访问来说,本次访问的数据的下一部分数据很可能不再访问,因此,像顺序访问那种优化的措施不适合随机访问,并且还会给随机访问带来不必要的网络带宽损失;而且TCP连接的频繁建立会耗费时间。
发明内容
本发明的目的在于提供一种HDFS及其访问方法,其能够在保证HDFS顺序访问性能的情况下,优化随机访问性能。
为实现本发明的目的而提供的一种分布式文件***的访问方法,包括下列步骤:
步骤100.分布式文件***接收客户端发来的访问请求,根据实际情况设置packet的大小;
步骤200.获取所述访问请求的数据的起始偏移值,以及请求数据的长度,计算需要chunk的数量;
步骤300.将所述chunk封装成数据包传给客户端。
所述步骤100,包括下列步骤:
步骤110.判断所述访问请求是否是随机访问请求,若是,则执行步骤120;否则,执行步骤130;
步骤120.将所述packet的大小设为小于原始分布式文件***的packet;
步骤130.将所述packet的大小设为原始分布式文件***中packet的大小。
所述方法,还包括下列步骤:
步骤400.每一次随机访问之后,保持客户端的TCP连接,在下一次随机访问时,若当前随机访问请求的数据偏移量在前次随机访问请求的数据所在的数据节点中,则继续沿用之前的TCP连接,无需重新建立TCP连接。
所述步骤400,包括下列步骤:
步骤410.获取当前随机访问请求的数据的起始偏移地址;
步骤420.判断该数据是否在前次随机访问请求的数据所在的数据节点中,若是,则执行步骤430;否则,执行步骤440;
步骤430.保持前次TCP连接,继续进行数据传输;
步骤440.断开前次TCP连接,重新建立TCP请求进行数据传输。
为实现本发明的目的还提供一种分布式文件***,所述***,包括:
用于根据分布式文件***接收客户端发来的访问请求,以及实际情况设置packet的大小的装置;
用于获取所述访问请求的数据的起始偏移值,以及请求数据的长度,计算需要chunk的数量的装置;
用于将所述chunk封装成数据包传给客户端的装置。
所述用于根据分布式文件***接收客户端发来的访问请求,以及实际情况设置packet的大小的装置,包括:
用于判断所述访问请求是否是随机访问请求的装置;
用于针对随机访问请求,将所述packet的大小设为小于原始分布式文件***的packet的装置;
用于针对顺序访问请求,将所述packet的大小设为原始分布式文件***中packet的大小的装置。
所述***,还包括:
用于在每一次随机访问之后,保持客户端的TCP连接,在下一次随机访问时,若当前随机访问请求的数据偏移量在前次随机访问请求的数据所在的数据节点中,则继续沿用之前的TCP连接,无需重新建立TCP连接的装置。
所述用于在每一次随机访问之后,保持客户端的TCP连接,在下一次随机访问时,若当前随机访问请求的数据偏移量在前次随机访问请求的数据所在的数据节点中,则继续沿用之前的TCP连接,无需重新建立TCP连接的装置,包括:
用于获取当前随机访问请求的数据的起始偏移地址的装置;
用于判断该数据是否在前次随机访问请求的数据所在的数据节点中的装置,若是,则执行步骤430;否则,执行步骤440;
用于当该数据在前次数据节点中时,保持前次TCP连接,继续进行数据传输的装置;
用于当该数据不在前次数据节点中时,断开前次TCP连接,重新建立TCP请求进行数据传输的装置。
本发明的有益效果是:
1.本发明通过改变最小传输单元packet的大小来支持随机访问,以减少不必要的网络传输;
2.本发明通过判断当前请求的数据偏移量在本DataNode中时,继续沿用之前的TCP连接,无需重新建立TCP连接,这样可以节省建立TCP连接的时间开销。
附图说明
图1是本发明的一种分布式文件***的访问方法的步骤流程图;
图2是本发明中根据实际情况设置数据包大小的步骤流程图;
图3是本发明中随机访问后继续沿用之前的TCP连接的步骤流程图;
图4是本发明的一种分布式文件***的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的一种分布式文件***及其访问方法进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明的一种HDFS及其访问方法,通过改变最小传输单元packet的大小来支持随机访问,以减少不必要的网络传输;在判断出此次请求的数据偏移量在本DataNode中时,继续沿用之前的TCP连接,无需重新建立TCP连接,这样可以节省建立TCP连接的时间开销。
下面结合上述目标详细介绍本发明的一种分布式文件***的访问方法,图1是本发明的一种分布式文件***的访问方法的步骤流程图,如图1所示,所述方法,包括下列步骤:
步骤100.分布式文件***接收客户端发来的访问请求,根据实际情况设置数据包(packet)的大小;
packet是最小的传输单元,由若干个数据块(chunk)组成,本发明中packet的大小可以根据用户的需要动态改变,(换言之,通过改变一个packet中包含的chunk的数量来改变中packet的大小)如果用户需要顺序访问,在建立TCP连接时,可以将packet值设大一些,如果用户需要随机访问,在建立TCP连接时,可以将packet值设置小一些。
图2是本发明中根据实际情况设置数据包大小的步骤流程图,如图2所示,所述步骤100,包括下列步骤:
步骤110.判断所述访问请求是否是随机访问请求,若是,则执行步骤120;否则,执行步骤130;
步骤120.将所述packet的大小设为小于原始分布式文件***的packet;
本发明中通过减小目前HDFS中packet的大小,比如,原始的packet大小是64K,可以把packet设成4k,这样,在随机读写的情况下,浪费情况就较小,同时,也节省了网络带宽。
步骤130.将所述packet的大小设为原始分布式文件***中packet的大小。
如果,用户希望进行顺序访问,就在用户与DataNode进行TCP连接时,将packet的大小设置大一些,如64K。
步骤200.获取所述访问请求的数据的起始偏移值,以及请求数据的长度,计算需要chunk的数量;
步骤300.将所述chunk封装成数据包传给客户端。
步骤400.每一次随机访问之后,保持客户端的TCP连接,在下一次随机访问时,若当前随机访问请求的数据偏移量在前次随机访问请求的数据所在的数据节点中,则继续沿用之前的TCP连接,无需重新建立TCP连接。
本发明针对随机访问时,访问同一个DataNode上的数据的情况,只需一个TCP连接,不需要断开TCP连接,重新建立。
图3是本发明中随机访问后继续沿用之前的TCP连接的步骤流程图,如图3所示,所述步骤400,包括下列步骤:
步骤410.获取当前随机访问请求的数据的起始偏移地址;
当客户端请求访问一个文件时,客户端通过RPC远程访问NameNode,NameNode保存了组成该文件所有block的位置信息,对于每一个block,NameNode返回该block所在的DataNode地址;以向得到的DataNode地址发送TCP连接请求。
步骤420.判断该数据是否在前次随机访问请求的数据所在的数据节点中,若是,则执行步骤430;否则,执行步骤440;
步骤430.保持前次TCP连接,继续进行数据传输;
步骤440.断开前次TCP连接,重新建立TCP请求进行数据传输。
作为一种可实施方式,针对HDFS顺序访问,本发明包括如下步骤:
步骤1、分布式文件***接收客户端发来的顺序访问请求,设置packet大小为64K;
步骤2、获取请求数据的起始偏移值,以及请求数据的长度;
步骤3、求出需要多少个chunk;
步骤4、将chunk封装成packet;
步骤5、将packet发给客户端。
作为一种可实施方式,针对HDFS随机访问,本发明包括如下步骤:
步骤1、分布式文件***接收客户端发来的顺序访问请求,设置packet大小为4K;
步骤2、获取请求数据的起始偏移值,以及请求数据的长度;
步骤3、求出需要多少个chunk;
步骤4、将chunk封装成packet;
步骤5、将packet发给客户端。
相应于本发明的一种HDFS的访问方法,还提供一种分布式文件***,图4是本发明的一种分布式文件***的结构示意图,如图4所示,所述***包括:
设置模块1,用于根据分布式文件***接收客户端发来的访问请求,以及实际情况设置packet的大小;
信息获取模块2,用于获取所述访问请求的数据的起始偏移值,以及请求数据的长度,计算需要chunk的数量;
发送模块3,用于将所述chunk封装成数据包传给客户端。
连接模块4,用于在每一次随机访问之后,保持客户端的TCP连接,在下一次随机访问时,若当前随机访问请求的数据偏移量在前次随机访问请求的数据所在的数据节点中,则继续沿用之前的TCP连接,无需重新建立TCP连接。
其中所述设置模块1,包括:
判断模块11,用于判断所述访问请求是否是随机访问请求;
随机访问模块12,用于将所述packet的大小设为小于原始分布式文件***的packet;
顺序访问模块13,用于将所述packet的大小设为原始分布式文件***中packet的大小。
所述连接模块4,包括:
地址获取模块41,用于获取当前随机访问请求的数据的起始偏移地址;
判断子模块42,用于判断该数据是否在前次随机访问请求的数据所在的数据节点中,若是,则触发连接保持模块43;否则,触发连接断开模块44;
连接保持模块43,用于当该数据在前次数据节点中时,保持前次TCP连接,继续进行数据传输;
连接断开模块44,用于当该数据不在前次数据节点中时,断开前次TCP连接,重新建立TCP请求进行数据传输。
本发明的有益效果在于:
1.本发明通过改变最小传输单元packet的大小来支持随机访问,以减少不必要的网络传输;
2.本发明通过判断当前请求的数据偏移量在本DataNode中时,继续沿用之前的TCP连接,无需重新建立TCP连接,这样可以节省建立TCP连接的时间开销。
通过结合附图对本发明具体实施例的描述,本发明的其它方面及特征对本领域的技术人员而言是显而易见的。
以上对本发明的具体实施例进行了描述和说明,这些实施例应被认为其只是示例性的,并不用于对本发明进行限制,本发明应根据所附的权利要求进行解释。
Claims (4)
1.一种分布式文件***的访问方法,其特征在于,所述方法,包括下列步骤:
步骤100.分布式文件***接收客户端发来的访问请求,根据实际情况设置数据包的大小;
其中,所述步骤100,包括下列步骤:
步骤110.判断所述访问请求是否是随机访问请求,若是,则执行步骤120;否则,执行步骤130;
步骤120.将所述数据包的大小设为小于原始分布式文件***中数据包的大小;
步骤130.将所述数据包的大小设为原始分布式文件***中数据包的大小;
其中,所述数据包是最小的传输单位,由数据块组成,通过改变数据包中数据块的数量来改变所述数据包的大小;
步骤200.获取所述访问请求的数据的起始偏移值,以及请求数据的长度,计算需要数据块的数量;
步骤300.将所述数据块封装成数据包传给客户端;
步骤400.每一次随机访问之后,保持客户端的TCP连接,在下一次随机访问时,若当前随机访问请求的数据偏移量在前次随机访问请求的数据所在的数据节点中,则继续沿用之前的TCP连接,无需重新建立TCP连接。
2.根据权利要求1所述的分布式文件***的访问方法,其特征在于,所述步骤400,包括下列步骤:
步骤410.获取当前随机访问请求的数据的起始偏移地址;
步骤420.判断该数据是否在前次随机访问请求的数据所在的数据节点中,若是,则执行步骤430;否则,执行步骤440;
步骤430.保持前次TCP连接,继续进行数据传输;
步骤440.断开前次TCP连接,重新建立TCP请求进行数据传输。
3.一种分布式文件***,其特征在于,所述***,包括:
用于根据分布式文件***接收客户端发来的访问请求,以及实际情况设置数据包的大小的装置;
其中,所述用于根据分布式文件***接收客户端发来的访问请求,以及实际情况设置数据包的大小的装置,包括:
用于判断所述访问请求是否是随机访问请求的装置;
用于针对随机访问请求,将所述数据包的大小设为小于原始分布式文件***中数据包的大小的装置;
用于针对顺序访问请求,将所述数据包的大小设为原始分布式文件***中数据包的大小的装置;
其中,所述数据包是最小的传输单位,由数据块组成,通过改变数据包中数据块的数量来改变所述数据包的大小;
用于获取所述访问请求的数据的起始偏移值,以及请求数据的长度,计算需要数据块的数量的装置;
用于将所述数据块封装成数据包传给客户端的装置;
用于在每一次随机访问之后,保持客户端的TCP连接,在下一次随机访问时,若当前随机访问请求的数据偏移量在前次随机访问请求的数据所在的数据节点中,则继续沿用之前的TCP连接,无需重新建立TCP连接的装置。
4.根据权利要求3所述的分布式文件***,其特征在于,所述用于在每一次随机访问之后,保持客户端的TCP连接,在下一次随机访问时,若当前随机访问请求的数据偏移量在前次随机访问请求的数据所在的数据节点中,则继续沿用之前的TCP连接,无需重新建立TCP连接的装置,包括:
用于获取当前随机访问请求的数据的起始偏移地址的装置;
用于判断该数据是否在前次随机访问请求的数据所在的数据节点中的装置;
用于当该数据在前次数据节点中时,保持前次TCP连接,继续进行数据传输的装置;
用于当该数据不在前次数据节点中时,断开前次TCP连接,重新建立TCP请求进行数据传输的装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110033439.0A CN102075584B (zh) | 2011-01-30 | 2011-01-30 | 一种分布式文件***及其访问方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110033439.0A CN102075584B (zh) | 2011-01-30 | 2011-01-30 | 一种分布式文件***及其访问方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102075584A CN102075584A (zh) | 2011-05-25 |
CN102075584B true CN102075584B (zh) | 2014-08-06 |
Family
ID=44033925
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110033439.0A Expired - Fee Related CN102075584B (zh) | 2011-01-30 | 2011-01-30 | 一种分布式文件***及其访问方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102075584B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103092927B (zh) * | 2012-12-29 | 2016-01-20 | 华中科技大学 | 一种分布式环境下的文件快速读写方法 |
CN107168891B (zh) * | 2014-07-23 | 2020-08-14 | 华为技术有限公司 | 一种i/o特征识别方法以及装置 |
CN105468643B (zh) * | 2014-09-09 | 2019-05-03 | 博雅网络游戏开发(深圳)有限公司 | 分布式文件***的访问方法和*** |
CN104902009B (zh) * | 2015-04-27 | 2018-02-02 | 浙江大学 | 一种基于可擦除编码和链式备份的分布式存储*** |
CN107995147B (zh) * | 2016-10-27 | 2021-05-14 | 中国电信股份有限公司 | 基于分布式文件***的元数据加解密方法和*** |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101689182A (zh) * | 2007-06-29 | 2010-03-31 | 微软公司 | 用于分布式文件***的高效更新 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011002451A1 (en) * | 2009-06-30 | 2011-01-06 | Hewlett-Packard Development Company, L.P. | Optimizing file block communications in a virtual distributed file system |
CN101917490B (zh) * | 2010-09-16 | 2014-01-01 | 北京开心人信息技术有限公司 | 一种读取缓存数据的方法及*** |
-
2011
- 2011-01-30 CN CN201110033439.0A patent/CN102075584B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101689182A (zh) * | 2007-06-29 | 2010-03-31 | 微软公司 | 用于分布式文件***的高效更新 |
Non-Patent Citations (2)
Title |
---|
HDFS下载效率的优化;曹宁等;《计算机应用》;20100831;第30卷(第8期);第2060-2065页 * |
曹宁等.HDFS下载效率的优化.《计算机应用》.2010,第30卷(第8期),第2060-2065页. |
Also Published As
Publication number | Publication date |
---|---|
CN102075584A (zh) | 2011-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10708350B2 (en) | Method and system for content delivery of mobile terminal applications | |
CN102984286B (zh) | 一种dns服务器的缓存更新方法、装置及*** | |
CN105763628B (zh) | 数据访问请求处理方法及装置、边缘节点服务器和集群 | |
US9392081B2 (en) | Method and device for sending requests | |
CN102075584B (zh) | 一种分布式文件***及其访问方法 | |
CN103338252B (zh) | 一种分布式数据库并发存储虚拟请求机制的实现方法 | |
CN103516744A (zh) | 一种数据处理的方法和应用服务器及集群 | |
CN105898352A (zh) | 基于m3u8的流媒体文件直播方法及*** | |
CN110430274A (zh) | 一种基于云存储的文件下载方法及*** | |
CN102394880B (zh) | 内容分发网络中的跳转响应处理方法和设备 | |
CN103227826A (zh) | 一种文件传输方法及装置 | |
WO2011088725A1 (zh) | 基于http的同步方法和装置 | |
CN104935668A (zh) | 分布式文件***及其数据同步的方法 | |
CN102510403B (zh) | 用于车辆数据接收和实时分析的集群分布式***及方法 | |
CN101635741A (zh) | 分布式网络中查询资源的方法及其*** | |
CN103546829A (zh) | 一种视频业务处理方法及设备 | |
CN107633102A (zh) | 一种读取元数据的方法、装置、***及设备 | |
CN101895550B (zh) | 一种应用于互联网网站的兼容动静态内容的缓冲加速方法 | |
Peng et al. | Value‐aware cache replacement in edge networks for Internet of Things | |
CN107733949B (zh) | 一种无线接入网缓存方法及*** | |
CN103024018A (zh) | 一种在单台设备运行多cdn服务进程的方法及装置 | |
CN103220260A (zh) | 更新数据的方法、服务器、客户端及*** | |
CN105791146B (zh) | 用户侧设备与配置服务器交互的方法、设备和*** | |
CN112788135B (zh) | 资源调度方法、设备及存储介质 | |
KR20150011087A (ko) | 컨텐츠 전송 서비스를 위한 분산 캐싱 관리 방법 및 이를 위한 중앙 관리 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140806 Termination date: 20190130 |
|
CF01 | Termination of patent right due to non-payment of annual fee |