文摘
数据科学的蓬勃发展和大数据技术栈激发了连续的迭代更新数据科学研究或工作方法。目前的粒度数据科学大数据之间的分工更加细化。传统的工作方法,从基础设施环境建设工作数据建模和分析的工作方法,将大大延迟工作和研究效率。在本文中,我们专注于当前的友好合作的目的数据科学团队建立科学数据和大数据分析应用平台基于microservices架构教育或非专业研究领域。环境中基于microservices促进更新每个组件的组件,这个平台有一个个人代码实验环境集成JupyterHub基于火花和HDFS用于多用户可视化建模工具,按照模块化设计的数据科学工程基于Greenplum数据库内分析。整个web服务系统开发基于弹簧引导。
1。介绍
近年来,数据科学大数据技术栈取得了爆炸式增长。在数据科学,特别是机器学习,主要得益于计算能力的提高,特别是GPU(图形处理器)的快速发展,和深度学习的普及1]。大数据技术堆栈,新类型的大数据工具,如火花已逐渐取代了传统的Hadoop生态系统中的一些组件(2),和更新迭代速度是持久的。基于技术的快速发展,模块化和细分的工作方法变得越来越明显。传统的工作方法,从建立一个实验环境数据采集、数据处理、模型训练、和数据预测,往往是一种统一的方式来进行(3]。这的工作方式显然不适合新数据科学研究方法。目前,人们更加注重团队合作,所以环境基础设施共享、数据共享,共享已经成为主流的工作流模型。当然,个人工作区根据共享条件也是必要的。
但是,大数据的发展(4)和操作环境的部署通常需要开发、操作和维护人员专业知识构建和维护(5),这对于普通团队困难得多,尤其是新手或学生团队。人们通常把大量的时间浪费在基础设施和环境建设,而这些问题往往伴随着巨大的操作和维护问题。人们需要一个基于多用户的环境基础设施平台(6]。
数据分析的实际业务场景中,人们的思维也不仅专注于代码,文本,图片,甚至数学公式。人们需要工作代码区域markdown-like环境(7]。Jupyter笔记本提供了这样一个工作环境,但Juypter笔记本是针对单用户成员。为基于网络平台(8),需要JupyterHub [9]。与大数据对工人的需求,他们也需要集成基于Hadoop(实验环境10),火花,JupyterHub。
在数据共享和数据流处理,安全保护的数据往往是最麻烦的问题分析,实际的业务场景。人们通常不愿意执行各种数据的兼容性处理和脱敏迁移。在团队协作中,平台需要集成的工具可以分析数据库中的数据。团队协作,共享数据流处理和模型经常陪同。这些抽象的内容通常是不适合协作分析在很短的时间内。人们需要一个可视化建模环境。
在本文中,我们目前Qunxian平台。Qunxian平台是一个基于microservices大数据分析平台。它有助于实现共享数据,计算能力和基础设施资源。此外,它允许用户使用一个更友好的环境来记录和分享实验过程和可视化模型。它使用JupyterHub和可视化建模的两个主要的应用程序。大数据平台的基础设施环境组件组件和数据科学环境。为了容易适应环境变化迅速的特点,平台使用microservices [11)作为一个技术依赖性;特别是,它使用码头工人(5,12]。环境的分布式文件系统使用HDFS (Hadoop分布式文件系统)13]。并行计算架构使用Apache火花。基于火花和HDFS, Jupyter笔记本作为用户的代码工程环境。和JupyterHub管理多用户笔记本环境以统一的方式。的可视化建模,Greenplum-based数据库内分析方法用于实现可视化的建模模块建模应用程序内置MADlib算法和自定义算法的接口(14]。因为整个平台系统将面向不同的用户和不同的用户环境,用户将共享服务器的计算和数据资源。该系统定位B / S(浏览器/服务器)类型系统(15]。基于B / S的类型系统,平台是使用一个框架构建的基于spring引导和使用element-admin作为后端前端解决方案(16]。此外,它使用Greenplum和MADlib实现数据库内数据计算保护数据,快速使用数据,并存储模型。基于Element-UI [17),后端模块实现的拖放方法(18),和可视化数据模型进一步实现。
本文的其余部分安排如下格式。部分2提出了相关的在这个领域工作。节3,我们访问平台的架构没有应用程序层和支持层。然后,我们描述了两个基于web的应用程序部分4。之后,我们给我们的实验配置在谷歌云从部分5。最后,我们总结部分6。
2。相关的工作
简介中所述,有一定需求得到先进的工具,用于存储和共享某些数据环境科学和大数据研究,由特定的工程技术人员配置在云计算基础设施为个人和研究团队。近年来很多系统已经开发出来,解决了上面提到的一些问题,包括大数据环境基础设施建设(4,10,19[],microservice-based平台5,11,20.),和在线教育编程平台21- - - - - -23]。然而,仍存在若干问题,解决不好的现有方法和系统。
第一个问题是支持平台是基于科学计算和大数据作为在线服务生态环境。使用面向服务的方法可以使大规模共享和部署的新数据模型以及自动化科学任务和组合应用到新的服务(24]。然而,现有的基于web的工具或平台不建立一个稳定的大生态环境或提供原始数据和繁琐的命令shell,这是不友好的学生开始使用。
第二个问题是团队合作公司基于大数据环境平台。现有的在线编程平台一直是为私人使用(21,24,25]。然而,现有的平台通常缺乏个人体积储存很长一段时间作为个人应用程序。此外,个人应用程序不同意现在团队合作。通过这种方式,在团队合作、分享个人的想法(特别是对于学生的教育方式21),我们需要共享没有原始代码的可视化模型。
依靠microservice Qunxian地址的描述问题。在基础设施建设上,我们实现了docker-compose服务。在web服务建筑,我们实现弹簧引导。
Spring框架提供了灵活性,所有配置bean在许多方面,如注释和XML (26]。特性的数量的增加,也会增加复杂性和配置spring应用程序变得容易出错和乏味27]。春天的引导帮助解决复杂的配置。同时,弹簧引导更有助于整合microservice应用程序(28]。
帮助建立的概念将科学数据,web前端,用户会试图操纵数据可视化的方式。让它发生,我们实现vue。jsto help the front-end communicate with the back-end. Technically, vue.js is a progressive framework that helps developers to build a user interface for website development. It is designed to be applied layers by layers from the bottom-up [17]。特别是,它更侧重于视图层。这些特性有助于整合许多现代工具链和各种支持类库。此外,它有助于减少web开发的困难。建立一个生产就绪的前端解决方案(29日),我们整合element-admin,基于Vue和使用UI工具包Element-UI。Vue-Element-Admin是后端基于Vue和Element-UI前端解决方案。它实现了最新的前端技术堆栈,内置i18国际解决方案(30.),动态路由、权限验证和提炼典型商业模式,并提供了丰富的功能组件,它可以帮助web开发人员快速构建企业级产品原型。所有的工具和框架有助于建立一个用户友好的网络平台。
3所示。平台的架构
Qunxian遵循平台即服务(PaaS)和图1Qunxian平台的体系结构概述,描述的续集。
3.1。硬件层
3.1.1。基于云计算的大数据平台
云计算提供计算服务提供快速创新、弹性资源,通过云的规模经济。对于云服务,web开发人员通常只支付他们使用多少,这有助于降低运营成本,使基础设施更有效地运作,调整服务的使用基于业务需求的变化(31日]。它的简单的计算的类型取决于共享的计算资源,而不是本地服务器。Qunxian决定云计算服务平台的硬件层和它会下文提及的好处:(我)它大大降低了劳动力成本(2)更可伸缩并提供更好的和安全的存储(3)协作和有效的沟通平台(iv)最佳工作实践和灵活性(v)进入自动更新为您的IT需求
如今,云计算服务,谷歌云平台(GCP),亚马逊网络服务(AWS)和微软Azure云公司中占有统治地位。Qunxian选择了谷歌云引擎,GCP的模块,硬件服务。
3.1.2。码头工人
基于云服务,我们决定使用码头工人作为一个部署管理硬件层有效地方法。(即所有单个模块。,big data components, such as Hadoop and Spark, web architecture, and JupyterHub service concerned) rely on different operating environments, such as different Java versions. To coordinate them smoothly, without any compatibility problem, we apply the Docker container to separate them into individuals. Also, as the foundation of microservice nowadays, Docker helps to simplify the operation and maintenance work, which is the main work after the first time to deployment because of the frequent updating. By the benefit of the Docker container, it is an easy case to update the individuals that needed to be updated instead of all the system architecture. Also, the Dockerfile and YAML files help to record the deployment process for the reference of next time deployment.
3.2。资源管理层
发展阶段的问题和用户的数量,我们不应用Kubernetes,哪个是最受欢迎的码头工人编制工具,部署码头工人容器集群上。我们应用码头工人群体,这是默认的编排码头工人的工具,构建我们的资源管理层。码头工人群,我们实现码头工人组成的集合通信容器,可以动态扩展和安排(32]。
3.3。数据层
在数据层,我们部署HDFS, Hadoop分布式文件系统,以及大规模并行Greenplum Postgres的分析关系数据库(19]。HDFS Greenplum与火花,设置在平台层,独立。
3.4。平台层
在平台层,我们部署JupyterHub,这是一个多用户服务器Jupyter笔记本,作为后台根据码头工人与集装箱大数据环境。
表1给码头工人的组件平台,建立基于大数据Qunxian的生态环境。
4所示。两个基于web的应用程序
平台层的基础上,我们引入应用程序层,它由两个基于web的应用程序。我们描述如下。
4.1。在线编程应用程序
为学生得到最Qunxian高性能计算(HPC)的资源,应用JupyterHub Qunxian平台层的组件,数据科学、和大数据生态环境作为基于web的应用程序的帮助下码头工人。
基于平台层,一个默认的工作方式与Apache火花从终端启动一个繁琐的命令shell,这使得它很难呈现信息。超越,并使数据分析更多的共享和重用,我们选择Jupyter笔记本。
JupyterHub Jupyter笔记本,生成,提供了一种简单的方法来使用交互式编程接口可以从浏览器访问,减轻学生的负担通过繁琐的命令行Scala或python实现他们的工作方法。
图2给出了在线编程应用程序在应用程序层的高级概述基于JupyterHub和码头工人。它允许一个GitHub的用户身份验证,这有助于团队根据项目配合他们的工作。码头工人已成熟的雌鱼产卵单用户Jupyter笔记本服务器在不同的码头工人容器基于各自的码头工人的体积,这有助于保存每个用户的笔记本目录。JupyterHub持久性的数据,我们主机上部署一个码头工人数量。
4.2。可视化建模应用程序
科学可视化建模应用程序是一个数据建模工具,帮助学生理解高级机器学习管道由教师或其他研究人员设计的。我们应用经典的机器学习模块,包括数据处理、特征提取和模型选择。学生可以探索他们的数据在这个工具没有从零开始构建数据研究的方法。为研究方法,我们开发了一个新模块为学生和研究人员探索新的想法在模型建立。
图3给出了管道在基于web的可视化建模应用程序。这是一个简单的案例为学生理解和重复实验的每个部分。从模型构建模型部署,每一个参与数据科学从给定的选择可以选择或建立新的组件基于管道。
5。实验
我们进行了一个实验评价Qunxian所有服务器端组件部署在谷歌云引擎平台。引导磁盘是基于CentOS 7操作系统图像与标准持续2 tb的硬盘。和机器类型与64个vcpu n1-standard-2, 240 GB的内存。我们添加标签和防火墙规则,允许特定的网络流量从互联网,包括MySQL服务(33),Greenplum服务、web服务和Hadoop在VPC(虚拟私有云)服务网络/防火墙规则在谷歌的云计算平台。最小系统的调优和Nginx web代理服务器(10)是为了支持大量并发连接。在以下部分中,我们将首先描述服务部署,然后给两个例子的主要应用程序的平台。
5.1。JupyterHub服务
JupyterHub模块,应用程序层,基于数据层。集成和HDFS火花,我们通过docker-compose做这部分的实验。和JupyterHub-docker-compose-example。yml文件显示配置的一部分。在本文中,我们没有显示细节。使数据可持续JupyterHub,我们选择PostgreSQL数据库。在yml文件中,我们离开了一些详细的信息,如环境变量、卷和网络的配置。(算法1)。
|
5.2。数据库服务
5.2.1。MySQL服务
我们使用MySQL服务的web服务,帮助建立安全信息存储,特别是数据的用户。我们把MySQL: 5.6从DockerHub构建服务形象。分娩后一个新的容器从图像注册表,我们让一个SQL脚本构建ZDSW数据库,包括系统、应用程序、用户和其他实体的信息。在图4,我们将展示来自数据库的物理数据模型的一部分,这是一个SQL脚本的执行结果。
5.2.2。Greenplum服务
将数据库内数据处理,我们要求Greenplum的帮助,能够集成MADlib扩展没有任何兼容的问题。和MADlib是一个开源库数据库内数据的处理。此外,Greenplum关系数据仓库,这是大规模并行处理器体系结构。它帮助我们充分利用大数据环境。由于其PostgreSQL的内核,我们利用开发平台工具,pgAdmin4,集成数据库的前端特定web端口上。在这个实验中,我们试图使它容易重复。因此,我们应用伪分布在一个节点在码头工人的帮助下和docker-compose。我们准备一个gpdb-docker-compose-example。yml文件,如下所示,配置参考。startGPDB使它成功。sh file, which helps Docker to start the database, the base image, and other configuration should be prepared. (Algorithm2)。
|
下面的部分展示了一个示例使用pgadmin4访问Greenplum:(1)先决条件(2)开始Docker-compose(3)配置Greenplum(4)配置pgadmin4
在先决条件的部分,我们安装pgadmin4 docker-compose然后把图片和GPDB 5。x OSS。准备一个脚本,比如docker-compose-pgadmin4。配置Greenplum和pgadmin4 yml,整合成功。
数据库准备后,MySQL服务,我们需要执行SQL脚本。这个脚本是准备测试机器学习数据库内的数据集。
图5结果显示了脚本的结果在基于web的pgadmin4端仪表板。
5.3。Web服务
基于web的项目中,我们应用弹簧引导34)和webpack框架(35)构建平台。流动的部分描述了前端和后端服务应用程序的细节。
5.3.1。弹簧启动后端
在web服务的后端,我们建立一个基于弹簧启动Java项目。该项目包括三个部分:数据控制,资源,web。数据控制帮助可视化分析工具工作流。资源连接后端和前端。web是webpack项目的一个重要组成部分。
5.3.2。Element-UI-Admin前端
减少web页面开发的时候,我们应用Element-UI构建一个HTML、CSS和JavaScript项目开发响应(36在网络上),项目。基本的ui工具套件,我们实现开源,Element-UI-Admin,管理front-web数据管理的方式。
5.3.3。部署
建设项目和配置应用程序的属性后,数据库服务的配置和低耦合,高内聚的特点,我们用一个特殊的部署端口在谷歌云服务器引擎。
5.4。在线火花和Hadoop编程实验
因为我们的教育应用程序是基于火花,Hadoop, JupyterHub,我们将做实验Jupyter笔记本,催生了由Qunxian JupyterHub在网站界面。
图6显示了SparkContext工作和Hadoop Jupyter笔记本工作,暴露的网络端口。我们可以找到引发工作更直接在港口HTTP方法。图7显示了就业工作。
5.5。可视化建模应用实验的例子
由于可视化建模应用程序是基于Greenplum与纯python数据库和环保实验的经验。
在实验中,我们需要变换的算法格式的pl / python (37),如图所示8。使它成功,数据需要初始化运行环境,以确保所需的环境依赖性实验已经在网络平台。如果有缺失相关的实验环境中,服务器需要安装相关的依赖关系。和网络后台管理系统应该资助实验管理员权限用户环境,因为只有超级管理员用户可以使用它来注册使用PL / python与数据库。
可视化建模应用程序支持集成配置的pl / python与Qunxian算法。在以下部分中,我们引入一个新的功能的部署方式,表明黄芪丹参滴丸算法的可视化建模应用程序。
首先,我们应该在管理中添加黄芪丹参滴丸算法的算法,这是数据管理的一部分。其次,我们应该把它应用到现有的算法成为一个组件树算法。最后,我们可以充分利用它在构建可视化模型。处理部分是序列在图所示9- - - - - -11。
5.6。Web服务压力测试
为了适应microservice特征的自适应系统和测试的便利,我们仍然使用Docker-based方法部署JMeter-based [38测试用例。选择高山作为基地码头工人形象和配置相关的环境变量,如JMETER版本和JMETER的家,这是方便解耦测试单位和操作和维护单位。因为JMeter是开发基于Java语言,服务环境还需要配置Java SE的运行时环境(JRE) [39]。在特定的测试用例,可以准备两个脚本:一个是一个测试脚本,另一个是运行脚本。测试脚本是用来测试规则的编写特定的用例,如硬编码系统的网络端口。运行脚本主要写共同运行例程microservices启动和破坏等。
图12显示了web服务压力测试的结果在JMeter的帮助。在请求的总结,根据需要通过所有的测试请求。在统计表单中,所有的响应时间都在可控范围内。
6。结论
Qunxian提出,一个新的microservice-based大数据分析平台,部署在谷歌云引擎运行在分布式计算资源。我们构建大数据基于码头工人的生态环境。平台基础设施的基础上,我们引入了两个基于web的应用程序。为学生想开始使用大数据生态环境没有任何障碍教育目的,我们介绍了JupyterHub,每个用户可以在线项目的环境和保持他们的私人数据量数据持久性。研究人员想公司有效地在分享他们的模型基于其特定格式的数据,我们介绍其他的基于web的应用程序,数据可视化建模工具,科学研究的人可以分享他们的想法而不寒冷的数据和代码。我们做实验在谷歌的云平台,并检查它的可行性。
对于未来的工作,我们将部署平台Kubernetes集群,这是一种便携式,可扩展的,开源平台集装箱工作负载管理和服务,如果平台提供更多的学生。通过这种方式,两个集装箱的自动化部署和扩展应用程序可能帮助基础设施得到充分利用。
数据可用性
使用的数据来支持本研究的发现可以从相应的作者。
的利益冲突
作者宣称没有利益冲突。
确认
这项工作在一定程度上是由中国国家重点研究和发展计划(批准号2018 yfc0830300),福建科技项目,中国(批准号2018 h0035)、科技项目的厦门,中国(格兰特no.3502Z20183011),和基金XMU-ZhangShu Fintech联合实验室。