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

分布式文件系统访问方法、装置、主机和介质与流程

2021-12-17 18:33:00 来源:中国专利 TAG:
1.本发明涉及大数据领域,更具体而言,涉及一种分布式文件系统访问方法、装置、主机和介质。
背景技术
::2.分布式大数据平台基于安全等各方面默认禁止读写本地文件系统,但是,在很多业务场景中,需要在读写文件的过程中调用操作文件系统。例如,用户个性化需求场景中需要针对非结构化数据进行分布式并行读写,对特殊格式资源文件进行加载编辑读写等,这些都需要调用分布式操作文件系统。3.现有技术中,为了能够访问分布式文件系统,一种方案是通过调用第三方文件系统来实现,如maxcompute针对非结构化数据的分布式并行读写,支持通过外表方式读写oss等文件系统上的文件。这种方案有较高的门槛而且需要申请第三方存储带来较大的成本,且需要很多支持措施,增加用户依赖。另一种临时方案是通过封装沙箱方式来让用户运行读写文件系统的的代码。但是,这个方式仍然不能绝对安全,而且使用上带来很多不方便,这种方式一般只支持单独的以mapreduce为接口的用户代码,用户最熟悉的sql等语言和语法并不支持,因此不具有普适性。现有技术缺乏一种使用方便且普适的访问分布式文件系统的方法。技术实现要素:4.有鉴于此,本公开旨在提供一种使用方便、安全、普适的访问分布式文件系统的技术。5.为了达到这个目的,根据本公开的一个方面,提供了一种分布式文件系统访问方法,包括:6.接收用户操作代码;7.启用父进程和子进程,其中,所述子进程执行所述用户操作代码,当执行到对分布式文件系统的访问指令时跳转到所述父进程,由父进程执行所述访问指令,并在执行完所述访问指令后返回所述子进程,所述父进程是所述分布式文件系统所属的平台内安全框架进程。8.可选地,所述方法由所述平台中的主机执行,所述启用父进程和子进程包括:将所述父进程分配到所述平台中除所述主机之外的第一机执行,将所述子进程分配到所述平台中除所述主机之外的第二机执行,所述第二机不同于所述第一机。9.可选地,所述平台除了所述主机之外,还包括工作机和从机,所述第一机和第二机各自选自工作机和从机中的任一个。10.可选地,所述父进程和所述子进程之间的代理被隔离。11.可选地,所述分布式文件系统分为持久化文件系统类型和单点文件系统类型,所述用户操作代码指示分布式文件系统的类型,所述父进程根据指示的所述类型执行对持久化文件系统的第一访问操作,或对单点文件系统的第二访问操作。12.可选地,在启用父进程和子进程之前,所述方法还包括:由父进程创建子进程;在启用父进程和子进程之后,所述方法还包括:由父进程销毁子进程。13.可选地,所述接收用户操作代码包括:14.提供执行层上下文,所述执行层上下文包括分布式文件系统的句柄,所述句柄指向预定义函数或接口;15.响应于用户对所述句柄的获取请求,返回句柄指向的预定义函数或接口;16.接收用户利用所述预定义函数或接口编写的用户操作代码。17.可选地,在接收用户操作代码之后,所述方法还包括:进行所述用户操作代码针对的文件系统的适配,所述适配至少包括:所述针对的文件系统到文件系统前缀的映射,提供权限认证,对文件接口的支持。18.可选地,所述提供权限认证,包括:根据所述对分布式文件系统的访问指令要访问的文件单元的权限信息、所述用户的身份、所述访问指令的访问内容、和访问时间,进行权限认证。19.可选地,所述用户操作代码包括参数设置语句代码,所述参数设置语句代码指定在所述分布式文件系统中要访问的文件。20.可选地,所述用户操作代码包括工具类,所述工具类为程序片段,基于所述工具类的执行结果指定在所述分布式文件系统中要访问的文件。21.可选地,所述父进程具有多个子进程。22.根据本公开的一个方面,提供了一种分布式文件系统访问装置,包括:23.用户接口单元,用于接收用户操作代码;24.父子进程启用单元,用于启用父进程和子进程,其中,所述子进程执行所述用户操作代码,当执行到对分布式文件系统的访问指令时跳转到所述父进程,由父进程执行所述访问指令,并在执行完所述访问指令后返回所述子进程,所述父进程是所述分布式文件系统所属的平台内安全框架进程。25.可选地,所述装置位于所述平台中的主机中,所述父子进程启用单元进一步用于:将所述父进程分配到所述平台中除所述主机之外的第一机执行,将所述子进程分配到所述平台中除所述主机之外的第二机执行,所述第二机不同于所述第一机。26.可选地,所述平台除了所述主机之外,还包括工作机和从机,所述第一机和第二机各自选自工作机和从机中的任一个。27.可选地,所述父进程和所述子进程之间的代理被隔离。28.可选地,所述分布式文件系统分为持久化文件系统类型和单点文件系统类型,所述用户操作代码指示分布式文件系统的类型,所述父进程根据指示的所述类型执行对持久化文件系统的第一访问操作,或对单点文件系统的第二访问操作。29.可选地,所述装置还包括父子进程生命周期管理单元,用于在启用父进程和子进程之前,由父进程创建子进程,在启用父进程和子进程之后,由父进程销毁子进程。30.可选地,所述用户接口单元进一步用于:31.提供执行层上下文,所述执行层上下文包括分布式文件系统的句柄,所述句柄指向预定义函数或接口;32.响应于用户对所述句柄的获取请求,返回句柄指向的预定义函数或接口;33.接收用户利用所述预定义函数或接口编写的用户操作代码。34.可选地,所述装置还包括:文件接口单元,用于进行所述用户操作代码针对的文件系统的适配,所述适配至少包括:所述针对的文件系统到文件系统前缀的映射,提供权限认证,对文件接口的支持。35.可选地,所述提供权限认证,包括:根据所述对分布式文件系统的访问指令要访问的文件单元的权限信息、所述用户的身份、所述访问指令的访问内容、和访问时间,进行权限认证。36.可选地,所述用户操作代码包括参数设置语句代码,所述参数设置语句代码指定在所述分布式文件系统中要访问的文件。37.可选地,所述用户操作代码包括工具类,所述工具类为程序片段,基于所述工具类的执行结果指定在所述分布式文件系统中要访问的文件。38.可选地,所述父进程具有多个子进程。39.根据本公开的一个方面,提供了一种主机,包括:存储器,用于存储计算机可执行代码;处理器,用于执行所述计算机可执行代码,以实现如上所述的方法。40.根据本公开的一个方面,提供了一种计算机可读介质,包括计算机可执行代码,所述计算机可执行代码被处理器执行时实现如上所述的方法。41.本公开实施例采用父子进程来执行对分布式文件系统的访问。子进程执行用户操作代码,当执行到对分布式文件系统的访问指令时跳转到父进程,由父进程执行所述访问指令,并在执行完所述访问指令后返回子进程。由于父进程是所述分布式文件系统所属的平台内安全框架进程,保障了访问分布式文件系统的安全性。该方案提出直接使用底层分布式文件系统而不引入第三方文件系统,提高用户的使用方便性和减少额外支出,且不需要各种权限审批,简单高效。另外,这种父子进程的方式与语言和语法无关,支持各种语言和语法,提高了普适性。附图说明42.通过参考以下附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:43.图1示出本公开实施例应用于的分布式文件系统所属的大数据平台的构架图;44.图2示出了根据本公开一个实施例的分布式文件系统访问方法的流程图。45.图3示出了根据本公开一个实施例的分布式文件系统访问机制的层级结构图。46.图4示出了根据本公开一个实施例的分布式文件系统访问机制的、示出了用于文件接口单元和分布式文件系统的适配的公共文件系统接口层级结构图。47.图5示出了根据本公开一个实施例的分布式文件系统访问装置的框图。48.图6示出了根据本公开一个实施例的主机的结构图。具体实施方式49.以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。50.图1示出本公开实施例应用于的分布式文件系统所属的大数据平台的构架图。51.大数据平台是为了计算现今社会所产生的越来越大的数据量,以存储、运算、展现作为目的的平台。大数据技术是指从各种各样类型的数据中,快速获得有价值信息的技术,包括大规模并行处理(mpp)数据库,数据挖掘电网,分布式文件系统,分布式数据库,云计算平台,互联网,和可扩展的存储系统。大数据平台是一个集数据接入、数据处理、数据存储、查询检索、分析挖掘等、应用接口等为一体的平台。52.分布式文件系统是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连的系统。分布式文件系统的设计基于客户机/服务器模式。一个典型的网络可能包括多个供多用户访问的服务器。另外,对等特性允许一些系统扮演客户机和服务器的双重角色。例如,用户可以“发表”一个允许其他客户机访问的目录,一旦被访问,这个目录对客户机来说就像使用本地驱动器一样。53.如图1所示,大数据平台包括主机110、工作机120、从机130。主机110在大数据平台中只有一台,用于向工作机120发布任务和对工作机120的任务执行进行控制。工作机120有多台,用于执行主机110分配的任务。工作机120配有从机130,用于接受工作机120的控制,完成工作机120分配的任务。54.分布式文件系统分布在图1所示的各个机中,其是管理图1的各个机的硬件与软件资源的计算机程序,同时也是大数据平台的内核与基石。其散落分布在各主机110、工作机120、从机130中,用于对各机的软件资源和硬件资源进行控制。55.进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。进程是程序的基本执行实体,是线程的容器,是程序的实体。进程既是基本的分配单元,也是基本的执行单元。子进程20指的是由另一进程(对应称之为父进程10)所创建的进程;子进程20继承了对应的父进程10的大部分属性,如文件描述符。一个进程可能下属多个子进程20,但最多只能有1个父进程10。本公开实施例中,让子进程20来承担一般的用户操作,让父进程10承担对分布式文件系统的访问。本公开实施例中的父进程10是大数据平台自己的框架进程,所有业务逻辑都是大数据平台本身研发验证的,这样,保障了平台安全和用户代码安全。本公开实施例巧妙地运用了父子进程,把容易造成不安全隐患的对分布式文件系统的访问移到父进程10去执行,而父进程10可以在大数据平台框图下开发,具有安全性。因此,通过这种方式,直接利用父子进程保障了对分布式文件系统的安全性,且方便普适,不需要第三方系统,也没有各种附加运维成本。56.本公开实施例中,用户操作代码规定了要执行的所有操作,包括普通操作(非对分布式文件系统进行访问的操作)和对分布式文件系统进行访问的操作。其都交给子进程20执行,但子进程20执行到对分布式文件系统的访问指令时跳转到所述父进程10(例如,通过远程过程调用rpc,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议),由父进程10执行所述访问指令,并在执行完所述访问指令后返回所述子进程20(例如,通过rpc)。57.在一个实施例中,将父进程10分配到大数据平台中除所述主机110之外的第一机(工作机或从机)执行,将所述子进程分配到所述平台中除所述主机110之外的第二机(工作机从从机)执行,所述第二机不同于所述第一机。在图1中,父进程在工作机120中,子进程在其从机130中,但也可能相反,即父进程在从机130中,子进程在工作机120中。或者,父进程和子进程分别在两个工作机120中,或者分别在两个从机130中。58.如图1所示,父进程在工作机120中,子进程在其从机130中。主机110接到用户操作代码后,先都分配给工作机120的父进程10,父进程10先不加区分地交给从机130的子进程20执行。当子进程20执行到对分布式文件系统的访问指令时,通过rpc等调用所述父进程10,由父进程10执行所述访问指令,并在执行完所述访问指令后通过rpc等返回所述子进程20。59.工作机120具有调用服务端121,从机130具有调用客户端131。调用服务端121和调用客户端131的主要功能是进行通信(例如rpc调用),从而实现父子进程之间的调用(包括上述父进程10调用子进程20,子进程20调用父进程10)。60.父进程10和子进程20之间的调用分为同步调用和异步调用。61.当同步调用时,调用服务器121向调用客户端131发送握手消息,调用客户端131对该握手消息实时进行响应。当调用服务器121接收到该实时的响应后,双方建立握手。父进程10开始调用子进程20,或者,子进程20调用父进程10。即,调用方将需要被调用方执行的程序发送给被调用方。62.当异步调用时,调用服务器121和调用客户端131之间开启一个管道。调用客户端131通过读端口对该管道进行监听。调用服务器121向该管道写入响应请求,调用客户端131不用实时对该响应请求进行应答,该响应请求留在管道内。当调用客户端131读取到该响应请求的最后一个字时,返回应答。然后,父进程10开始调用子进程20,或者,子进程20调用父进程10。即,调用方将需要被调用方执行的程序发送给被调用方。由于本公开实施例允许异步的方式进行调用,提高了调用操作的灵活性。63.如图1所示,在执行一个任务时,主机110将任务的计划(通过用户操作代码)下放到工作机120的父进程10,父进程10将其下放到其下属的从机130的子进程20。子进程20向父进程10返回执行的进度,父进程10向主机110返回该执行的进度。当主机110要对数据访问时,将数据访问请求(通过用户操作代码)下放到工作机120的父进程10,父进程10将其下放到其下属的从机130的子进程20。如果不是非对分布式文件系统的访问,子进程20执行该访问,如果涉及修改,将修改结果返回工作机120的父进程10,由父进程10将修改结果返回主机110。如果是对分布式文件系统的访问,子进程20返回父进程10执行(通过调用服务端121和调用客户端131之间的调用),执行完毕后,再返回子进程20(通过调用服务端121和调用客户端131之间的调用)。64.在本公开实施例中,所述父进程10和所述子进程20进行代理隔离,即父进程10和子进程20之间的代理被隔离。在传统的父子进程的访问中,父进程10通过代理对子进程20进行访问,这无疑增加了泄密的可能性。本公开实施例将父进程10和子进程20传统的通过代理访问的方式改为直接访问,隔离代理,大大降低了代理访问造成的不安全隐患。65.如图2所示,提供了一种分布式文件系统访问方法,所述方法由主机110执行。该方法包括:66.步骤210、接收用户操作代码;67.步骤220、启用父进程和子进程,其中,所述子进程执行所述用户操作代码,当执行到对分布式文件系统的访问指令时跳转到所述父进程,由父进程执行所述访问指令,并在执行完所述访问指令后返回所述子进程,所述父进程是所述分布式文件系统所属的平台内安全框架进程。68.下面对上述步骤进行详细描述。69.在步骤210中,接收用户操作代码。70.用户操作代码是指用户编写的用于执行大数据平台上的操作的代码,其包括可能的对分布式文件系统的访问代码,也包括用于其它操作的代码。对于用于其它操作的代码,其由子进程20执行;对于对分布式文件系统的访问代码,其由子进程20跳转到父进程10执行。71.在一个实施例中,步骤210包括:72.提供执行层上下文,所述执行层上下文包括分布式文件系统的句柄,所述句柄指向预定义函数或接口;73.响应于用户对所述句柄的获取请求,返回句柄指向的预定义函数或接口;74.接收用户利用所述预定义函数或接口编写的用户操作代码。75.执行层上下文是程序代码执行用到的环境。可以将执行程序代码时用到的一些信息等放到上下文中,方便程序代码执行。76.用户操作代码是用户编写的。一般来说,向用户开放用户接口(即用户应用层,由图3的用户接口单元310执行),由用户在用户接口中进行编程。但本公开实施例并不是由用户机械地将编写的代码键入用户接口,而是采用可以调用一些预定义函数或接口,从而简化操作。例如,分布式sql语言的通用语法,如自定义函数udf、自定义聚合函数udaf、自定义表函数udtf、通用的mapreduce用法、图计算graph的自定义接口等,不需要再单独开发,将指向这些预定义好的函数或接口的句柄放在执行层上下文中。77.句柄是指使用的一个唯一的整数值,即一个4字节(64位程序中为8字节)长的数值,来标识应用程序中的不同对象和同类中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。在本公开实施例中,其标识预定义函数或接口,如自定义函数udf、自定义聚合函数udaf、自定义表函数udtf、通用的mapreduce用法、图计算graph的自定义接口等。应用程序能够通过句柄访问相应的对象的信息,但是句柄不是指针,程序不能利用句柄来直接阅读文件中的信息。78.因此,向用户提供提供执行层上下文,所述执行层上下文包括指向预定义函数或接口的句柄。用户编写用户操作代码时,如果用到预定义函数或接口,在接口上对所述句柄的获取请求,接口向用户返回句柄指向的预定义函数或接口,用户就可以在接口上利用所述预定义函数或接口编写用户操作代码。79.该实施例的好处在于,统一了用户应用层的使用,使得分布式sql的通用语法,如自定义函数udf、自定义聚合函数udaf等,不需要再单独开发,统一从执行层上下文获取文件系统句柄即可使用。用户使用原来的编程模式和通用的文件i/o接口即可,不需要有新的成本去学习,降低了用户的学习成本,提高了通用性。80.另外,本公开实施例还提供了简化统一的参数设置模式,通过在接口上输入简单的语句指定输入输出文件的名称、标签等。即,所述用户操作代码包括参数设置语句代码,所述参数设置语句代码指定在所述分布式文件系统中要访问的文件。81.在一个实施例中,通过setk=v形式的参数设置语句代码指定要访问的文件。k是指定要访问的文件的标识符,v是要访问的文件所存储在的位置或标签。标签的含义是,为了简化对一些存储位置的指定操作而将一些存储位置贴上的标记,使得之后要指定这些位置上存储的文件的时候,仅用标签指代即可。标签尤其对于同时指定多个存储位置上的文件时效果更明显。可以将多个存储位置同时做上同一标签,这样,用该标签就可以表示对所有这些存储位置的文件同时访问。这种方式对于sql、mapreduce、graph等各种算法都能支持,不需要再做二次指定和开发。一个示例性的参数设置语句如下:82.setodps.sql.volume.input[/output].desc=[<project>.]<table>.<partition>[:<label>];[0083]其中,方括号内的参数是可选的。odps.sql.volume.input[/output].desc表示要访问的文件,其中input或output表示将文件输入或输出,project表示要访问的文件所在的组,table表示要访问的文件所在的表,label表示要访问的文件所在的分区,组包括表,表包括分区。label表示要访问的文件的标签。[0084]在一个实施例中,不采用上述参数设置语句的方式指定在所述分布式文件系统中要访问的文件,而是通过工具类。所述用户操作代码包括工具类。工具类是这样一个程序片段,基于其执行结果可以指定在所述分布式文件系统中要访问的文件。[0085]工具类如下这种方式有一定的灵活性。这种方式是参数设置语句的方式的一种变体,工具类会把用户通过对象化方式(程序片段)设置的参数转化为设置参数。两种方式只是对于用户来说感知不同,对平台是统一的,都会通过设置方式提交识别。下面是工具类的示例性例子:[0086]inpututils.addvolume(newvolumeinfo([project,]involume,inpartition,"inlabel"),newjobconf());[0087]outpututils.addvolume(newvolumeinfo([project,]outvolume,outpartition,"outlabel"),newjobconf());[0088]本公开实施例方案统一用户应用层的使用,用户使用原来的编程模式和通用的文件i/o接口即可,不需要有新的成本去学习。[0089]另外,在一个实施例中,在步骤210之后,所述方法还包括:进行所述用户操作代码针对的文件系统的适配,所述适配至少包括:所述针对的文件系统到文件系统前缀的映射,提供权限认证,对文件接口的支持。该操作是通过如图3-4所示的文件接口单元320执行的。[0090]用户应用层的用户接口单元310是大数据平台面向用户的接口单元,负责用户操作代码的输入,而文件接口单元320则是面向文件的接口单元,负责所述用户操作代码对文件系统的适配,即适配出用户操作代码要访问哪些文件。该部分目前可以基于目前通用的文件系统接口hadoopfilesystem系统实现,但本公开实施例对该通用文件系统接口作了扩展,主要是增加了针对的文件系统到文件系统前缀(prefix)的映射,提供权限认证,对文件接口的支持,包括对symlink、snapshot、acl、xattr相关接口的支持,对listcorruptfileblocks接口的支持,对seektonewsource接口的支持,实现concat、truncate接口。[0091]文件系统到文件系统前缀(prefix)的映射可以快速帮用户锁定用户要访问的文件系统对应的存储区域,其中相同的文件系统前缀的文件系统存储在邻近的区域。[0092]权限认证可以对分布式文件系统的文件单元单独设置权限信息。文件单元是设置相同的权限信息的最小单位。例如,在持久化(volumn)文件系统中,将同一份系统文件在多个工作机或从机上设置多个备份,这多个备份的权限信息应该是相同的,因此,将这多个备份合起来作为一个文件单元。权限信息是规定对文件单元访问的权限的信息。该权限包括用户身份权限、可访问的文件内容权限、访问时间权限等。例如,规定a用户只能在周一到周五访问类型为x的文件单元,那么仅判断是用户a在访问是不够的,还要结合访问文件内容和访问时间判断。因此,该权限的判断是多方面的判断。所述提供权限认证包括:根据所述对分布式文件系统的访问指令要访问的文件单元的权限信息、所述用户的身份、所述访问指令的访问内容、和访问时间,进行权限认证。如果所述用户的身份、所述访问指令的访问内容、和访问时间符合所述权限信息,则认证成功。通过这种方式,提高了访问的安全性。[0093]对各种文件接口的支持可以扩展用户能够访问的文件的范围,提高用户体验。[0094]如图4所示,在分布式文件系统330和文件接口单元320之间还设置有公共文件系统接口321,它的作用是在分布式文件系统330和文件接口单元320之间进行语义适配,实现语义兼容,为开源生态提供支持。由于文件接口单元320的扩展,例如上述的增加针对的文件系统到文件系统前缀的映射、提供权限认证、对文件接口的支持等,主要是通过开源的形式,而分布式文件系统330一般是在云端的,需要公共文件系统接口321进行语义适配。公共文件系统接口321是访问分布式文件系统330的java接口,基于其实现了开源hdfs兼容。公共文件系统接口321有两套对分布式文件系统330的访问路径,一套是根据现有技术的单一进程15的方式,一套是根据本公开实施例的子进程20和父进程10相互调用的方式。[0095]在步骤220中,启用父进程和子进程。[0096]由子进程20执行步骤210接收的用户操作代码。当执行到对分布式文件系统的访问指令时,跳转到所述父进程10,由父进程10执行所述访问指令,并在执行完所述访问指令后返回所述子进程20。上述过程在结合图1的框架的介绍中已经详细描述,故不赘述。[0097]在一个实施例中,如图3所示,所述分布式文件系统分为持久化(volume)文件系统331类型和单点(tempfile)文件系统332类型,分别支持对持久化文件和单点文件的操作。持久化文件针对持久化的存储需求,在大数据平台上的不同工作机120、从机130上存储多个备份。单点文件用于临时读写、单节点存储(存储在一台工作机120或从机130上),当前作业生命周期有效,作业执行结束会被自动清理。针对不同需求场景可以选择使用不同的文件系统。[0098]步骤210中接收的用户操作代码指示分布式文件系统的类型,所述父进程10根据指示的所述类型执行对持久化文件系统331的第一访问操作,或对单点文件系统332的第二访问操作。即,如果该类型是持久化文件系统331类型,则父进程10执行持久化文件系统访问101;如果该类型是单点文件系统332,则父进程10执行单点文件系统访问102。[0099]另外,在一个实施例中,在启用父进程和子进程之前,由父进程创建子进程。在启用父进程和子进程之后,由父进程销毁子进程。通过规定完善的由父进程创建子进程、监控子进程、销毁子进程的方式,完善了父子进程结构的子进程生命周期管理。而且,一个父进程可以创建多个子进程,分别执行上述步骤210-220,在各自的数据访问完成后,分别销毁子进程,实现了多个子进程生命周期的高效管理。[0100]本公开实施例中,父子进程的模型可带来以下优势:分布式文件系统的框架和用户程序分离,系统结构更清晰。父进程专门解决一些分布式文件系统固有问题和对安全性有影响的重大问题,子进程解决一些不会对分布式文件系统造成安全性影响的问题。父子进程可以通过rpc调用的方式交互,更易实现跨语言。用户执行逻辑都在子进程中执行,方便安全控制。上层可抽象为更通用的框架,可抽出公共的服务交由父进程执行,子进程侧重于具体的执行。另外,父子进程支持一对多的模式,即一个父进程可对应多个子进程。这在某些场景中是有必要的,比如某些脚本语言(例如,python、shell)不支持多线程,如果要实现并发就只能使用多进程方式。[0101]本公开实施例直接使用底层分布式文件系统,而不引入第三方文件系统,提高用户的使用方便性和减少额外支出。相比于现有技术中通过调用第三方文件系统来实现对分布式文件系统的访问的方式,门槛比较低,不需要申请第三方存储,不需要针对第三方文件系统的特性在分布式计算时进行二次开发,比如对文件的切分、数据序列化反序列化等,不需要提供类似外表的框架方式和语法接口来支持和识别用户的输入输出、配置参数等,不增加用户依赖。另外,本公开实施例支持了在自定义程序中调用java接口访问读写存储在底层分布式存储中的文件,对文件系统调用的自定义程序支持在隔离环境运行,对文件系统操作的调用通过父子进程代理访问,不需要申请审批各类复杂权限,在集团内部环境设置参数即可使用,简单易用,安全可控。本公开实施例统一了上层用户应用层的用户接口,兼容复用大数据平台的已有语法sql、mapreduce等,这些函数或接口等不需要单独开发,统一从执行层上下获取文件系统句柄即可调用。用户使用原来的编程模式和通用的文件i/o接口即可,降低了用户的学习成本。[0102]如图5所示,根据本公开的一个实施例,提供了一种分布式文件系统访问装置300,包括:[0103]用户接口单元310,用于接收用户操作代码;[0104]父子进程启用单元320,用于启用父进程和子进程,其中,所述子进程执行所述用户操作代码,当执行到对分布式文件系统的访问指令时跳转到所述父进程,由父进程执行所述访问指令,并在执行完所述访问指令后返回所述子进程,所述父进程是所述分布式文件系统所属的平台内安全框架进程。[0105]可选地,所述装置300位于所述平台中的主机中,所述父子进程启用单元320进一步用于:将所述父进程分配到所述平台中除所述主机之外的第一机执行,将所述子进程分配到所述平台中除所述主机之外的第二机执行,所述第二机不同于所述第一机。[0106]可选地,所述平台除了所述主机之外,还包括工作机和从机,所述第一机和第二机各自选自工作机和从机中的任一个。[0107]可选地,所述父进程和所述子进程之间的代理被隔离。[0108]可选地,所述分布式文件系统分为持久化文件系统类型和单点文件系统类型,所述用户操作代码指示分布式文件系统的类型,所述父进程根据指示的所述类型执行对持久化文件系统的第一访问操作,或对单点文件系统的第二访问操作。[0109]可选地,所述装置还包括父子进程生命周期管理单元(未示),用于在启用父进程和子进程之前,由父进程创建子进程,在启用父进程和子进程之后,由父进程销毁子进程。[0110]可选地,所述用户接口单元310进一步用于:[0111]提供执行层上下文,所述执行层上下文包括分布式文件系统的句柄,所述句柄指向预定义函数或接口;[0112]响应于用户对所述句柄的获取请求,返回句柄指向的预定义函数或接口;[0113]接收用户利用所述预定义函数或接口编写的用户操作代码。[0114]可选地,所述装置300还包括:文件接口单元320,用于进行所述用户操作代码针对的文件系统的适配,所述适配至少包括:所述针对的文件系统到文件系统前缀的映射,提供权限认证,对文件接口的支持。[0115]可选地,所述提供权限认证,包括:根据所述对分布式文件系统的访问指令要访问的文件单元的权限信息、所述用户的身份、所述访问指令的访问内容、和访问时间,进行权限认证。[0116]可选地,所述用户操作代码包括参数设置语句代码,所述参数设置语句代码指定在所述分布式文件系统中要访问的文件。[0117]可选地,所述用户操作代码包括工具类,所述工具类为程序片段,基于所述工具类的执行结果指定在所述分布式文件系统中要访问的文件。[0118]可选地,所述父进程具有多个子进程。[0119]由于上文已经结合图2针对本公开的分布式文件系统访问方法进行了详细描述,分布式文件系统访问装置300的实现细节与分布式文件系统访问方法是基本一致的,故不赘述。[0120]根据本公开的一个实施例的图片自动生成方法可以由图6的主机110实现。下面参照图6来描述根据本公开实施例的主机110。图6显示的主机110仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。[0121]如图6所示,主机110以通用计算设备的形式表现。主机110的组件可以包括但不限于:上述至少一个处理单元810、上述至少一个存储单元820、连接不同系统组件(包括存储单元820和处理单元810)的总线830。[0122]其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元810执行,使得所述处理单元810执行本说明书上述示例性方法的描述部分中描述的本发明各种示例性实施方式的步骤。例如,所述处理单元810可以执行如图2中所示的各个步骤。[0123]存储单元820可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)8201和/或高速缓存存储单元8202,还可以进一步包括只读存储单元(rom)8203。[0124]存储单元820还可以包括具有一组(至少一个)程序模块8205的程序/实用工具8204,这样的程序模块8205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。[0125]总线830可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。[0126]主机110也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该主机110交互的设备通信,和/或与使得该主机110能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口850进行。并且,主机110还可以通过网络适配器860与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器860通过总线830与主机110的其它模块通信。应当明白,尽管图中未示出,可以结合主机110使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。[0127]需要领会,以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本说明书的实施例存在许多变型。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。[0128]应该理解,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。[0129]应该理解,上述对本说明书特定实施例进行了描述。其它实施例在权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。[0130]应该理解,本文用单数形式描述或者在附图中仅显示一个的元件并不代表将该元件的数量限于一个。此外,本文中被描述或示出为分开的模块或元件可被组合为单个模块或元件,且本文中被描述或示出为单个的模块或元件可被拆分为多个模块或元件。[0131]还应理解,本文采用的术语和表述方式只是用于描述,本说明书的一个或多个实施例并不应局限于这些术语和表述。使用这些术语和表述并不意味着排除任何示意和描述(或其中部分)的等效特征,应认识到可能存在的各种修改也应包含在权利要求范围内。其他修改、变化和替换也可能存在。相应的,权利要求应视为覆盖所有这些等效物。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献