卸载数据分析应用中的概率计算的制作方法

文档序号:14033680阅读:232来源:国知局
卸载数据分析应用中的概率计算的制作方法

相关申请案交叉申请

本申请要求2015年8月7日递交的发明名称为“卸载数据分析应用中的概率计算(offloadingprobabilisticcomputationsindataanalyticsapplications)”的第14/821,320号美国专利申请案的在先申请优先权,该在先申请的全部内容以引用的方式并入本文本中。

本发明实施例大体上涉及分析计算领域。具体而言,本发明实施例涉及分布式概率计算。



背景技术:

许多数据分析应用(例如,推荐引擎)需要通过专用概率数据结构(例如,布隆过滤bloomfilter、线性计数、重对数计算(loglogcounting)、元素基数、count-min算法)基于非常大量的数据进行概率计算。这通常需要从一个或多个存储服务器中提取大量数据并将这些数据传输给计算节点以进行处理。目前没有将基于概率的计算卸载到在分布式文件存储服务器(例如,nfs/cifs服务器)上执行的可行方案。一些方法使得将原始数据传送给节点以进行处理时的网络使用、nas侧cpu使用、内存使用和nic使用大幅度增加。其它缺点包括计算期间的数据提取延迟和应用服务器资源消耗。

非常大的数据集在web领域或数据分析领域很常见。许多模型用来处理大规模数据,例如mapreduce。这种大规模数据处理的一个示例是hadoop生态系统,其以查询大数据集进行分析为基础。对于这种大规模数据,内存资源经常是一个限制性因素。已探研究过各种算法,这些算法尝试达成内存使用量与所需精度之间的折衷。因为分析需要估计查询结果,所以,如果基于用来计算期望值的计算模型,则该期望值的变化是可容许的且安全的。



技术实现要素:

通过存储端处的轻量级(例如,低开销)vm实现了一种卸载概率计算方法。本方法通过嵌入概率运算(例如,语义)以及指向存储设备上的数据的指针,通过扩展分布式协议来实现。存储控制器执行多个功能,包括去重、配置、复制和分层。概率算法(例如,分类、聚类和协同过滤)可嵌入具有限定扩展的传统协议(nfs&cifs)中。使用转换器或解析器将表达式(运算)转换为c个对象。每个运算在一个容器中执行,该容器提供沙盒化环境(vm或者进程级vm,如zerovm)。不同运算以流水线方式执行,其中每个运算的输出被输入到下一运算。

在一项实施例中,描述了一种用于将概率计算卸载到存储设备的装置。所述装置包括应用服务器,所述应用服务器包括存储器和处理器并且耦合到网络附加存储设备,所述网络附加存储设备用于基于数据请求响应虚拟机容器的程序调用而创建专用进程。所述处理器将所述数据请求转发给所述网络附加存储设备,对一个或多个虚拟机进行编程以基于所述程序调用执行概率计算,并将所述概率计算指示给所述一个或多个虚拟机中的第一虚拟机。所述数据请求使用虚拟化查找调用转变为修改后的调用。

在另一实施例中,公开了一种用于将计算卸载到存储设备的方法。所述方法包括:使用用户级应用将进程标识符注册到处理器,以便与所述处理器建立通信信道并派生虚拟机的输出以创建新进程;使用虚拟化查找调用将数据请求转变为修改后的调用;使用虚拟化nfs程序调用和所述通信信道将所述修改后的调用转发给所述用户级应用;在所述处理器的内核地址空间与用户地址空间之间创建进程间通信信道;以及使用所述通信信道将nfs调用转发给所述虚拟机以执行所述概率计算。

附图说明

附图包含在并且构成本说明书的一部分,示出了本发明的各种实施例,并且与描述内容一起用于解释本发明的原则:

图1为根据本发明实施例的描绘示例性系统架构的方框图。

图2是根据本发明实施例的描绘用于从应用服务器卸载运算的示例性配置的方框图。

图3为根据本发明实施例的描绘示例性概率计算的方框图。

图4是根据本发明一些实施例的描绘用于将存储端处的vm与应用服务器集成的步骤的示例性计算机实施序列的流程图。

具体实施方式

现在将详细地给出一些实施例的参考。虽然结合可替代的实施例描述该主题,但应该理解它们不是旨在将请求保护的主题限制于这些实施例。相反,请求保护的主题旨在覆盖可以包括在由附加的权利要求书限定的请求保护的主题的精神和范围内的替代物、修改和等同物。

另外,在以下本发明的详细描述中,阐述了许多特定细节以便提供对请求保护主题的透彻理解。然而,所属领域的技术人员将认识到,可以在没有这些具体细节的情况下实践实施例。在其它实例中没有详细描述众所周知的方法、流程、部件和电路,以免对本请求保护的主题的各方面和特征造成不必要地模糊。

下面详细描述的部分以方法的方式表示和讨论。实施例很好地适合于执行多种其它步骤或在此处的流程图中引用的步骤的改变,以及以与此处描述和说明的不同的顺序执行。

该具体实施方式的一些部分按照程序、步骤、逻辑块、处理、以及对计算机存储器中的数据位的操作的其它符号表示来呈现。这些描述和表示是数据处理领域技术人员向该领域其他技术人员有效传达工作实质内容使用的方法。将程序、计算机执行的步骤、逻辑块、过程等一般设想为首尾一致的步骤或指令序列,以产生期望的结果。这些步骤需要物理量的物理操控。通常,并不是完全必须的,这些量以电信号或磁信号的形式存在,可以被存储、转移、合并和比较,否则将在电脑系统中被操控。有时候这种方法被证明是行之有效的,主要出于常见用法的考虑,将这些信号作为比特位、数值、元素、符号、字符、术语、或数字等等。

然而,应牢记,所有这些和类似术语与适当物理量相关联,且仅为应用于这些量的方便标签。除非确切地陈述为从以下论述显而易见,否则应了解,利用例如“访问”、“编写”、“包含”、“存储”、“传输”、“遍历”、“关联”、“标识”等术语的论述是指操控表示为系统的寄存器和存储器内的物理(电子)量的数据并将这些数据变换为类似地表示为系统存储器或寄存器或其它此类信息储存、传输或显示设备内的物理量的其它数据的计算机处理器、网络设备或其它电子计算设备的动作和进程。

卸载数据分析应用中的概率计算

随着存储操作成本越来越低,在存储设备侧执行的大规模计算(而不是将数据提取到计算节点的内存中以执行计算)变得更加可行。在存储设备侧执行概率计算可减少或消除将原始数据从一个或多个文件服务器传送到计算节点以进行处理时所需的网络使用、nas侧cpu利用、内存使用和nic使用。本文公开了一种使用修改后的应用api在分布式节点处计算概率计算的方法论。

为了对大的整数集执行概率计算,例如,原始数据需要能够以一种适用于查询数据分析的形式来表示。一个示例查询会尝试确定最前面的最频繁的k个元素。然而,维护数百万个整数的状态信息将需要大量内存。而近似数据结构可用于分析。count-min是用于计算存储在数据集中的最前面k个元素的概率数据结构的示例。注意的是,可能需要多个哈希来存储数据集状态并实现数据集状态的查询。结果经常由元素的数量和数据集中的不同元素控制。类似地,概率数据结构的另一示例是布隆过滤器。布隆过滤器通过位集合使用若干独立的哈希函数来跟踪项目状态。一个示例应用用例是在受欢迎的社交网站中使用的推荐引擎,其中使用布隆过滤来排除一些候选项。

此处描述了使用轻量级虚拟化进行数据集的概率计算。在一种方法中,通过分布式文件系统协议传送查询,并在预先配置的专用于执行概率计算算法的虚拟机(virtualmachine,vm)上启动概率计算。这些vm用于从输入信道接收输入,执行概率算法,并通过输出信道发送结果。这一方法还支持派生(例如,创建新进程)或在多个vm间分配计算以执行不同的算法(例如,并行计算),从而提高计算性能和/或准确性。此外,所描述的方法可由于以下事实而扩展:可根据环境利用更多或更少的vm。

通常,数据分析(或基于机器学习的分析)经历多个阶段(例如,分类、聚类和协同过滤)。分类尝试基于某些特性对信息进行分类。执行聚类是为了发现具有相似特性的对象或确定重叠对象。协同过滤是一种常用来基于多个数据源过滤出对象的技术。每个阶段都有其自己的计算要求,而将非常大的数据集(例如,拍字节数据)进行分类可能需要大量处理能力。

这种概率计算方法通过存储端处的轻量级(例如,低开销)vm来实现。本方法通过嵌入概率运算(例如,语义)以及指向存储设备上的数据的指针,通过扩展分布式协议来实现。存储控制器执行多个功能,包括去重、配置、复制和分层。

参考图1,根据本发明一些实施例描绘了示例性系统架构100。在应用服务器102处接传入客户端请求101。应用服务器102执行nfs/cifs客户端应用103,并通过网络结构104耦合到网络附加存储(network-attachedstorage,nas)设备105和nas设备107。nas设备107包括具有一个或多个存储设备110的nas服务器109,并维护轻量级的虚拟环境108。如图1所示,虚拟环境108具有多个虚拟机(例如,vc1、vc2、vc3和vc4)。

概率算法(例如,分类、聚类和协同过滤)可嵌入具有“prob_xxx”扩展的传统协议(nfs&cifs)中。使用转换器或解析器将表达式(运算)转换为c个对象。每个运算在一个容器中执行,该容器提供沙盒化环境(vm或者进程级vm,如zerovm)。不同运算以流水线方式执行,其中每个运算的输出被输入到下一运算。例如,可执行五个不同的运算:

op1—从文件a读取图形

op2—从文件b读取图形

op3—执行协同过滤

ope4—对op3的输出执行count-min算法

op5—将结果模型保存到文件c

表i

参考图2,根据本发明一些实施例描绘了用于从应用服务器卸载运算的示例性配置。应用服务器208执行应用201,程序调用使用nfs客户端202卸载。执行nfs服务器203的nas设备209接收初始文件句柄提取以及修改后的nfs程序运算。nfs服务器203耦合到内核通信模块204。内核通信模块204可在通用处理器或网络处理器等上执行。内核通信模块204用于向用户级vm容器提供修改后的rpc调用的间接寻址。用户通信模块205具有用户级应用线程206,其用于从内核接收请求参数以配置沙盒环境。用户程序将进程id(processid,pid)注册到内核以与内核建立通信信道。存储部件内部的应用执行可以应用模板207,以基于配置参数改变存储容器的行为。

nfs协议和配置

网络文件系统是一种基于远程程序调用(remoteproceduralcall,rpc)的网络协议。nfs协议将一个远程文件划分为大小相等的块,并支持按需、基于块的文件内容传输。为nfs协议定义了多个程序调用,例如读取(read)、查找(lookup)、读取目录(readdir)、移除(remove)等。虽然其它文件系统协议可用于本发明,但是nfs是首选协议,因为其使用了远程程序调用(remoteproceduralcall,rpc)。

在nfs协议的上下文中,使用不透明文件句柄对文件或目录对象进行寻址。任何读取调用之前都要进行查找,以定位要读取的文件对象。然后迭代对读取调用进行调用,其中迭代数基于nfs配置和要提取的文件大小。随着文件大小持续增长,通常称为大数据,的趋势愈演愈烈以及随着领域中新工作负载的出现,某些操作(例如,分布式文件系统上的读取操作)变得非常消耗资源。在许多情况下,对于大规模数据,可以在后端设备上无缝执行联合运算,并向服务器地址空间中的应用返回结果。在从后端设备提取数据之后将运算(例如,逻辑或语义)嵌入传统的分布式协议中可能会降低或消除将大规模数据提取到服务器中的成本。

进程级虚拟机

进程级vm通常用于为一组进程提供沙盒化环境以安全地执行或者提供平台独立性给用户应用。进程级虚拟机是openvz和linux容器(linuxcontainer,lxc)等虚拟化容器的重要部件。本发明的一个方面提供了用于应用执行的专用堆栈。一种为操作系统提供专用堆栈的方法称为exokernel(还称为libos)。exokernel减少通常由单片操作系统(operatingsystem,o/s)提供的抽象。o/s功能在用户级导出,应用可与专用o/s运行时和专用设备驱动器动态链接以减少或消除传统操作系统中发生的开销。libos通常提供接口,例如进程管理、寻呼、文件系统和文件调用接口。随着大数据的到来,将数据移至靠近存储部件非常有利。例如,融合存储与处理和存储控制器位于同一模具或者非常靠近,可通过将计算任务卸载到存储部件来消除总线延迟或网络延迟。

基于libos主体的轻量级虚拟化的一个示例是zerovm。zerovm使单个进程或任务能够隔离到单独的容器中。该方法仅支持基本任务而非完整软件堆栈的隔离(例如,沙盒化)。存储部件内部的应用执行可以应用模板清单,以基于配置参数改变存储容器的行为。通常,各抽象层被添加到存储设备之上,从而为客户端请求提供自定义服务。例如,可使用linuxlun或卷来提供容量抽象。还存在专用于虚拟化的存储设备。

多个类别可用于模板容器以在存储侧部署进程级vm,例如容量、吞吐量、虚拟化和功能变换。根据本发明一些实施例,使用基于zerovm方法的轻量级虚拟化,因为谷歌(举例)原生客户端是一种经过良好测试的为应用提供安全执行的方法,并且虚拟机监视器执行vm需要的内存较少。

概率计算卸载

可修改用户应用api以包括新提议的nfs程序调用prob-lookup的概率运算。prob-lookup调用在多个文件上调用查找,在安全环境(进程级vm)中,在这些文件读取之上调用概率运算。这是一个迭代的程序调用,涉及查找文件名、调用读取、最终在其上应用概率运算计算(例如,count-min、布隆过滤器(bloomfilter)、线性计数、重对数计算(loglogcounting)等)。系统调用传递语义信息和文件清单给nfsprob-lookup程序调用。概率运算可定义为:

注意的是,客户端和服务器对在存储端可行的概率计算进行同步。虚拟机监视器可以将计算重指示给预配置有概率算法并监听来自客户端的请求的vm。

参考图3,根据本发明一些实施例描绘了示例性概率计算。如图所示,该实施方式具有dfs客户端303和dfs服务器306。第一nas地址空间301中的dfs客户端303接收传入客户端302请求。该请求通过扩展协议304转发给具有第二nas地址空间305的dfs服务器306。虚拟机环境307中的每个vm(例如,vc1、vc2、vc3和vcn)都可动态调用。根据一些实施例,每个vm用于执行不同的概率算法(例如,count-min、重对数计算(loglogcounting)、布隆过滤器(bloomfilter))。布隆过滤器可使用高效利用空间的概率数据结构。将多个哈希函数应用到每个元素,并维护状态数据。布隆过滤器对于成员资格查询很有用。count-min运算对于频率估计很有效,例如以便确定大数据集中的最前面的k个元素。

可修改nfs/cifs协议以通过添加以下原语支持执行基于概率的算法:

●prob_compute(“expr”);

o输入(expr)=要读取数据和操作类型(分类、聚类、协同过滤)的图形或数据文件

o输出=数据模型或状态

●prob_compute_save(“expr”,”filename”);

o输入(expr)=要读取数据和操作类型(分类、聚类、协同过滤)的图形或数据文件

o输入(filename)=存储结果的数据文件名。

o输出=状态

●prob_from(“filename”);

o与prob_compute和prob_compute_save结合使用以从数据文件加载多维数组(每个维度表示一个系列的事件)

o输入=文件名

o输出=多维数组

●prob_classify(“filename-x”,“filename-y”);

o用于基于信息特性对信息分类并生成模型

o输入=文件名-x源数据文件

o输入=文件名-y特性元素数据文件

o输出=训练后的模型

●prob_clustering(“filename-x”,“filename-y”);

o具有相似特性的集群对象

o输入=文件名-x源数据文件

o输出=二维数组(数据id和集群id)

●prob_collabfilter(“filename-x”,“filename-y”);

o基于多个数据源过滤出数据

o输入=文件名-x源数据文件

o输入=文件名-y特性源数据文件

o输出=二维数组

表ii

用户内核通信模块

内核模块用于向用户级zerovm容器提供修改后的rpc调用的间接寻址。容器用于使用输入/输出参数和系统配置文件运行卸载的运算。内核模块在内核地址空间与用户地址空间之间创建进程间通信(inter-processcommunication,ipc)信道,以将nfs调用转发给虚拟机和/或安全容器。用户级应用线程用于从内核接收请求参数以配置沙盒环境。用户程序将进程id注册到内核以与内核建立通信信道。

zerovm轻量级虚拟化

根据本发明一些实施例,zerovm云虚拟机监视器用于运行卸载的概率运算。zerovm是进程级沙盒,其支持在安全环境中执行单个任务。zerovm特征包括:限制应用的内存访问;能够运行外来编译的源代码;以及系统调用限制条件。抽象受到限制,使得非常小的表面会遭受攻击威胁。对于通信,zerovm有多个信道(例如,随机读取和按序写入)。zerovm中的vm可通过存储代表性参数的配置文件派生以自举安全环境。当一个修改后的rpc调用通过嵌入的语义调用时,这些参数可由用户级应用动态配置。

参考图4,根据本发明实施例描绘了用于将存储端处的vm与应用服务器集成的步骤的示例性顺序,其中卸载通过内核用户间接寻址执行。或者,该方法可采用用户级间接寻址。如流程图400所描绘,在卸载和部署期间可发生以下一系列示例性事件。在步骤401处,将通信模块作为间接寻址层加载以将基于语义的程序调用传递到进程级虚拟机。在步骤402处,将修改后的nfs服务器加载到o/s中以建立ipc通信信道用户空间容器。在步骤403处,调用用户级应用程序以将pid注册到内核模块并且还可按需派生vm。过程在步骤404处继续,在步骤404处,自举修改后的nfs服务器(mountd和nfsd)。在步骤405处,启动客户端应用,并通过虚拟化查找调用将数据请求转变为修改后的调用。在步骤406处,使用虚拟化nfs程序调用将修改后的调用转发给用户级应用,该虚拟化nfs程序调用还可为卸载到安全容器中的数据运算派生vm。在步骤407处,将结果发回给用户应用。

根据本发明的实施例如此处所述。虽然本公开已经在特定实施例中进行了描述,但是应理解,本公开不应该被解释为这些实施例的限制,而是根据以下权利要求书进行解释。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1