宜信开源| Moonbox计算服务平台架构功能和应用场景

电脑杂谈  发布时间:2020-07-03 11:31:54  来源:网络整理

软件即服务 平台即服务_实时计算服务平台_阿里云 实时计算

简介: 业务系统或日志系统生成大量原始数据实时计算服务平台,我们根据业务场景的需要将数据保存在不同的存储中. 但是,只有通过数据的集成实时计算服务平台,处理和计算,才能提取潜在信息并将数据转化为资产,从而实现数据的价值. Moonbox是这样的计算服务平台. 在敏捷大数据理论的指导下,它围绕“计算服务”和“数据虚拟化”两个核心概念进行设计,并支持多种数据源的混合计算. Moonbox的设计理念是什么?功能特点是什么?本文将带您进入Moonbox〜

开放源地址:

大数据技术正在企业中越来越广泛地使用. 为了解决各种情况,越来越多的数据系统应运而生,如何基于全景数据进行快速查询计算已成为当务之急和挑战.

当前的主流方式是以Hadoop为核心构建数据仓库/数据湖. 这在某种程度上解决了异构数据系统和数据分散的问题,但是仍然存在维护成本和时间损失. 此外,数据开发人员还面临着频繁的业务变化和快速交付结果的问题.

面对这些挑战,计算服务和数据虚拟化提供了一个很好的解决方案. Moonbox是在大数据环境下进行计算服务和数据虚拟化的一种做法. 其设计思想主要体现在以下几个方面:

Moonbox提供了多个查询界面和计划任务,以将计算资源转化为服务. 最终用户可以自行注册数据源以编写SQL实施要求. 他们只需要关心业务逻辑,而不必关心作业的提交和运行方式.

Moonbox提供了虚拟表和物理表之间的映射. 最终用户无需关心数据的物理存储位置和基础数据源的特征. 他们可以直接操纵数据并经历与虚拟类似的操作.

✔统一查询语言

Moonbox为用户提供了统一的SQL语法标准,以屏蔽异构数据系统的查询语言中的差异. 用户只需要编写SQL即可查询各种数据系统,还可以使用SQL来混合跨异构数据系统,从而降低了多个数据系统的学习成本.

✔统一元数据服务

Moonbox可以连接到各种数据系统,并且您可以获得每个数据系统数据表的架构信息. Moonbox不存储架构信息. 它是每次从数据源实时获取的,因此没有不及时的元数据更改,需要同时更新等问题. Moonbox在外部提供了统一的元数据服务接口,用户无需调用多个接口即可从各种数据源获取元数据.

阿里云 实时计算_软件即服务 平台即服务_实时计算服务平台

✔统一访问控制

每个数据源都有其自己独特的安全性机制,使用这些数据系统时,用户需要支付额外的学习费用. Moonbox在逻辑层提供了统一的安全访问机制. 访问时提供身份验证登录功能;查询时,它拦截并分析查询SQL,以实现列级数据权限控制. 如果通过Moonbox界面统一输入查询,则Moonbox会向各种数据源添加安全锁,并且用户无需了解各种数据源的独特安全机制.

Moonbox系统架构图如下:

Moonbox通常由四个部分组成,即Moonbox客户端,Moonbox访问层,Moonbox核心功能层和存储计算层.

Moonbox客户端主要包括以下内容:

✔宁静的api

以宁静的API形式提供计算服务,支持批处理和临时模式,并支持同步和异步模式.

✔jdbc

jdbc界面的实现使用户能够获得类似的体验.

✔cli

实时计算服务平台_软件即服务 平台即服务_阿里云 实时计算

基于jline的命令行工具. 可以通过cli完成DDL(数据定义语言),DML(数据操作语言),DCL(数据控制语言)和查询操作.

✔齐柏林飞艇

提供齐柏林飞艇Moonbox解释器,您可以使用齐柏林飞艇进行快速原型验证和SQL开发.

✔达芬奇

支持通过jdbc访问ABD Stack(敏捷大数据技术堆栈)中的数据可视化平台davinci,以查询和显示数据.

访问层包括http服务器和tcp服务器,以实现客户端访问和用户登录身份验证,并支持内置的用户名和密码身份验证以及ldap集成身份验证.

Moonbox将其核心功能层命名为Grid. 网格使用主从集群工作模式,并支持主从切换.

网格具有三个角色: 主角色,工人角色和亚军角色

✔大师

Master负责接收所有用户请求,并根据请求模式(临时/批处理)将请求分派给适当的工作程序.

✔工人

阿里云 实时计算_实时计算服务平台_软件即服务 平台即服务

Worker负责Runner的生成和销毁,并将请求分配给适当的Runner.

✔赛跑者

Runner处理用户发送的请求,包括用户系统管理操作,权限管理操作,SQL分析,下推优化,执行引擎选择等,并将实际的计算任务提交给存储/计算层.

存储/计算层是真正进行计算的地方. Moonbox使用Spark作为混合引擎,并支持独立和纱线操作模式. 当计算逻辑可以完全下推到数据源计算时,Moonbox将计算任务直接映射到数据源的查询语言以执行下推计算,以减少启动分布式作业的开销. 数据源可以是纯存储系统(例如hdfs),也可以是具有计算能力的存储系统(例如mysql和elasticsearch),或者是计算引擎(例如presto). Moonbox将它们视为数据源.

Moonbox建立了完整的用户系统,并引入了组织概念来划分用户空间. 系统管理员ROOT帐户可以创建多个组织,并在组织中指定组织的管理员(SA). SA可以是一个或多个,负责创建和管理普通用户.

Moonbox将普通用户功能的五个属性抽象为:

✔是否可以创建新用户

✔是否可以执行DDL语句

✔您是否可以授权其他用户创建用户

✔您是否有权授权其他用户执行DDL语句

✔您是否可以向其他用户授权数据表或数据列

软件即服务 平台即服务_阿里云 实时计算_实时计算服务平台

通过属性的自由组合,可以构建满足多个角色和多个需求的用户系统模型,从而实现多租户.

Moonbox将查询语言统一为Spark SQL,使用Spark SQL语法进行查询操作,并扩展了一组DDL和DCL语句. 包括创建和删除用户以及授权,对数据表或数据列的访问授权,安装和卸载物理数据源或数据表,创建和删除逻辑,创建和删除udf / udaf,创建和删除计划任务等.

Moonbox基于Spark进行混合. Spark SQL支持多个数据源,但是当Spark SQL从数据源中提取数据时,只有项目和过滤器运算符被下推,并且不考虑数据源. 计算能力特征(例如Elasticsearch)对聚合操作非常友好. 如果可以将聚合操作下推到Elasticsearch进行计算,则比将数据拉回到Spark计算要快得多. 例如,如果将极限运算符下推至数据源计算,则可以大大减少返回的数据量并节省提取数据和计算的时间.

Moonbox进一步优化了由Spark Optimizer优化的LogicalPlan,根据规则拆分了可以向下推送的子树,并将这些子树映射到数据源查询语言,并将结果拉回到Spark参与进一步的计算. 如果LogicalPlan可以整体上减少计算,Moonbox将不会使用Spark进行计算,而是直接使用数据源客户端从LogicalPlan映射运行查询语句,以减少启动分布式作业的开销并节省分布式计算资源.

数据安全越来越受到企业的关注. 我们希望在方便,快捷地提供计算和数据服务的同时,我们也可以实现数据安全性. Moonbox定义了DCL语句以实现数据列级别的权限控制. Moonbox管理员通过DCL语句向用户授权数据表或数据列,Moonbox保存用户,表和目录中列之间的权限关系. 当用户使用SQL查询时,它将被拦截. 分析了SQL解析后,是否在LogicalPlan中引用了未经授权的表或列.

除了以jar包形式创建UDF / UDAF外,Moonbox还支持以源代码形式创建,包括Java和Scala语言,这为UDF开发和验证带来了便利. 同时,Moonbox还为复合数据类型(例如SQL中的Array类型)提供了高级功能支持(array.map,array.filter,array.exist).

Moonbox提供了计划作业的功能. 用户使用DDL语句定义计划任务,以crontab表达式的形式定义计划策略,并在后台嵌入石英以计划任务.

进行数据项目时,有必要了解数据的内容,质量和结构. 用户可以使用Moonbox快速执行数据探索和想法验证.

DBus和Wormhole实时将源数据更新到目标. 用户使用Davinci连接到Moonbox进行实时计算并显示目标库.

当企业数据存储在多个系统中时,需要多个接口或多种机制来与之交互. 借助Moonbox,可以将数据服务和元数据服务统一提供给外界.

基于传统数据仓库所面临的问题,Gartner分析师在几年前提出了逻辑数据仓库的概念. 他们认为逻辑数据仓库不仅需要存储结构化数据,还需要存储非结构化数据,并且可以使用数据虚拟化方法直接访问不同的数据源,以进行分布式和快速计算. 用户可以根据Moonbox提供的功能来构建逻辑数据仓库.

作为Moonbox系列的开篇,本文主要介绍设计概念,体系结构,功能特性和其他方面. 下一篇文章将从安装和使用,实现细节,应用程序场景等方面开始.

作者: 王浩


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-266909-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...