【宜信開源】Moonbox_v0.3_beta重大發布 ,Grid全新重構,更快更解耦

導讀:數據虛擬化思想一直以來都是敏捷大數據團隊十分關注的一個點,Moonbox則以此爲基礎而設計,致力於提供批量計算服務解決方案。今天,Moonbox驚喜發佈0.3beta版(回顧v0.2請戳這裏:#Moonbox# 計算服務平臺簡介),閱讀全文,瞭解Moonbox,跟小編一塊兒看0.3版本的神奇之處在哪裏吧~git

1、Moonbox定位

在瞭解Moonbox新版本以前,咱們先來回憶一下Moonbox的定位。github

Moonbox是一個DVtaaS(Data Virtualization as a Service)平臺解決方案。它基於數據虛擬化設計思想,致力於提供批量計算服務解決方案。Moonbox負責屏蔽底層數據源的物理和使用細節,爲用戶帶來虛擬數據庫般使用體驗,用戶只需經過統一SQL語言,便可透明實現跨異構數據系統混算和寫出。此外Moonbox還提供數據服務、數據管理、數據工具、數據開發等基礎支持,可支撐更加敏捷和靈活的數據應用架構和邏輯數倉實踐。redis

2、Moonbox功能

數據虛擬化思想是Moonbox很重要的一個設計原則,在此基礎上,Moonbox實現了多種功能。下面咱們具體看一下Moonbox都有哪些功能:數據庫

多租戶

Moonbox創建了一套完整的用戶體系,引入了Organization的概念,用於劃分用戶空間。系統管理員ROOT帳號能夠建立多個Organization,並在Organization中指定該Organization的管理者(SA)。SA能夠是一個或者多個,SA負責建立管理普通用戶。架構

Moonbox將普通用戶的能力抽象出六大屬性,分別是是否能夠執行Account管理語句,是否能夠執行DDL語句,是否能夠執行DCL語句, 是否擁有能夠受權其餘用戶執行Account類語句的能力,是否擁有能夠受權其餘用戶執行DDL語句的能力,是否擁有能夠受權其餘用戶執行DCL語句的能力。經過屬性的自由組合,能夠構建出知足多種角色,多種需求的用戶體系模型,並藉此實現多租戶。app

擴展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主備切換。

3、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

做者:王浩

來源:敏捷大數據

宜信技術學院

相關文章
相關標籤/搜索