资讯专栏INFORMATION COLUMN

【宜信开源】Moonbox_v0.3_beta重大发布 ,Grid全新重构,更快更解耦

wzyplus / 2431人阅读

摘要:导读数据虚拟化思想一直以来都是敏捷大数据团队十分关注的一个点,则以此为基础而设计,致力于提供批量计算服务解决方案。二功能数据虚拟化思想是很重要的一个设计原则,在此基础上,实现了多种功能。

导读:数据虚拟化思想一直以来都是敏捷大数据团队十分关注的一个点,Moonbox则以此为基础而设计,致力于提供批量计算服务解决方案。今天,Moonbox惊喜发布0.3beta版(回顾v0.2请戳这里:#Moonbox# 计算服务平台简介),阅读全文,了解Moonbox,跟小编一起看0.3版本的神奇之处在哪里吧~

Project:https://github.com/edp963/moo...

Release:https://github.com/edp963/moo...

Documentation:https://edp963.github.io/moon...

一、Moonbox定位

在了解Moonbox新版本之前,我们先来回忆一下Moonbox的定位。

Moonbox是一个DVtaaS(Data Virtualization as a Service)平台解决方案。它基于数据虚拟化设计思想,致力于提供批量计算服务解决方案。Moonbox负责屏蔽底层数据源的物理和使用细节,为用户带来虚拟数据库般使用体验,用户只需通过统一SQL语言,即可透明实现跨异构数据系统混算和写出。此外Moonbox还提供数据服务、数据管理、数据工具、数据开发等基础支持,可支撑更加敏捷和灵活的数据应用架构和逻辑数仓实践。

二、Moonbox功能

数据虚拟化思想是Moonbox很重要的一个设计原则,在此基础上,Moonbox实现了多种功能。下面我们具体看一下Moonbox都有哪些功能:

多租户

Moonbox建立了一套完整的用户体系,引入了Organization的概念,用于划分用户空间。系统管理员ROOT账号可以创建多个Organization,并在Organization中指定该Organization的管理者(SA)。SA可以是一个或者多个,SA负责创建管理普通用户。

Moonbox将普通用户的能力抽象出六大属性,分别是是否可以执行Account管理语句,是否可以执行DDL语句,是否可以执行DCL语句, 是否拥有可以授权其他用户执行Account类语句的能力,是否拥有可以授权其他用户执行DDL语句的能力,是否拥有可以授权其他用户执行DCL语句的能力。通过属性的自由组合,可以构建出满足多种角色,多种需求的用户体系模型,并借此实现多租户。

扩展SQL

Moonbox将查询语言统一为Spark SQL,底层使用Spark进行计算,同时扩展了一套DDL、DCL语句。包括对用户的创建删除和授权,数据表或者数据列的访问授权,挂载卸载物理数据源或者数据表,创建删除逻辑数据库,创建删除UDF/UDAF,创建删除定时任务等。

优化策略

Moonbox基于Spark进行混算,Spark SQL是支持多数据源的,但是Spark SQL在从数据源中进行数据拉取的时候只进行了project和filter算子的下推,并没有考虑数据源的算力特性。

比如Elasticsearch对于聚合操作是很友好的,如果聚合操作能下推到Elasticsearch中进行计算会比将数据全部拉回Spark计算快的多。

再比如limit算子如果下推到数据源计算,能大大减少返回的数据量,节省拉取数据和计算的时间。

Moonbox对Spark Optimizer优化后的LogicalPlan作进一步的优化,根据规则拆分出可以进行下推的子树,将子树mapping成数据源查询语言,将下推结果拉回Spark参与进一步的计算。

另外,如果LogicalPlan可以整体下推计算,那么Moonbox将不采用Spark进行计算,而是直接使用数据源客户端运行LogicalPlan mapping出来的查询语句,以减少启动分布式作业的开销,并节省分布式计算资源。

列权限控制

Moonbox定义了DCL语句来实现数据列级别权限控制。Moonbox管理员通过DCL语句将数据表或者数据列授权给用户,Moonbox会将用户和表以及列的权限关系保存到catalog中。当用户在使用SQL查询时会被拦截,分析出SQL被解析后的LogicalPlan中是否引用了未被授权的表或者列,如果有就报错返回给用户。

多种形式的UDF/UDAF

Moonbox除了支持以jar包的形式创建UDF/UDAF外,还支持以源代码的形式创建,包括Java语言和Scala语言,这给UDF开发验证带来了便捷性。

定时任务

Moonbox提供了定时任务的功能,用户使用DDL语句定义定时任务,以crontab表达式的形式定义调度策略,后台内嵌quartz进行任务定时调度。

多种客户端

Moonbox支持以命令行工具, JDBC, Rest, ODBC等方式进行访问。

多种数据源支持

Moonbox支持多种数据源,包括MySQL, Oracle, SQLServer, Clickhouse, Elasticsearch, MongoDB, Cassandra, HDFS, Hive, Kudu等,且支持自定义扩展。

两种任务模式

Moonbox支持Batch和Interactive两种任务模式。Batch模式支持Spark Yarn Cluster Mode,Interactive模式支持Spark Local和Spark Yarn Client Mode。

集群工作模式

Moonbox以master-slave群集方式工作,支持master主备切换。

三、Moonbox_v0.3 VS v0.2

Moonbox_v0.3在v0.2的基础上做出了几点重要改变,具体包括:

去掉redis依赖

v0.2是将查询结果写入Redis然后客户端从Redis中获取结果;v0.3直接将结果返回给客户端。

改变数据传输方式

v0.2客户端以rest方式获取结果数据;v0.3使用netty加protobuf的方式获取结果数据。

Moonbox Master选主策略重构

将Moonbox Master选主由akka singleton改为使用zk进行选主和信息持久化。

Moonbox Worker与Spark解耦

在v0.2中,直接在Worker中运行Spark APP Driver;v0.3改为在新的进程中运行Spark APP Driver,这样Worker就与Spark进行了解耦,一个Worker节点可以运行多个Spark APP Driver,且可以运行其他APP。

Moonbox典型场景案例

最后,为了让大家更加了解Moonbox,我们来介绍几个典型的Moonbox应用场景案例。

基于DBus、Wormhole、Kudu、Moonbox构建实时ETL

DBus将数据库变更实时写入Kafka,Wormhole消费Kafka进行流式处理,流上lookup其他表形成大宽表,或者执行部分处理逻辑写入Kudu。使用Moonbox对Kudu进行查询将结果保存或者展示。

批量作业

使用Moonbox提供的批量作业脚本,异步rest接口或者定时任务,可以运行批量作业。

基于Davinci、Moonbox即席查询可视化

将Moonbox的JDBC驱动放入Davinci lib中,即可像使用其他数据库一样对Moonbox进行查询,并将结果进行图形化展示。

SAS查询

SAS用户可以使用ODBC的方式连接到Moonbox进行数据查询,并且可以将计算直接推到Moonbox中进行分布式计算。

便捷数据操作工具箱

因为Moonbox可以对接多种数据源,而且可以利用Spark进行多种数据源之间的混合计算,所以可以利用Moonbox进行各种便捷操作。例如利用一条SQL就可以搞定将一种数据源中某张表的数据导入另外一种数据源中,对比两张表有哪些数据不同等等。

更多使用场景,大家可以自行体验挖掘哦!

随着数据虚拟化越来越受到大家的重视,一个靠谱的工具成了大家探索数据虚拟化世界的共同需求。Moonbox就是这样一个工具,还等什么,赶紧用起来吧~

项目开源地址

DBus

Wormhole

Moonbox

Davinci

作者:王浩

来源:敏捷大数据

宜信技术学院

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/8625.html

相关文章

  • 宜信开源|大数据虚拟混算平台Moonbox配置指南

    摘要:具体值可查阅配置文件和配置文件。如果检查失败可通过查看节点或者节点上目录下的日志进行问题排查。开源地址拓展阅读宜信开源计算服务平台架构功能与应用场景宜信开源重大发布全新重构,更快更解耦来源宜信技术学院 一、环境准备 已安装Apache Spark 2.2.0(此版本仅支持Apache Spark 2.2.0, 其他Spark 版本后续会兼容) 已安装MySQL并启动,且开启远程访问 ...

    galois 评论0 收藏0
  • ReactJS新闻 #19 React Conf 2017将于3/13开始

    摘要:新闻,是一份收集每周来自官方网站新闻,各社交媒体新闻,以及周边技术与套件发表新闻的数位刊物,固定于每周六或日发送。发布新闻官网创建你自己的发布开发工具发布正式版本,与版本。 ReactJS新闻,是一份收集每周来自React、React Native官方网站新闻,各社交媒体新闻,以及周边技术与套件发表新闻的数位刊物,固定于每周六或日发送。 新闻 React Conf 2017将于3/1...

    teren 评论0 收藏0
  • 一套代码iOS、Android两端运行,Google Flutter意味着什么?

    摘要:作者屠敏一套代码可支持和双端运行,你了吗它就是。首个预览版的发布目前已发布了第一个预览版。那么国内的开发者该如何快速上手对此,团队正式发布了中文网站。其中包含了源自社区的许多中文资料,从而帮助国内开发者更好地使用。 作者 | 屠敏一套代码可支持 Android 和 iOS 双端运行,你 Get 了吗?它就是 Flutter。其目标是为了解决移动中的两个重要问题:一是实现原生应用的性能和...

    Alan 评论0 收藏0
  • Chrome 66 Beta:CSS 类型对象模型,异步剪贴板 API,AudioWorklet,等

    摘要:在中,针对属性的一个子集实现了类型对象模型,这些属于的一部分。返回一个对象,该对象指定每个受限制属性的值或值范围。例如,这会在导航请求期间发生。按照规范,已被删除。 原文链接:Chrome 66 Beta: CSS Typed Object Model, Async Clipboard API, AudioWorklet 除非另有说明,否则下文所述的更改适用于 Android,Ch...

    ralap 评论0 收藏0
  • Chrome 66 Beta:CSS 类型对象模型,异步剪贴板 API,AudioWorklet,等

    摘要:在中,针对属性的一个子集实现了类型对象模型,这些属于的一部分。返回一个对象,该对象指定每个受限制属性的值或值范围。例如,这会在导航请求期间发生。按照规范,已被删除。 原文链接:Chrome 66 Beta: CSS Typed Object Model, Async Clipboard API, AudioWorklet 除非另有说明,否则下文所述的更改适用于 Android,Ch...

    张宪坤 评论0 收藏0

发表评论

0条评论

wzyplus

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<