本发明专利技术实施例公开了一种数据获取方法和分布式文件系统,所述方法包括:获取待访问文件的文件目录,并获取预定义的根节点的节点值;根据所述根节点的节点值的散列值获取所述根节点的区块信息;当所述根节点的节点值对应所述区块中的文件时,根据所述区块中存储的块列表和块列表位置信息获取数据文件;当所述根节点的节点值对应所述区块中的文件夹时,根据所述文件目录从所述区块中存储的文件列表和所述文件列表中的文件对应的节点值中获取下一级节点的节点值,再根据所述下一级节点的节点值获取所述下一级节点的区块信息,直至最终获取数据文件。采用本发明专利技术,可解决HDFS中的单点问题,提高HDFS集群任务的并发处理能力。
【技术实现步骤摘要】
本专利技术涉及一种分布式数据处理领域,尤其涉及一种数据获取方法和分布式文件系统。
技术介绍
Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)是一种适合运行在通用硬件(commodity hardware)上的分布式文件系统。HDFS能提供高吞吐量的数据 访问,非常适合大规模数据集上的应用。对外部客户机而言,HDFS就像一个传统的分级文件系统。可以创建、删除、移动或重命名文件,等等。HDFS的架构是基于一组特定的节点构建的,这些节点包括NameNode (仅一个),其在HDFS内部提供元数据服务;DataNode,其为HDFS提供存储块。其中,NameNode是一个通常在HDFS实例中的单独机器上运行的软件。它负责管理文件系统名称空间和控制外部客户机的访问。NameNode决定是否将文件映射到DataNode上的复制块上。对于最常见的3个复制块,第一个复制块存储在同一机架的不同节点上,最后一个复制块存储在不同机架的某个节点上。NameNode在一个文件中存储所有关于文件系统名称空间的信息。这个文件和一个包含所有事务的记录文件将存储在NameNode的本地文件系统上。由于仅存在一个NameNode,在基于C/S (客户/服务器)架构的设计中只有一台Namenode机器就造成了 Namenode的单点问题,这成为了 HDFS的一个缺点。
技术实现思路
本专利技术实施例所要解决的技术问题在于,提供一种数据获取方法和分布式文件系统。可解决HDFS中的单点问题,提高HDFS集群任务的并发处理能力。为了解决上述技术问题,本专利技术实施例提供了一种分布式文件系统中的数据获取方法,所述方法包括 获取待访问文件的文件目录,并获取预定义的根节点的节点值; 根据所述根节点的节点值的散列值获取所述根节点的区块信息,所述区块中存储有文件,或/和文件夹中的文件列表及所述文件列表中的文件对应的节点值; 当所述根节点的节点值对应所述区块中的文件时,根据所述区块中存储的块列表和块列表位置信息获取数据文件; 当所述根节点的节点值对应所述区块中的文件夹时,根据所述文件目录从所述区块中存储的文件列表和所述文件列表中的文件对应的节点值中获取下一级节点的节点值,再根据所述下一级节点的节点值获取所述下一级节点的区块信息,直至最终获取数据文件。其中,所述根据所述根节点的节点值的散列值获取所述根节点的区块信息包括 根据所述根节点的节点值的散列值确定存储所述节点值对应的节点信息的服务器; 根据所述根节点的节点值在所述服务器中获取所述节点值对应的节点信息;根据所述节点值对应的节点信息获取所述根节点的区块信息。所述根节点或其他节点的区块信息中包括多个区块的信息。所述方法还包括在所述分布式系统中划分多个数据区域,节点值通过散列算法与所述数据区域对应; 所述根据所述根节点的节点值的散 列值确定存储所述节点值对应的节点信息的服务器相应为,所述根据所述根节点的节点值的散列值确定存储所述节点值对应的节点信息的数据区域所在的服务器。所述方法还包括缓存所述数据文件的各级节点值。相应的,本专利技术实施例还提供了一种分布式文件系统,包括 目录获取单元,用于获取待访问文件的文件目录,并获取预定义的根节点的节点值;区块获取单元,用于根据所述根节点的节点值的散列值获取所述根节点的区块信息,所述区块中存储有文件,或/和文件夹中的文件列表及所述文件列表中的文件对应的节点值; 文件获取单元,用于当所述根节点的节点值对应所述区块中的文件时,根据所述区块中存储的块列表和块列表位置信息获取数据文件;当所述根节点的节点值对应所述区块中的文件夹时,根据所述文件目录从所述区块中存储的文件列表和所述文件列表中的文件对应的节点值中获取下一级节点的节点值,再根据所述下一级节点的节点值获取所述下一级节点的区块信息,直至最终获取数据文件。其中,所述区块获取单元包括 服务器定位子单元,用于根据所述根节点的节点值的散列值确定存储所述节点值对应的节点信息的服务器; 节点信息获取子单元,用于根据所述根节点的节点值在所述服务器中获取所述节点值对应的节点信息; 区块信息获取子单元,用于根据所述节点值对应的节点信息获取所述根节点的区块信肩、O所述区块获取单元获取的根节点或其他节点的区块信息中包括多个区块的信息。所述系统还包括划分单元,用于在所述分布式系统中划分多个数据区域,节点值通过散列算法与所述数据区域对应; 所述服务器定位子单元还用于所述根据所述根节点的节点值的散列值确定存储所述节点值对应的节点信息的数据区域所在的服务器。所述系统还包括缓存单元,用于缓存所述数据文件的各级节点值。实施本专利技术实施例,具有如下有益效果由于将整个目录树分布式的存储在不同的区块,并利用节点值来指向这些区块,实现了目录树结构的分散存储,利用散列算法有效的解决了 nameno de单点故障和瓶颈问题。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图I是本专利技术实施例中的目录树的一个组成示意 图2是本专利技术实施例中的分布式文件系统中的数据获取方法的一个具体流程示意图; 图3是本专利技术实施例中的分布式文件系统中的数据获取方法的另一个具体流程示意 图4是本专利技术实施例中的分布式文件系统的一个具体组成示意 图5是图4中的区块获取单元的一个具体组成示意图。具体实施方式 下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。在本专利技术中定义两个概念,节点值(inodenum)和区块(block),只要知道inodenum就可以迅速定位节点(inode)信息(即inode数据信息),继而通过inode定位到block以读取文件或文件夹内容。block的文件中存储数据块信息,文件夹做为特殊文件,在其中存储了其子目录的所有文件列表和文件列表中的文件的inodenum,这样就可以通过文件目录逐级找到需要访问的数据文件,也可以迅速在内存中还原构建出个目录树,如图I所示。一般,根目录是需要做特殊处理的,其inodenum可以在全局配置信息中进行指定,或者预定义inodenum=0的文件存储的就是根目录数据。即,在本专利技术的解决方案中定义,I) inodenum,作为定位文件的索引;2)block (为文件或文件夹),存储有目录列表、数据块信息(在每台机器内存中存储block);3)数据块(datablock)为存储文件数据的载体。对于block,当inodenum指向的为文件夹时,block存储的数据格式如下文件名,文件类型,inodenum;当inodenum指向的数据为文件时,block存储的数据格式如下数据DataBlock的blockID列表和位置信息。以下从数据获取的角度进一本文档来自技高网...
【技术保护点】
一种分布式文件系统中的数据获取方法,其特征在于,所述方法包括:获取待访问文件的文件目录,并获取预定义的根节点的节点值;根据所述根节点的节点值的散列值获取所述根节点的区块信息,所述区块中存储有文件,或/和文件夹中的文件列表及所述文件列表中的文件对应的节点值;当所述根节点的节点值对应所述区块中的文件时,根据所述区块中存储的块列表和块列表位置信息获取数据文件;当所述根节点的节点值对应所述区块中的文件夹时,根据所述文件目录从所述区块中存储的文件列表和所述文件列表中的文件对应的节点值中获取下一级节点的节点值,再根据所述下一级节点的节点值获取所述下一级节点的区块信息,直至最终获取数据文件。
【技术特征摘要】
【专利技术属性】
技术研发人员:史晓峰,蔡斌,张文郁,宫振飞,崔小丰,韩欣,肖桂菊,邱翔虎,崔晓春,
申请(专利权)人:腾讯科技深圳有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。