中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-10-22 20:39:39 來源:網絡 閱讀:588 作者:宜信技術 欄目:大數據

導讀:數據虛擬化思想一直以來都是敏捷大數據團隊十分關注的一個點,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

  • 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

作者:王浩

來源:敏捷大數據

宜信技術學院

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宜兰县| 莎车县| 武平县| 大荔县| 图们市| 泾川县| 汉中市| 枝江市| 昭苏县| 长阳| 边坝县| 西和县| 绥中县| 基隆市| 图木舒克市| 庆城县| 淮北市| 桂阳县| 临海市| 武穴市| 宾川县| 秀山| 澎湖县| 鄂托克前旗| 信丰县| 巴马| 卢龙县| 绥滨县| 吕梁市| 连江县| 延津县| 稻城县| 班戈县| 内乡县| 根河市| 杭州市| 通州市| 仙居县| 轮台县| 七台河市| 壶关县|