一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种跨平台访问HDFS文件系统的方法与流程

2022-11-16 07:01:31 来源:中国专利 TAG:
一种跨平台访问hdfs文件系统的方法
技术领域
:1.本发明涉及分布式数据存储访问领域,特别涉及一种跨平台访问hdfs文件系统的方法。
背景技术
::2.随着移动互联网技术与物联网技术的快速发展,数据呈现爆炸式增长趋势。传统关系型数据库的数据管理架构不再满足当前数据存储需求,分布式数据存储系统以其良好的扩展性以及较高的容错性一跃成为海量数据存储下的首选方案,尤其是谷歌的三驾马车《googlefilesystem》、《googlemapreduce》、《googlebigtable》发表以后,大规模分布式存储系统基于此理论系统逐渐走向了工程实践领域,当前的hdfs、mapreduce、hbase等分布式数据存储管理产品由此衍生。其中hdfs是一种较为流行的分布式文件系统,它具有高扩展性、容错性等特点。3.目前跨平台访问hdfs文件系统的方式包括(1)通过浏览器远程访问hdfs所在服务器提供的文件系统服务,其优点是部署简单,缺点是信息只能读取不能删改,同时信息仅供用户查看不能被程序直接使用。(2)通过加载hadoop安装库,根据系统提供的hdfsapi访问文件系统,优点是访问数据可被程序快速使用,缺点是环境部署复杂、仅有部分语言开放该api接口,使用场景具有局限性。4.为了解决跨平台、跨语言场景下快速轻量访问hdfs文件系统的问题。目前在工程实践上,hdfs文件系统一般部署在linux操作系统,windows操作系统访问hdfs文件系统可通过浏览器访问自带系统服务或采用远程api两种方式实现。这两种实现方式都存在一定的局限性,通过浏览器访问系统服务的方式具备跨语言和轻量级的特点,但该访问数据不能被程序直接获取,并且文件系统操作功能不完备,不能满足应用层面的需求。远程api的方法通用性较强,但语言具有一定局限性,对java系语言支持较好,c系列语言支持较弱。另外远程api调用方式第三方扩展库部署复杂,不满足快速轻量要求。技术实现要素:5.针对现有技术中存在的问题,提供了一种跨平台、跨语言场景下轻量访问hdfs文件系统的方法,该中间件通过通信加远程命令行调用的方式访问hdfs文件系统,可在部署简单的windows平台上基于多种开发语言快速获取hdfs文件系统信息,最终实现跨平台跨语言轻量访问hdfs文件系统的目的。6.本发明采用的技术方案如下:一种跨平台访问hdfs文件系统的方法,hdfs文件系统部署在linux操作系统中,在hdfs文件系统提供的交互接口连接一中间件,中间件提供外部访问接口;用户通过外部访问接口向中间件下发命令完成对hdfs文件系统的访问操作;所述中间件包括跨语言tcp通信层和文件系统调用层,所述跨语言tcp通信层作为中间件调用的外部访问接口,基于tcp通信的方式实现跨语言的参数传递;文件系统调用层采用跨平台远程调用linux命令行的方式与hdfs文件系统提供的交互接口进行命令交互。7.进一步的,所述中间件包括初始化过程:提前在配置文件中写入待访问hdfs文件系统的ip地址、用户名以及密码信息;中间件启动时,读取配置文件中的相应配置信息并基于tcp完成通信网络初始化。8.进一步的,所述中间件通过外部访问接口接收相关参数,调用linux命令行完成文件新增、文件删除、文件读取、文件修改、文件重命名以及文件位置移动六种对hdfs文件系统的操作。9.进一步的,所述文件新增具体过程为:首先判断本地是否存在待新增的文件,当文件不存在时返回文件不存在错误并退出;文件存在时调用windows命令行接口通过中间件基于scp命令将本地文件上传到linux系统指定文件路径,上传成功后远程调用linux命令行基于put命令将文件从linux文件系统上传到hdfs文件系统,当文件上传成功以后,将linux系统中新增文件删除并返回上传成功标志。10.进一步的,所述文件删除具体过程为:中间件通过远程命令行调用ls命令检查文件是否存在,当文件不存在时直接返回错误,文件存在时远程调用rm命令执行文件删除操作,并返回命令行执行结果返回。11.进一步的,所述文件读取具体过程为:中间件远程调用ls命令判断文件是否存在,当文件存在时判断当前读取的文件类型;当文件类型是目录时,远程调用linuxls命令获取当前路径子文件目录并返回;当文件类型是文件时,远程调用linuxget命令将文件从hdfs文件系统下载到linux系统,下载成功后调用scp命令将文件从linux系统下载到windows系统,并读取文件内容返回。12.进一步的,所述文件修改具体过程为:中间件远程调用ls命令判断待修改文件是否存在,存在时读取待修改的文件,等待用户执行文件修改操作并保存文件,重新上传修改后的文件到hdfs文件系统。13.进一步的,所述文件重命名具体过程为:中间件远程调用ls命令判断文件是否存在,存在时再判断当前路径下新文件名是否存在,在新文件名不存在时远程调用linuxmv命令执行文件重命名,并返回执行结果。14.进一步的,所述文件位置移动具体过程为:中间件远程调用ls命令判断文件是否存在,存在时再判断目标路径是否存在,当目标路径存在时远程调用linuxmv命令移动文件并返回执行结果。15.与现有技术相比,采用上述技术方案的有益效果为:本发明可以支持更多文件系统操作,包括新增、删除、修改、读取、重命名及位置移动,同时,本中间件读取到的文件系统信息可以直接供开发程序使用,具有轻量、跨语言、跨平台的特点。附图说明16.图1为本发明提出的中间件示意图。17.图2为本发明一实施例中hdfs文件系统访问界面示意图。18.图3为本发明一实施例中文件新增流程图。19.图4为本发明一实施例中文件删除流程图。20.图5为本发明一实施例中文件读取流程图。21.图6为本发明一实施例中文件修改流程图。22.图7为本发明一实施例中文件重命名流程图。23.图8为本发明一实施例中图文件移动流程图。具体实施方式24.下面详细描述本技术的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的模块或具有相同或类似功能的模块。下面通过参考附图描述的实施例是示例性的,仅用于解释本技术,而不能理解为对本技术的限制。相反,本技术的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。25.本实施例提出了一种跨平台访问hdfs文件系统的方法,hdfs文件系统部署在linux操作系统中,在hdfs文件系统提供的交互接口连接一中间件,中间件提供外部访问接口;用户通过外部访问接口向中间件下发命令完成对hdfs文件系统的访问操作。26.如图1所示为本实施例中的中间件示意图,从图中可以看出本中间件分为跨语言tcp通信层和文件系统调用层,其中跨语言tcp通信层作为中间件调用的外部访问接口,基于tcp通信的方式实现跨语言的信息传递。外部访问接口只需要按照标准tcp通信的方式将相关参数传递给中间件,即可执行hdfs文件系统操作,提供给开发者轻量跨语言的敏捷开发方式。文件系统调用层主要实现跨平台访问hdfs文件系统的功能,本中间件主要采用跨平台远程调用linux命令行的方式实现,hdfs系统在linux命令行中给出了一组基于命令行的交互接口,该组交互接口可用于进行hdfs文件系统底层访问操作,该组linux命令包含以下几种操作:27.a)上传到hdfs文件系统:hdfsdfs–put[-f]《sourcepath》《destpath》[0028]b)删除hdfs文件:hdfsdfs–rm[-r][-f][-skiptrash]《hdfspath》[0029]c)下载文件到linux系统:hdfsdfs–get《hdfspath》《localpath》[0030]d)查看hdfs文件:hdfsdfs-ls[-h][-r]《path》[0031]e)移动hdfs文件:hdfsdfs–mv《sourcepath》《destpath》[0032]因此最终通过tcp通信层与文件系统调用层架构配合,该中间件可提供一种跨平台跨语言的通用hdfs文件系统访问接口,该接口包括常用的文件新增、文件删除、文件读取、文件修改、文件重命名以及文件位置移动操作。[0033]该中间件包括初始化及访问操作两个具体步骤:[0034](1)基于配置信息完成通信初始化:中间件支持跨平台访问hdfs文件系统,需提前在配置文件中写入待访问文件系统的ip地址、用户名以及密码信息。该中间件启动时,需读取配置文件中的相应配置信息并基于tcp完成通信网络初始化。[0035](2)执行hdfs文件访问操作:本中间件提供了常用的文件系统操作,主要包括文件新增、文件删除、文件读取、文件修改、文件重命名以及文件位置移动操作,下面给出中间件以上六种文件系统操作的实现策略。[0036]其中,文件新增:文件新增实现本地文件上传到hdfs文件系统指定文件路径的功能。针对系统跨平台的特点,文件新增从整体上分为两步,先将文件上传到linux文件系统,再把文件从linux文件系统上传到hdfs文件系统中。图3给出了中间件文件新增的流程图,具体步骤如下:[0037]步骤1.1、检测本地是否存在文件;若不存在,进入步骤1.2,若不存在,则返回文件不存在错误,进入步骤1.5;[0038]步骤1.2、将文件上传至linux系统中,并判断上传是否成功,若是则进入步骤1.3,若否则,返回上传失败错误,进入步骤1.5;[0039]步骤1.3、通过中间件远程调用linuxput命令将文件上传至hdfs文件系统中,并判断是否成功,若是则进入步骤1.4,若否则回滚linux系统新增的文件,进入步骤1.5;[0040]步骤1.4、删除上传到linux系统的文件,并返回成功标志;[0041]步骤1.5、结束。[0042]进一步的,所述步骤1.2中,调用windows命令行接口基于scp命令将windows本地文件上传到linux系统指定文件路径。[0043]文件删除:文件删除实现删除hdfs文件系统指定路径文件的功能,图4给出了中间件删除文件的流程图,具体步骤如下:[0044]步骤2.1、通过中间件远程调用ls命令检查文件是否存在,若是,则进入步骤2.2,若否,则返回文件不存在错误,进入步骤2.4;[0045]步骤2.2、通过中间件远程调用linuxrm命令删除文件,并判断删除是否成功,若是,则进入步骤2.3,若否,则返回删除失败错误,进入步骤2.4;[0046]步骤2.3、返回删除成功标志;[0047]步骤2.4、结束。[0048]文件读取:文件读取实现hdfs文件系统目录文件查看和文件读取下载的功能,图5给出了中间件文件读取的流程图,具体步骤如下:[0049]步骤3.1、通过中间件远程调用ls命令判断文件路径是否存在,若是,则进入步骤3.2,若否,则返回文件路径不存在错误,进入步骤3.6;[0050]步骤3.2、判断是否为文件,若是,则进入步骤3.3,若否,则通过中间件远程调用linuxls命令获取子文件目录,并返回子文件目录,进入步骤3.6;[0051]步骤3.3、通过中间件远程调用linuxget命令下载文件到linux系统,并判断linux系统文件是否形成成功,若是,则进入步骤3.4,若否,则返回文件获取失败错误,进入步骤3.6;[0052]步骤3.4、调用scp命令通过中间件将linux系统新增的文件下载到本地,并判断是否再在成功,若是,则进入步骤3.5,若否,则回滚删除linux系统新增的文件,返回本地文件获取失败错误,进入步骤3.6;[0053]步骤3.5、打开本地文件所在路径;[0054]步骤3.6、结束。[0055]文件修改:文件修改实现hdfs文件系统文件内容修改并更新上传的功能,图6给出了中间件文件修改的流程图,具体步骤如下:[0056]步骤4.1、通过中间件判断待修改文件的路径是否存在,若是,则进入步骤4.2,若否,则返回文件不存在错误,进入步骤4.5;[0057]步骤4.2、读取待修改文件,判断读取是否成功,若是,则进入步骤4.3,若否,则返回读取失败错误,进入步骤4.5;[0058]步骤4.3、执行文件修改操作,保存并上传修改后的文件到hdfs文件系统,判断上传是否成功,若是,则进入步骤4.4,若否,则返回上传失败错误,进入步骤4.5;[0059]步骤4.4、返回上传成功标志;[0060]步骤4.5、结束。[0061]文件重命名:文件重命名实现hdfs文件重命名功能,图7给出了中间件文件重命名流程图,具体步骤如下:[0062]步骤5.1、通过中间件查询hdfs文件是否存在,若是,则进入步骤5.2,若否,则返回文件不存在错误,进入步骤5.4;[0063]步骤5.2、当前路径新文件名是否存在,若否,则进入步骤5.3,若是,则返回重复命名错误,进入步骤5.4;[0064]步骤5.3、远程调用linuxmv命令重命名文件,并返回重命名成功标志;[0065]步骤5.4、结束。[0066]文件位置移动:文件位置移动实现hdfs文件位置移动功能,图8给出了中间件文件位置移动流程图,具体步骤如下:[0067]步骤6.1、通过中间件查询hdfs文件是否存在,若是,则进入步骤6.2,若否,返回文件不存在错误,进入步骤6.4;[0068]步骤6.2、判断目标路径是否存在,若是,则进入步骤6.3,若否,则返回目标路径错误,进入步骤6.4;[0069]步骤6.3、通过中间件远程调用linuxmv命令移动文件,并返回移动成功标志;[0070]步骤6.4、结束。[0071]hdfs文件系统作为一种通用分布式文件系统,目前已经在主流大数据产品中广泛使用。越来越多开发者基于hdfs文件系统实现海量数据管理,轻量快速访问hdfs文件系统作为一种迫切需求。与传统hdfs文件系统访问方式不同,本实施例提出的方法侧重以轻量开发的方式实现跨平台、跨语言访问hdfs文件系统。因此本中间件在技术层面采用通信加远程命令行调用的方式解决语言异构与系统异构的问题。开发者使用本中间件访问hdfs文件系统时,只需要调用tcp网络通信模块,按照中间件接口标准提供当前文件系统操作参数,即可实现在多种语言环境中远程访问hdfs文件系统的功能。[0072]该中间件可以应用在多种语言和操作系统环境,实现hdfs文件系统的快速访问。为了证明本方法的有效性,基于本中间件在windows7环境下使用c 语言开发了hdfs文件系统访问客户端软件,图2给出了该软件的整体界面。该客户端软件开发环境部署简单,无需部署大数据框架,主要基于visualstudio和qt,通过本中间件提供的接口实现hdfs文件系统的访问。本实例中客户端软件可访问远程ip地址为192.168.201.206的linux集群,实现hdfs文件系统查询、上传、删除、修改等操作。[0073]本发明与现有技术相比的优点在于:[0074](1)较之以hadoop原生hdfs网页访问文件系统的方式,本发明可以支持更多文件系统操作,包括新增、删除、修改、读取、重命名及位置移动。同时,本中间件读取到的文件系统信息可以直接供开发程序使用。[0075](2)较之以hadoop提供的基于java、capi访问接口文件系统的方式,本发明具有轻量、跨语言、跨平台的特点。hadoop提供的api访问方式,在语言层面具有局限性,对java系语言支持较好,对c语言支持较弱。另外,开发环境要求安装hadoop相关lib,开发环境部署较为复杂,不具备轻量的特点。[0076]通过tcp通信与命令行远程调用技术相结合的方式,本发明能实现在语言异构、系统异构的环境中轻量快速访问hdfs文件系统的功能,为开发人员提供了一种更加方便的hdfs文件系统访问方法。[0077]需要说明的是,在本发明实施例的描述中,除非另有明确的规定和限定,术语“设置”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是直接连接,也可以通过中间媒介间接连接。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义;实施例中的附图用以对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。[0078]尽管上面已经示出和描述了本技术的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本技术的限制,本领域的普通技术人员在本技术的范围内可以对上述实施例进行变化、修改、替换和变型。当前第1页12当前第1页12
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献