HDFS空文件定位方法、装置、设备及介质与流程

文档序号:33035854发布日期:2023-01-24 19:48阅读:27来源:国知局
hdfs空文件定位方法、装置、设备及介质
技术领域
:1.本技术涉及计算机
技术领域
:,尤其涉及一种hdfs空文件定位方法、装置、设备及介质。
背景技术
::2.hdfs,英文全称为hadoopdistributedfilesystem,是在大数据领域用的非常多的分布式高可用的文件系统。3.在hdfs的实际使用过程中,其稳定性会随着文件数量的增多而变差,尤其在存在大量无用的空文件的情况下,将进一步导致存储系统的不稳定性。因此,如何快速定位hdfs中的空文件值得研究。4.相关技术中,定位hdfs中的空文件主要通过递归遍历整个hdfs的目录结构树来获取所有的文件列表,继而定位到所有文件列表中的空文件,这种方式会对hdfs造成很大的数据压力,将影响正常数据业务的开展,而且耗时非常长。技术实现要素:5.鉴于上述问题,即hdfs空文件定位过程影响hdfs正常数据业务以及效率低等问题,本技术提供一种hdfs空文件定位方法、装置、设备及介质。6.为了实现上述目的,本技术提供如下技术方案:7.根据本技术的一方面,提供一种分布式文件系统hdfs空文件定位方法,包括:8.获取分布式文件系统hdfs的二进制的元数据文件;9.将所述二进制的元数据文件进行反序列化,得到明文文件;10.在预建立的hive表中加载所述明文文件,得到明文文件hive表;以及,对所述明文文件hive表中存放空文件列表的文件进行定位,得到定位信息。11.在一种实施方式中,在获取分布式文件系统hdfs的二进制的元数据文件之后,以及将所述二进制的元数据文件进行反序列化之前,还包括:12.将所述二进制的元数据文件推送至与生产环境无关的服务器集群中;13.所述将所述二进制的元数据文件进行反序列化,包括:在所述服务器集群中将所述二进制的元数据文件进行反序列化。14.在一种实施方式中,所述获取分布式文件系统hdfs的二进制的元数据文件,包括:15.从分布式文件系统hdfs的元数据节点namenode中提取二进制的元数据文件。16.在一种实施方式中,所述将所述二进制的元数据文件进行反序列化,包括:17.获取所述二进制的元数据文件的结构信息,并基于所述结构信息获取对应的反序列化程序;18.基于所述反序列化程序将所述二进制的元数据文件进行反序列化。19.在一种实施方式中,所述对所述明文文件hive表中存放空文件列表的文件进行定位,得到定位信息,包括:20.基于对象关系映射框架查询语言hql对所述明文文件hive表中存放空文件列表的文件进行定位,得到定位信息。21.在一种实施方式中,所述明文文件的格式至少包括以下之一:分布式系统文件hdfs的文件路径和目录路径hdfs_dir;副本数replication;修改时间modification_time;访问时间access_time。22.在一种实施方式中,在对所述明文文件hive表中存放空文件列表的文件进行定位,得到定位信息之后,还包括:基于所述定位信息删除定位到的所有存放空文件列表的文件。23.根据本技术的另一方面,提供一种分布式文件系统hdfs空文件定位装置,包括:24.获取模块,其设置为获取分布式文件系统hdfs的二进制的元数据文件;25.反序列模块,其设置为将所述二进制的元数据文件进行反序列化,得到明文文件;26.加载模块,其设置为在预建立的hive表中加载所述明文文件,得到明文文件hive表;27.定位模块,其设置为对所述明文文件hive表中存放空文件列表的文件进行定位,得到定位信息。28.根据本技术的又一方面,提供一种电子设备,包括:存储器和处理器;29.所述存储器存储计算机执行指令;30.所述处理器执行所述存储器存储的计算机执行指令,使得所述电子设备执行所述的分布式文件系统hdfs空文件定位方法。31.根据本技术的再一方面,提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现所述的分布式文件系统hdfs空文件定位方法。32.可以理解的,本技术提供的hdfs空文件定位方法、装置、设备及介质,通过获取分布式文件系统hdfs的二进制的元数据文件;将所述二进制的元数据文件进行反序列化,得到明文文件;在预建立的hive表中加载所述明文文件,得到明文文件hive表;以及,对所述明文文件hive表中存放空文件列表的文件进行定位,得到定位信息。通过上述方法,本技术能够快速、准确地定位到空文件,提高空文件的定位效率,为空文件的清理提供支撑和便利,有效提高了hdfs的稳定性。附图说明33.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。34.图1a为分布式文件系统hdfs的网络架构图;35.图1b为相关技术中提高分布式文件系统hdfs稳定性的网络架构图;36.图2为本技术实施例提供的一种可能的场景示意图;37.图3为本技术实施例提供的一种分布式文件系统hdfs空文件定位方法的流程示意图之一;38.图4为本技术实施例提供的一种分布式文件系统hdfs空文件定位方法的流程示意图之二;39.图5为本技术实施例提供的一种分布式文件系统hdfs空文件定位装置的结构示意图;40.图6为本技术实施例提供的一种电子设备的结构示意图。41.通过上述附图,已示出本技术明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本技术构思的范围,而是通过参考特定实施例为本领域技术人员说明本技术的概念。具体实施方式42.hdfs可以部署在一个由多台机器组成的集群上,其包括几个基本概念元数据节点namenode、数据节点datanode和数据块block,其中namenode负责整个分布式文件系统的元数据管理,也就是文件路径名,数据block的id以及存储位置等信息,还要记录哪些节点是集群的一部分,某个block有几份副本等,如图1a所示。43.由此可以看出namenode是非常重要的一个组件,它的稳定性和可靠性非常重要,如果namenode组件挂掉会导致整个分布式文件系统处于不可用的状态,所有开源社区对hdfs的高可用上做了很多工作,如下图1b所示的namenode高可用原理,通过启动两个namenode解决单点的问题,以提高hdfs的整体稳定性。44.但是在hdfs的实际使用过程中,它的稳定性方面会随着时间的推移在文件数量方面越来越多的情况下会发生稳定性差的现象,尤其有存在大量无用的空文件的情况,进一步导致存储系统的不稳定性。然后大数据平台中的hdfs存储系统中的文件数量通常都是在千万级甚至上亿,相关技术中只能知道hdfs文件系统的文件数、查看某个目录的文件数、以及查看某个小目录下有哪些文件,而无法准确快速精准的定位到在整个hdfs存储系统中存在哪些空文件,虽然可以递归遍历整个hdfs的目录结构树来获取所有的文件列表来查找空文件,但是这样做会对hdfs造成很大的压力,同时会影响企业的数据业务开展,而且耗时非常长,几乎是难以进行实际应用的一个方案。45.有鉴于此,本技术实施例提供一种hdfs空文件定位方法、装置、设备及介质,通过获取hdfs的二进制元数据文件,并反序列化元数据文件,得到明文文件,然后在hive表中加载所述明文文件,进而在明文文件hive表中对存放空文件列表的文件进行空文件定位,其以无侵入hdfs的方式开展,不会影响hdfs的正常数据业务,并且能够快速的、准确的定位到空文件,提高空文件的定位效率,为后续的空文件的清理提供支撑和便利,有效提高了hdfs的稳定性。46.为使本技术的目的、技术方案和优点更加清楚,下面将结合本技术的实施例中的附图,对本技术实施例中的技术方案进行更加详细的描述。在附图中,自始至终相同或类似的标号表示相同或类似的部件或具有相同或类似功能的部件。所描述的实施例是本技术一部分实施例,而不是全部的实施例。下面通过参考附图描述的实施例是示例性的,旨在用于解释本技术,而不能理解为对本技术的限制。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。47.图2为本技术实施例提供的一种可能的场景示意图,如图2所示,包括分布式文件系统hdfs210和终端设备220,hdfs210部署在服务器上,终端设备220和服务器之间通过有线或者无线网络相互连接。在一些实施例中,hdfs210用于向终端设备220提供二进制的元数据文件,终端设备220用于基于hdfs210提供的元数据文件,进行反序列化以及空文件定位等操作。可选地,在进行反序列化以及空文件定位的过程中,终端设备220承担主要计算工作,或者单独承担计算工作。48.其中,终端设备可以包括但不限于,电脑、智能手机、平板电脑、电子书阅读器、动态影像专家压缩标准音频层面3(movingpictureexpertsgroupaudiolayeriii,简称mp3)播放器、动态影像专家压缩标准音频层面4(movingpictureexpertsgroupaudiolayeriv,简称mp4)播放器、便携计算机、车载电脑、可穿戴设备、台式计算机、机顶盒、智能电视等等。49.服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(contentdeliverynetwork,cdn)、以及大数据和人工智能平台等基础云计算服务的云服务器。50.可选地,上述分布式文件系统hdfs210和终端设备220的数量可以更多或更少,本技术实施例对此不加以限定。51.上面对本技术的场景示意图进行了简单说明,下面以应用于图1b中的终端设备220为例,来详细说明本技术实施例提供的分布式文件系统hdfs空文件定位方法。52.请参照图3,图3为本技术实施例提供的一种分布式文件系统hdfs空文件定位方法,包括步骤s301-s304。53.步骤s301、获取分布式文件系统hdfs的二进制的元数据文件。54.本实施例中,对于hdfs空文件的定位,不直接在hdfs进行定位,而是通过获取hdfs元数据文件并在后续步骤中进行分析定位,实现hdfs空文件的无侵入性定位。55.可以理解的,相关技术直接利用分布式文件系统hdfs的api接口去扫描空文,由于hdfs的文件数一般都在千万级甚至上亿,扫描定位的过程会对hdfs产生性能上的侵入性,甚至导致hdfs不可用,本实施例通过获取及解析hdfs元数据文件来无侵入定位空文件,不会对hdfs产生任何数据业务的影响。56.在一种实施方式中,步骤s301获取分布式文件系统hdfs的二进制的元数据文件,具体为:从分布式文件系统hdfs的元数据节点namenode中提取二进制的元数据文件。57.可以理解的,namenode负责整个分布式文件系统的元数据管理,包括文件路径名,数据block的id以及存储位置等信息。通过查看hdfs本身的监控页面可以发现,namenode可以获取整个文件的系统有多少个文件和文件夹、有多少block以及总共有多少对象,以及某个文件的大小,本实施例通过获取namenode所属的元数据文件,并解析相关元数据文件就能够精确定位空文件,从而提高工作效率。58.进一步地,在步骤s301获取分布式文件系统hdfs的二进制的元数据文件之后,以及步骤s302将所述二进制的元数据文件进行反序列化之前,还可以包括以下步骤:59.将所述二进制的元数据文件推送至与生产环境无关的服务器集群中;60.本实施例中,通过在其他的与hdfs不相关的服务集群上解析hdfs元数据文件来无侵入定位空文件,可以进一步降低对hdfs的业务影响程度。在一些实施例中,也可以在终端设备中进行元数据解析。61.步骤s302、将所述二进制的元数据文件进行反序列化,得到明文文件。62.本实施例中,步骤s302将所述二进制的元数据文件进行反序列化,具体为:在所述服务器集群中将所述二进制的元数据文件进行反序列化。63.进一步地,步骤s302将所述二进制的元数据文件进行反序列化,可以包括以下步骤。64.获取所述二进制的元数据文件的结构信息,并基于所述结构信息获取对应的反序列化程序;65.基于所述反序列化程序将所述二进制的元数据文件进行反序列化。66.本实施例中,通过了解元数据的结构,并可以编写java程序反序列化程序将二进制的元数据文件进行反序列化为明文文件,以实现元数据文件的高效解析。67.在一种实施方式中,所述明文文件的格式至少包括以下之一:分布式系统文件hdfs的文件路径和目录路径hdfs_dir;副本数replication;修改时间modification_time;访问时间access_time。68.可以理解的,除了上述格式信息之外,还可以包括其它信息。示例性的,本实施例中,格式如下:69.hdfs_dir:hdfs的文件路径和目录路径;replication:副本数;modification_time:修改时间;access_time:访问时间;preferred_block_size:偏好数据块大小;blocks_count:数据块数量;file_size:文件大小;nsquota:名称配额;dsquota:目标空间配额;permission:许可;user_name:用户名;group_name:组名。70.步骤s303、在预建立的hive表中加载所述明文文件,得到明文文件hive表。71.可以理解的,hive是基于hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,及hive表,并提供sql(structuredquerylanguage,结构化查询语言)查询功能,能将sql语句转变成mapreduce任务来执行,实现对数据的快速查询。本实施例中,明文文件hive表建表语句示例如下:72.[0073][0074]步骤s304、对所述明文文件hive表中存放空文件列表的文件进行定位,得到定位信息。[0075]本实施例中,例如采用hql(hibernatequerylanguage,对象关系映射框架查询语言)查询语句对明文文件hive表进行查询和定位,快速找到对应的空文件。可以理解的,如果使用hdfs的api接口进行扫描的话,一般会需要数小时,而采用本实施例的上述方案则可以分钟级就可能精准定位空文件,大大提高了空文件的定位效率。[0076]具体地,步骤s304对所述明文文件hive表中存放空文件列表的文件进行定位,得到定位信息,包括:基于对象关系映射框架查询语言hql对所述明文文件hive表中存放空文件列表的文件进行定位,得到定位信息。[0077]可以理解的,hql,是一种面向对象的查询语言,类似于sql,但不是去对表和列进行操作,而是面向对象和它们的属性,即传统的sql查询从而对数据库进行操作。其中,提交hql分布式作业快速精准计算空文件列表,查询语言示例如下:[0078]selectpath[0079]fromhdfs_table[0080]wherereplication》0andfilesize=0[0081]在一种实施方式中,在对空文件进行定位后,根据定位信息对空文件进行删除及清理,可以有效保障hdfs的稳定性。具体地,在步骤s304对所述明文文件hive表中存放空文件列表的文件进行定位,得到定位信息之后,还可以包括以下步骤:基于所述定位信息删除定位到的所有存放空文件列表的文件。[0082]在一种可实现中,可以生成删除执行程序删除在hdfs中定位到的目标空文件,在其它可实现中,也可以通过生成删除指令信息之hdfs中进行空文件的删除,该删除指令信息携带定位信息。[0083]为便于对本技术实施例的理解,结合图4所示,包括如下流程:[0084]步骤1:在namenode节点采集元数据文件,该元数据文件为二进制文件,并上传至与生产环境无关的服务器集群中的一个或多个服务器中。[0085]具体地,该过程为无侵入获取元数据文件,namenode最新的元数据都是全量保存在内存中的,直接读取namenode的内存会产生很大的压力,并且影响数据业务,所以首先获取namenode的本身序列化的元数据文件,将元数据文件推送到与企业生产环境无关的集群上,本步骤也体现了无侵入性,即拷贝单个文件不会对namenode产生影响。[0086]步骤2:在服务器集群中对元数据文件进行反序列化。[0087]具体地,可以通过了解元数据的结构,编写java程序反序列化程序将二进制的元数据文件进行反序列化为明文文件。[0088]步骤3:建立hive表加载反序列化后的明文文件。[0089]步骤4:提交hql分布式作业快速精准计算空文件列表。[0090]本技术实施例相应还提供一种分布式文件系统hdfs空文件定位装置,如图5所示,包括获取模块51、反序列模块52、加载模块53以及定位模块54,其中,[0091]获取模块51,其设置为获取分布式文件系统hdfs的二进制的元数据文件;[0092]反序列模块52,其设置为将所述二进制的元数据文件进行反序列化,得到明文文件;[0093]加载模块53,其设置为在预建立的hive表中加载所述明文文件,得到明文文件hive表;[0094]定位模块54,其设置为对所述明文文件hive表中存放空文件列表的文件进行定位,得到定位信息。[0095]在一种实施方式中,所述装置还包括:[0096]推送模块,其设置为将所述二进制的元数据文件推送至与生产环境无关的服务器集群中;[0097]所述反序列模块52具体设置为,在所述服务器集群中将所述二进制的元数据文件进行反序列化。[0098]在一种实施方式中,所述获取模块51具体设置为,从分布式文件系统hdfs的元数据节点namenode中提取二进制的元数据文件。[0099]在一种实施方式中,所述反序列模块52包括:[0100]程序获取单元,其设置为获取所述二进制的元数据文件的结构信息,并基于所述结构信息获取对应的反序列化程序;[0101]反序列化单元,其设置为基于所述反序列化程序将所述二进制的元数据文件进行反序列化。[0102]在一种实施方式中,所述定位模块54具体设置为,基于对象关系映射框架查询语言hql对所述明文文件hive表中存放空文件列表的文件进行定位,得到定位信息。[0103]在一种实施方式中,所述明文文件的格式至少包括以下之一:分布式系统文件hdfs的文件路径和目录路径hdfs_dir;副本数replication;修改时间modification_time;访问时间access_time。[0104]在一种实施方式中,所述装置还包括:空文件删除模块,其设置为基于所述定位信息删除定位到的所有存放空文件列表的文件。[0105]在此需要说明的是,本技术提供的上述装置,能够相应地实现上述方法实施例中终端设备所实现的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。[0106]本技术实施例相应还提供一种电子设备,如图6所示,包括:存储器61和处理器62;[0107]所述存储器61存储计算机执行指令;[0108]所述处理器62执行所述存储器61存储的计算机执行指令,使得所述电子设备执行所述的分布式文件系统hdfs空文件定位方法。[0109]在此需要说明的是,本技术提供的上述电子设备,能够相应地实现上述方法实施例中终端设备所实现的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。[0110]本技术实施例相应还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现所述的分布式文件系统hdfs空文件定位方法。[0111]本技术实施例相应还提供一种计算机程序产品,所述计算机程序产品包括计算机程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行所述的数据库更新方法。[0112]本技术实施例相应还提供一种芯片,包括存储器和处理器,所述存储器用于存储计算机程序,所述处理器用于从所述存储器中调用并运行所述计算机程序,执行所述的数据库更新方法。[0113]在此需要说明的是,本技术提供的上述介质、程序产品及芯片,能够相应地实现上述方法实施例中终端设备所实现的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。[0114]本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。[0115]如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。[0116]此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。[0117]在本技术实施例的描述中,术语“和/或”仅仅表示一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,术语“至少一种”表示多种中的任一种或多种中的至少两种的任意组合,例如,包括a、b、中的至少一种,可以表示包括a、b和c沟通的集合中选择的任意一个或多个元素。此外,术语“多个”的含义是两个或两个以上,除非是另有精确具体地规定。[0118]在本技术实施例的描述中,术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。[0119]最后应说明的是:以上各实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述各实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1