Moonbox_v0.3_beta重大發布

Moonbox_v0.3_beta重大發布 | Grid全新重構,更快更解耦

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


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

Release:https://github.com/edp963/moonbox/releases/tag/0.3.0-beta

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進行查詢將結果保存或者展示。

* 關於DBus和Wormhole的更多信息,請微信搜索“敏捷大數據”公眾號,參考公眾號內相關文章。

  • 批量作業

使用Moonbox提供的批量作業腳本,異步rest接口或者定時任務,可以運行批量作業。

  • 基於Davinci、Moonbox即席查詢可視化

將Moonbox的JDBC驅動放入Davinci lib中,即可像使用其他數據庫一樣對Moonbox進行查詢,並將結果進行圖形化展示。

* 關於Davinci的更多信息,請微信搜索“敏捷大數據”公眾號,參考公眾號內相關文章。

  • SAS查詢

SAS用戶可以使用ODBC的方式連接到Moonbox進行數據查詢,並且可以將計算直接推到Moonbox中進行分佈式計算。

  • 便捷數據操作工具箱

因為Moonbox可以對接多種數據源,而且可以利用Spark進行多種數據源之間的混合計算,所以可以利用Moonbox進行各種便捷操作。例如利用一條SQL就可以搞定將一種數據源中某張表的數據導入另外一種數據源中,對比兩張表有哪些數據不同等等。

更多使用場景,大家可以自行體驗挖掘哦!




隨著數據虛擬化越來越受到大家的重視,一個靠譜的工具成了大家探索數據虛擬化世界的共同需求。Moonbox就是這樣一個工具,還等什麼,趕緊用起來吧~


分享到:


相關文章: