Moonbox v0.3beta 发布:Grid 全新重构,更快更解耦

栏目: 数据库 · 发布时间: 5年前

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

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

  1. Project :https://github.com/edp963/moonbox
  2. Release :https://github.com/edp963/moonbox/releases/tag/0.3.0-beta
  3. Documentation :https://edp963.github.io/moonbox/

一、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 :https://github.com/BriData/DBus

Wormhole :https://github.com/edp963/wormhole

Moonbox :https://github.com/edp963/moonbox

Davinci :https://github.com/edp963/davinci

作者:王浩  来源:敏捷大数据


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Node.js:来一打 C++ 扩展

Node.js:来一打 C++ 扩展

死月 / 电子工业出版社 / 2018-6-1 / 109

Node.js 作为近几年新兴的一种编程运行时,托 V8 引擎的福,在作为后端服务时有比较高的运行效率,在很多场景下对于我们的日常开发足够用了。不过,它还为开发者开了一个使用C++ 开发 Node.js 原生扩展的口子,让开发者进行项目开发时有了更多的选择。 《Node.js:来一打 C++ 扩展》以 Chrome V8 的知识作为基础,配合 GYP 的一些内容,将教会大家如何使用 Node......一起来看看 《Node.js:来一打 C++ 扩展》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具