Moonbox 計算服務平台簡介

導讀:業務系統或者日誌系統產生了大量的原始數據,我們根據業務場景需求將數據保存到不同的存儲中。然而,數據只有通過整合、加工、計算,才能提取出其潛在的信息,讓數據變為資產,從而實現數據的價值。Moonbox就是這樣一款計算服務平臺,在敏捷大數據(Agile BigData)理論的指導下,圍繞“計算服務化”和“數據虛擬化”兩個核心概念進行設計,支持多種數據源混合計算。Moonbox的設計理念是怎樣的?又有什麼功能特點呢?本文帶您初步走進Moonbox~

一、Moonbox設計理念

大數據技術在企業中的應用日益廣泛,為解決各種不同的場景問題,越來越多的數據系統出現,而如何基於全景數據去進行快速查詢計算成為了迫切的需求和挑戰。

目前的主流方式是建立以Hadoop為核心的數據倉庫/數據湖,這在某種程度上解決了異構數據系統及數據分散的問題,但依然存在數據歸集帶來的維護成本和時效損失。另外,數據開發人員也面臨著業務頻繁變更和結果快速交付的問題。

面對這一系列挑戰,計算服務化和數據虛擬化提供了很好的解決思路。Moonbox正是在大數據場景下,對計算服務化和數據虛擬化的一種實踐,其設計思想主要體現在以下幾個方面:

計算服務化

Moonbox提供多種查詢接口以及定時任務,將計算資源變成一種服務,終端用戶可以自助註冊數據源編寫SQL實現需求,只需要關心業務邏輯,而不用關心作業是如何提交運行的。

數據虛擬化

Moonbox提供虛擬表到物理表之間的映射,終端用戶無需關心數據的物理存放位置和底層數據源的特性,可直接操作數據,體驗類似操作一個虛擬數據庫。

統一入口

✔ 統一查詢語言

Moonbox對用戶提供統一的SQL語法標準,屏蔽異構數據系統查詢語言的差異,用戶只需編寫SQL即可查詢各種數據系統,也可使用SQL進行跨異構數據系統混算,降低多數據系統的學習成本。

✔ 統一元數據服務

Moonbox能夠對接多種數據系統,可以拿到各個數據系統數據表的schema信息,Moonbox並不存儲schema信息,每次都是實時從數據源獲取,所以不存在元數據變更不及時,需要同步更新等問題。Moonbox對外提供統一的元數據服務接口,用戶無需為了獲取各種數據源的元數據而調用多種接口。

✔ 統一權限控制

每種數據源都有各自特有的安全機制,用戶在使用這些數據系統的時候就需要多付出一定的學習成本。Moonbox在邏輯層提供了統一的安全訪問機制,在接入時,提供認證登錄功能;在查詢時,通過攔截分析查詢SQL,實現列級別的數據權限控制。如果查詢統一從Moonbox接口進入,那麼Moonbox就為各種數據源加上了一把安全鎖,用戶無需再學習各種數據源特有的安全機制。

二、Moonbox體系架構

Moonbox體系架構圖如下:

Moonbox 計算服務平臺簡介

Moonbox總體上由四部分組成,分別是Moonbox客戶端、Moonbox接入層、Moonbox核心功能層以及存儲計算層。

Moonbox客戶端

Moonbox客戶端主要包括以下幾種:

✔ restful api

以restful api的方式提供計算服務,支持batch、adhoc模式,支持同步和異步方式。

✔ jdbc

對jdbc接口的實現,使用戶擁有數據庫般的使用體驗。

✔ cli

命令行工具,基於jline實現。通過cli可以完成DDL(Data Definition Language)、DML(Data Manipulation Language)、DCL(Data Control Language)以及Query操作。

✔ zeppelin

提供zeppelin moonbox interpreter,可以使用zeppelin快速進行原型驗證和SQL開發。

✔ davinci

通過jdbc支持ABD Stack(敏捷大數據技術棧)中數據可視化平臺davinci的接入,進行數據查詢並展示。

Moonbox接入層

接入層包括http server和tcp server,實現客戶端接入,並進行用戶登錄認證,支持內置用戶名密碼認證方式和ldap集成認證方式。

Moonbox核心功能層

Moonbox將其核心功能層命名為Grid。Grid使用master-slave集群工作模式,支持master主備切換。

Grid有Master、Worker、Runner三種角色:

✔ Master

Master負責接收所有的用戶請求,根據請求模式(adhoc/batch)將請求調度到合適的Worker上。

✔ Worker

Worker負責Runner的生成和銷燬,將請求分配給合適Runner。

✔ Runner

Runner處理用戶發過來的請求,包括用戶體系管理操作、權限管理操作、SQL解析、下推優化、執行引擎選擇等,並向存儲/計算層提交真正的計算任務。

存儲/計算層

存儲/計算層是計算真正發生的地方。Moonbox使用Spark作為混算引擎,支持standalone和yarn運行模式。當計算邏輯可以完全下推到數據源計算時,Moonbox將計算任務直接mapping成數據源的查詢語言進行下推計算,以減小啟動分佈式作業的開銷。數據源除了可以是hdfs這種純存儲系統,或者mysql、elasticsearch這種帶計算能力的存儲系統,還可以是presto等計算引擎,Moonbox將他們統一視為數據源。

三、Moonbox功能特點

用戶體系

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

Moonbox將普通用戶的能力抽象出五大屬性,分別為:

✔ 是否可以創建新用戶

✔ 是否可以執行DDL語句

✔ 是否擁有可以授權其他用戶創建用戶的能力

✔ 是否擁有可以授權其他用戶執行DDL語句的能力

✔ 是否擁有對數據表或者數據列進行授權給其他用戶的能力

通過屬性的自由組合,可以構建出滿足多種角色、多種需求的用戶體系模型,並可藉此實現多租戶。

擴展SQL

Moonbox將查詢語言統一為Spark SQL,使用Spark SQL語法進行查詢操作,同時擴展了一套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還在SQL中對複合數據類型,比如Array類型提供了高階函數支持(array.map,array.filter,array.exist)。

定時任務

Moonbox提供了定時作業的功能,用戶使用DDL語句定義定時任務,以crontab表達式的形式定義調度策略,後臺內嵌quartz進行任務定時調度。

四、Moonbox應用場景

即席查詢

在進行數據項目時,需要了解數據的內容、質量和結構。用戶可以使用Moonbox快速進行數據探查和idea驗證。

實時報表

DBus和Wormhole將源庫數據實時更新到目的庫。用戶使用Davinci連接Moonbox對目的庫進行實時計算展示。

數據服務

當企業數據被存儲在多個系統中時,想要與之交互需要多個接口或多種機制。藉助Moonbox可以統一對外提供數據服務和元數據服務。

邏輯數倉

基於傳統數據倉庫面臨的問題,Gartner的分析師在幾年前提出了邏輯數據倉庫的概念。他們認為邏輯數據倉庫不僅需要存儲結構化數據,還能存儲非結構化數據,能夠使用數據虛擬化手段直接訪問不同的數據源進行分佈式快速計算。用戶可以基於Moonbox提供的功能進行邏輯數倉建設。

Moonbox目前處於測試完善階段,預計不久會發布可用版本。本篇作為Moonbox系列的開篇,主要從設計理念、架構、功能特點等方面進行了介紹。接下來的文章將會從安裝使用、實現細節、應用場景等方面來展開。

宜信技術學院


分享到:


相關文章: