您好,登錄后才能下訂單哦!
導讀:數據虛擬化思想一直以來都是敏捷大數據團隊十分關注的一個點,Moonbox則以此為基礎而設計,致力于提供批量計算服務解決方案。今天,Moonbox驚喜發布0.3beta版(回顧v0.2請戳這里:#Moonbox# 計算服務平臺簡介:http://college.creditease.cn/detail/154),閱讀全文,了解Moonbox,跟小編一起看0.3版本的神奇之處在哪里吧~
Project:https://github.com/edp963/moonbox
Release:https://github.com/edp963/moonbox/releases/tag/0.3.0-beta
在了解Moonbox新版本之前,我們先來回憶一下Moonbox的定位。
Moonbox是一個DVtaaS(Data Virtualization as a Service)平臺解決方案。它基于數據虛擬化設計思想,致力于提供批量計算服務解決方案。Moonbox負責屏蔽底層數據源的物理和使用細節,為用戶帶來虛擬數據庫般使用體驗,用戶只需通過統一SQL語言,即可透明實現跨異構數據系統混算和寫出。此外Moonbox還提供數據服務、數據管理、數據工具、數據開發等基礎支持,可支撐更加敏捷和靈活的數據應用架構和邏輯數倉實踐。
數據虛擬化思想是Moonbox很重要的一個設計原則,在此基礎上,Moonbox實現了多種功能。下面我們具體看一下Moonbox都有哪些功能:
Moonbox建立了一套完整的用戶體系,引入了Organization的概念,用于劃分用戶空間。系統管理員ROOT賬號可以創建多個Organization,并在Organization中指定該Organization的管理者(SA)。SA可以是一個或者多個,SA負責創建管理普通用戶。
Moonbox將普通用戶的能力抽象出六大屬性,分別是是否可以執行Account管理語句,是否可以執行DDL語句,是否可以執行DCL語句, 是否擁有可以授權其他用戶執行Account類語句的能力,是否擁有可以授權其他用戶執行DDL語句的能力,是否擁有可以授權其他用戶執行DCL語句的能力。通過屬性的自由組合,可以構建出滿足多種角色,多種需求的用戶體系模型,并借此實現多租戶。
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中是否引用了未被授權的表或者列,如果有就報錯返回給用戶。
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在v0.2的基礎上做出了幾點重要改變,具體包括:
v0.2是將查詢結果寫入Redis然后客戶端從Redis中獲取結果;v0.3直接將結果返回給客戶端。
v0.2客戶端以rest方式獲取結果數據;v0.3使用netty加protobuf的方式獲取結果數據。
將Moonbox Master選主由akka singleton改為使用zk進行選主和信息持久化。
在v0.2中,直接在Worker中運行Spark APP Driver;v0.3改為在新的進程中運行Spark APP Driver,這樣Worker就與Spark進行了解耦,一個Worker節點可以運行多個Spark APP Driver,且可以運行其他APP。
最后,為了讓大家更加了解Moonbox,我們來介紹幾個典型的Moonbox應用場景案例。
DBus將數據庫變更實時寫入Kafka,Wormhole消費Kafka進行流式處理,流上lookup其他表形成大寬表,或者執行部分處理邏輯寫入Kudu。使用Moonbox對Kudu進行查詢將結果保存或者展示。
使用Moonbox提供的批量作業腳本,異步rest接口或者定時任務,可以運行批量作業。
將Moonbox的JDBC驅動放入Davinci lib中,即可像使用其他數據庫一樣對Moonbox進行查詢,并將結果進行圖形化展示。
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
作者:王浩
來源:敏捷大數據
宜信技術學院
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。