基于云环境的交互式模型开发环境系统和方法
技术领域
本发明涉及云计算和大数据分析领域,具体地,涉及一种基于云环境的交互式模型开发环境系统和方法。
背景技术
交互式模型开发环境系统为用户提供基于Web界面的交互式大数据分析开发体验;多个用户共享一个大数据集群,更有效的在开发环境提高资源利用率;提供大数据集群与对象存储的数据同步能力,同时满足数据的持久存储需求和数据在集群上的分布存储需求。由于交互式模型开发环境为多用户提供开发前端、使用共享大数据集群运行分析任务,因此每个租户只能创建一个开发环境。租户的开发环境一旦创建,租户内的用户就可以通过自服务的方式创建Web前端和Driver完成开发。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于云环境的交互式模型开发环境系统。
根据本发明提供的一种基于云环境的交互式模型开发环境系统,包括
创建开发环境模块:接收使用者提出的创建申请,通过命令创建开发环境,开发环境创建完成之后,发送开发环境的访问信息至使用者;
使用开发环境模块:接受使用者的登录,接受使用者将数据上传至对象存储,实现数据在对象存储与分布式文件之间的同步,提供使用者新建和编写模型程序、运行程序。
优选地,所述的基于云环境的交互式模型开发环境系统,还包括删除开发环境模块:接收使用者提出的删除申请,对开发环境进行删除,对对象存储中的数据不进行删除,允许使用者访问对象存储中的数据。
优选地,所述使用开发环境模块包括:
创建对象容器模块:创建对象容器,对对象容器进行初始化;
上传待分析数据模块:接收数据的上传,所述数据存储在对象存储组件中;
同步数据模块:提供数据从对象存储组件中同步到大数据集群的HDFS中;
启动容器模块:接受使用者对前台开发界面的创建,对前台开发界面对应的容器进行启动;
编译程序模块:接受使用者在前台开发界面中进行程序编写与运行,将程序保存并提交至大数据集群进行运行,运行结果能够保存在大数据集群的HDFS或Hive中;
查看运行结果模块:接受使用者在前台开发界面中查看运行结果。
根据本发明提供的一种基于云环境的交互式模型开发环境方法,包括:
创建开发环境步骤:接收使用者提出的创建申请,通过命令创建开发环境,开发环境创建完成之后,发送开发环境的访问信息至使用者;
使用开发环境步骤:接受使用者的登录,接受使用者将数据上传至对象存储,实现数据在对象存储与分布式文件之间的同步,提供使用者新建和编写模型程序、运行程序。
优选地,所述的基于云环境的交互式模型开发环境方法,还包括删除开发环境步骤:接收使用者提出的删除申请,对开发环境进行删除,对对象存储中的数据不进行删除,允许使用者访问对象存储中的数据。
优选地,所述使用开发环境步骤包括:
创建对象容器步骤:创建对象容器,对对象容器进行初始化;
上传待分析数据步骤:接收数据的上传,所述数据存储在对象存储组件中;
同步数据步骤:提供数据从对象存储组件中同步到大数据集群的HDFS中;
启动容器步骤:接受使用者对前台开发界面的创建,对前台开发界面对应的容器进行启动;
编译程序步骤:接受使用者在前台开发界面中进行程序编写与运行,将程序保存并提交至大数据集群进行运行,运行结果能够保存在大数据集群的HDFS或Hive中;
查看运行结果步骤:接受使用者在前台开发界面中查看运行结果。
优选地,所述交互式模型开发环境包括四个层,分别是硬件层、服务层、代理层、展示层;
硬件层包括大数据集群,服务层包括存储服务,代理层包括前台开发界面的操作,展示层基于Ipython实现。
与现有技术相比,本发明具有如下的有益效果:
1、本发明为使用者提供友好的开发方式,具有强大的编程扩展能力,支持Java,Python,Scala等多种语言,还将支持R语言。用户可以使用自己习惯的编程语言进行Hadoop/Spark 作业的编写、创建、配置、提交和监控。同时支持多种常用的函数库,如Numpy和Matplotlib;
2、本发明提供高效的存储方式,使用Swift存储作为默认文件系统,实现了Swift和Apache Hadoop文件系统的接口,用户提供了一致性体验,Swift存储通过将任务的结果存储到 Swift中,可以安全地删除计算资源而不会丢失用户的数据,从而又不会占用相对成本较高的HDFS 资源;
3、本发明通过将服务构建在云上,提供灵活的扩展方式和低廉的部署维护方式,用户无需花费大量时间进行部署安装和配置,节省开发前期成本。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为交互式模型开发环境创建流程图;
图2为交互式模型开发环境使用流程图;
图3为交互式模型开发环境删除流程图;
图4为交互式模型开发环境概念架构图;
图5为交互式模型开发环境逻辑架构图;
图6为交互式模型开发环境部署架构图;
图7为交互式模型开发子系统数据库设计图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
根据本发明提供的一种基于云环境的交互式模型开发环境系统,包括:
创建开发环境模块:接收使用者提出的创建申请,通过命令创建开发环境,开发环境创建完成之后,发送开发环境的访问信息至使用者;
使用开发环境模块:接受使用者的登录,接受使用者将数据上传至对象存储,实现数据在对象存储与分布式文件之间的同步,提供使用者新建和编写模型程序、运行程序。
具体地,所述的基于云环境的交互式模型开发环境系统,还包括删除开发环境模块:接收使用者提出的删除申请,对开发环境进行删除,对对象存储中的数据不进行删除,允许使用者访问对象存储中的数据。
具体地,所述使用开发环境模块包括:
创建对象容器模块:创建对象容器,对对象容器进行初始化;
上传待分析数据模块:接收数据的上传,所述数据存储在对象存储组件中;
同步数据模块:提供数据从对象存储组件中同步到大数据集群的HDFS中;
启动容器模块:接受使用者对前台开发界面的创建,对前台开发界面对应的容器进行启动;
编译程序模块:接受使用者在前台开发界面中进行程序编写与运行,将程序保存并提交至大数据集群进行运行,运行结果能够保存在大数据集群的HDFS或Hive中;
查看运行结果模块:接受使用者在前台开发界面中查看运行结果。
根据本发明提供的一种基于云环境的交互式模型开发环境方法,包括:
创建开发环境步骤:接收使用者提出的创建申请,通过命令创建开发环境,开发环境创建完成之后,发送开发环境的访问信息至使用者;
使用开发环境步骤:接受使用者的登录,接受使用者将数据上传至对象存储,实现数据在对象存储与分布式文件之间的同步,提供使用者新建和编写模型程序、运行程序。
具体地,所述的基于云环境的交互式模型开发环境方法,还包括删除开发环境步骤:接收使用者提出的删除申请,对开发环境进行删除,对对象存储中的数据不进行删除,允许使用者访问对象存储中的数据。
具体地,所述使用开发环境步骤包括:
创建对象容器步骤:创建对象容器,对对象容器进行初始化;
上传待分析数据步骤:接收数据的上传,所述数据存储在对象存储组件中;
同步数据步骤:提供数据从对象存储组件中同步到大数据集群的HDFS中;
启动容器步骤:接受使用者对前台开发界面的创建,对前台开发界面对应的容器进行启动;
编译程序步骤:接受使用者在前台开发界面中进行程序编写与运行,将程序保存并提交至大数据集群进行运行,运行结果能够保存在大数据集群的HDFS或Hive中;
查看运行结果步骤:接受使用者在前台开发界面中查看运行结果。
具体地,所述交互式模型开发环境包括四个层,分别是硬件层、服务层、代理层、展示层;
硬件层包括大数据集群,服务层包括存储服务,代理层包括前台开发界面的操作,展示层基于Ipython实现。
本发明提供的基于云环境的交互式模型开发环境系统,可以通过基于云环境的交互式模型开发环境方法的步骤流程实现。本领域技术人员可以将基于云环境的交互式模型开发环境方法理解为所述基于云环境的交互式模型开发环境系统的优选例。
在具体实施中,交互式模型开发环境的创建需要有用户提出创建申请。平台管理员收到申请后通过后台命令手工创建环境,创建完成后通知用户环境的访问信息。交互式模型开发环境创建完成后,用户会受到控制台的访问信息,用户可以使用浏览器登录控制台使用。在使用过程中,用户可以随时进行数据上传到对象存储(Swift)、数据在对象存储与集群的HDFS直接的双向同步、新建和编写模型算法程序、运行程序和查看结果,以及将结果从HDFS同步到对象存储并下载。另外,当需要多人使用的时候,可以点击创建Notebook的按钮,为新用户创建供其使用的Spark driver和Notebook。当用户不需要开发环境时,可以向管理员提出删除申请,由管理员通过后台明天完成环境删除。在环境删除时,不会同时删除存储在Swift中的数据,用户仍然可以访问到数据。
在编程扩展发明,本发明具有强大的编程扩展能力,支持Java,Python,Scala等多种语言,还将支持R语言。用户可以使用自己习惯的编程语言进行Hadoop/Spark作业的编写、创建、配置、提交和监控。同时支持多种常用的函数库,如Numpy和Matplotlib。
在存储方面,本发明的交互式模型开发环境服务使用Swift存储作为默认文件系统。 Swift存储和HDFS是独立的文件系统,只有需要计算时才将数据同步到HDFS中,这样极大地提高了存储的效率。Swift存储是OpenStack中原生的、通用的存储解决方案,是一个灵活扩展、高度可靠、成本低廉、可长期使用和可共享的存储方式。交互式模型开发环境服务通过实现了Swift和Apache Hadoop文件系统的接口,为用户提供了一致的体验。因为交互式模型开发环境集群部署在OpenStack的计算节点之上,执行Spark 或MapReduce任务完成后,集群即可被用户删除。在传统的Apache Hadoop或Spark 上,计算结果将保存在HDFS上,在云端这是一种成本很高的存储方式。Swift存储通过将任务的结果存储到Swift中,可以安全地删除计算资源而不会丢失用户的数据从而又不会占用相对成本较高的HDFS资源。
在扩展方面,本发明提供了灵活的扩展方式,交互式模型开发环境服务是一种构建在云上的大数据服务。这意味着它能够处理任何数量的数据,按需将数据处理容量从数TB扩展至数PB级别。应用交互式模型开发环境服务,用户将无需花费大量时间进行部署安装配置,无需其它前期成本;服务可以为用户自动完成这些工作。交互式模型开发环境服务支持同一租户的多用户使用同一套开发环境。一方面在模型开发过程中,更加有效的利用资源;另一方面,也可以为多个开发人员协同开发提供支持。用户只需要关心设计业务逻辑,编写代码,查看结果,并不需要关心大数据集群复杂的调度、优化、配置等细节,从而极大地简化了利用大数据服务的难度,缩短了开发周期,达到使用户可以集中精力于自身业务逻辑的目的。
如图1所示,在一个实施例中,租户以邮件形式向管理员提出开发环境创建申请。平台管理收到申请后,通过后台命令完成开发环境的创建。开发环境创建完成后,由平台管理员通知项目组开发环境的访问信息,可以开始使用。
如图2所示,在一个实施例中,在管理员为租户创建完交互式模型开发环境之后,用户就可以通过Web控制台来访问和使用开发环境。与使用大数据集群类似,使用模型开发环境也没有固定的流程,用户可以根据实际需求和使用习惯来自由使用开发环境。一般来说,使用流程包括初始化对象存储(建立对象容器)和上传数据、建立Notebook 并在其中进行程序开发、运行;导出中间数据和分析结果几类操作;这个流程中存在着迭代多次上传和补充待分析数据、调整分析算法和程序。
(1)用户首先需要建立对象容器。在开发环境中,租户的待分析数据需要首先存储在对象存储中。对象容器是对上传的数据的组织单元。
(2)创建对象容器后,用户可以开始上传待分析数据。上传的数据会被存储在OpenStack Swift(对象存储组件)中。
(3)由于用户的分析程序比较方便从HDFS中读取数据,用户可以选择将选定的对象存储中的数据同步到大数据集群的HDFS中。
(4)在完成数据准备后,用户创建Notebook,即前台开发界面和Spark driver。后台会完成对应的容器启动以及配置。
(5)用户通过控制台可以看到新建的Notebook信息,通过其链接地址访问Notebook界面并开始创建程序文件。
(6)用户在Notebook界面中进行程序编写与运行;后台会将程序保存并提交给大数据集群运行。根据程序编写的不同,用户可以选择将程序运行的中间结果也保存到大数据集群的HDFS或Hive中。
(7)运行结束后,用户可以在Notebook界面中查看运行结果。当然,根据程序不同,运行结果也可以在程序中保存到集群的HDFS或Hive中。
(8)如果用户希望保存程序执行的中间数据或最终结果,那么用户需要在第(6)步编写程序时将中间数据和最终结果保存到HDFS中。此时,用户可以回到开发环境控制台,选择将保存在HDFS中的数据(中间数据或最终结果)同步到对象存储中。
(9)如果用户对结果不满意、希望调整算法,可以回到第(6)改进程序。
上述流程是一个一般性流程,实际情况中,用户还可能周期性补充输入数据,重新通过Notebook运行分析程序。在这个流程中,用户可以重复利用对象存储的持久化存储能力,在任何时刻都可以在对象存储与集群的HDFS之间进行文件同步。这种使用习惯有助于保留对用户有价值的数据和结果。
由于对象存储对外提供REST接口,用户也可以将Swift中的数据下载到客户端,或其它希望导出的位置。一种场景是,用户通过使用模型开发环境完成的数据分析并生成了模型,并通过同步存储在对象存储中;此时,用户可以从对象存储中下载模型,并集成到使用模型的在线服务应用中,体现模型的价值。
如图3所示,在一个实施例中,当租户不需要模型开发环境时,可以通过线下申请删除开发环境。项目组通过邮件向平台管理员提出删除申请。由于对象存储并不会因为开发环境的删除而删除;因此,只要用户在使用开发环境中及时进行了文件向对象存储的同步,不会发生丢失数据的情况,也不需要额外进行备份操作。平台管理员收到申请后,通过后台命令,删除开发环境。平台管理员通知项目组,开发环境删除完成。
如图4所示,交互式模型开发环境分为四个层,分别是硬件层,服务层,代理层和展示层。硬件层中包含Spark的集群和Swift的集群;服务层包括OpenStack的存储服务,HDFS和Apach Spark,存储于Swift中的数据可以和HDFS进行同步;代理层完成 Web界面到Swift的操作,数据的拷贝,以及Ipythonnotebook到Spark节点的操作;展示层基于Ipython的实现,可以让用户在Web上创建,删除,使能,关闭Ipython notebook。
如图5所示,交互式模型的包括网络前端,Spark驱动端,网络后端,SV服务接口和Spark集群。用户通过网络前端发起创建,打开,删除请求,网络后端得到后通过IP 映射访问到交互式模型服务器,服务器向SV的keystone服务查询用户权限,如果成功,则创建Spark驱动,通过spark的配置控制Spark应用的资源分配,最后由Spark大数据集群完成计算,结果通过drive返回。当驱动建立成功后,Ipython内核将托管网络前端,完成和驱动的通信。
如图6所示,在一个实施例中,交互式模型开发环境的部署架构主要包括部署在管理控制节点(x86-01~x86-03)上的管理节点虚拟机以及运行在Docker计算节点上、有管理节点动态管理生命周期的大数据集群组成。大数据分析服务管理节点虚拟机中包含了四组服务,第一组服务完成大数据平台相关的整合,包括Nginx,大数据平台服务,文件同步和对象存储等组件,Nginx负责对外的接口映射,大数据平台服务器负责处理 Web请求,并且与文件同步服务和heat管理服务相连,如果用户要对文件操作,可以调用Web中的文件管理,大数据平台服务器会处理这个请求,调用文件同步服务,完成对象存储和HDFS之间的同步。值得注意的是,可以采用多个大数据平台服务器进行高可靠的保证。第二组服务完成URL的映射,包括Nginx服务器和URL映射服务器,映射的目的是将用户和Spark驱动相对应。第三组服务完成用户交互服务的相关整合,包括交互式开发服务器和heat管理服务器。其中交互式开发服务器负责维护状态机,heat 管理服务器负责大数据驱动的创建,当用户进行大数据服务创建时,大数据平台处理服务器会根据用户输入调用对应的heat模板,完成大数据驱动的创建任务。第四组服务是线下的服务,由控制台调用预先设定的heat模板,创建对应的大数据集群。
如图7所示,本实施例采用了7张表,其中包括栈信息表、用户信息表、操作表、栈操作表、操作状态表、隶属节点表、消息表、service表、状态表、同步文件状态表、 hdfs文件状态表。所述用户信息表用于存储用户名称和消息信息。消息信息是一些通知信息,帮助用户了解大数据集群的更多信息。所述栈信息表用于存储用户的heat操作栈信息。所述栈操作表用于存储用户对大数据集群的所有操作行为,包括操作的开始和结束时间,操作内容,成功与否,错误消息。所述隶属节点表存储大数据slave节点的 ip地址信息。所述操作状态表用于存储大数据服务操作状态。所述消息表用于存储消息信息,包括消息内容,通知时间和用户是否阅读的状态。所述service表,它主要包括交互式开发环境的链接地址,状态,任务,用户名,服务id和用户目录。所述状态表,存储可选的同步文件状态值,状态表包括none,挂起,正在同步,已经同步和错误五个状态。使用一个独立的表来记录可选状态值,便于将来对状态值进行扩展。所述同步文件状态表用户存储同步文件的信息和当前状态。所述HDFS文件状态表存储HDFS中的文件信息。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。