內容來源:2018 年 09 月 08 日,宜信大數據技術專家盧山巍在「2018開源數據庫論壇暨首屆MariaDB中國用戶者大會」進行《敏捷大數據實踐與開源賦能》演講分享。IT 大咖說做爲獨家視頻合做方,經主辦方和講者審閱受權發佈。mysql
閱讀字數:2520 | 7分鐘閱讀sql
本次演講主要分享敏捷大數據的相關實踐。數據庫
DBus(數據總線平臺)是一個DBaaS平臺解決方案,它主要面向大數據項目開發和管理運維人員,致力於提供數據實時採集和分發解決方案。緩存
平臺採用高可用流式計算框架,提供海量數據實時傳輸,可靠多路消息訂閱分發。經過簡單靈活的配置,實現無侵入接入源端數據,對各個IT系統在業務流程中產生的數據進行聚集,並統一處理轉換成經過JSON描述的UMS格式,提供給不一樣下游客戶訂閱和消費。安全
上圖爲dbus的模塊架構以及模塊之間的分工和數據流轉。就拿mysql爲例,咱們會先從MySQL備庫binlog中接入日誌抽取模塊,由它監控日誌變動並實時抽取出來,通過處理以後再落到kafka上,後面鏈接的分發預處理模塊會根據schema對數據進行分類,最後經過流式轉換模塊進行數據的清洗,好比將不一樣的數據格式轉換成ums。架構
Slave用來拉取初始的全量或者平常數據補充,先由分片模塊決定如何分片,具體分片工做在kafka上,後面的全量拉取模塊會真正從Slave拉取數據。app
心跳模塊會定時給Master發送心跳,心跳數據會經由binlog流出,這樣即便下游長時間未收到上游數據,也可以判斷當前狀況,知道dbus有沒有出現問題。框架
最後的多租戶分發模塊主要是出於安全考慮,保證不一樣部門間的數據隔離。運維
在討論ums以前,咱們首先要講下schema evolution。大多數公司出於業務考慮,其上游元數據會頻繁變動,所以須要在變動以前通知或者人爲干預。而dbus支持系統層面的自動檢測,擁有schema模式演變的能力,任何關係型表均可以用ums的格式表示(如上圖)。分佈式
schema模式演變由dbus提供元數據查詢服務,ums消息元數據自描述及解析去中心化,支持元數據變動版本號,線下支持非兼容性變動,能夠解耦邏輯表與物理Topic,經過payload下降元數據overhead。
Wormhole(流式處理平臺),是一個SPaaS平臺解決方案,提供數據流式處理解決方案。專一簡化和統一開發管理流程,並提供可視化界面,以及基於配置和SQL的業務開發方式。它屏蔽了底層技術實現細節,很大程度上下降了開發門檻,使得大數據流式處理項目的開發和管理變得更加輕量敏捷、可控可靠。
Wormhole設計核心在於概念抽象和flow能力,Wormhole Stream能夠看做是一個Spark Stream。咱們都知道Spark Stream的特色在於會佔用固定資源,不管負載狀況如何,並且從頭至尾只能作一件事情,若是要導多張表就要建多個Spark Stream。
而咱們從物理的Wormhole Stream中抽象出了邏輯的Wormhole flow概念,使得一個管道能夠同時接收多個源的數據。
上圖爲wormhole Stream的內部狀況,包含一個Driver和多個Executors,flow會實時感應zk指令並動態生效,無需重啓stream,還可根據zk配置動態加載topic。
Wormhole stream的冪等Sink實現,主要是經過id判斷是否寫入,再由op決定寫入方式,寫入以前儘可能合併行快照,寫入的時候採用批量處理,並支持亂序數據最終一致。
Flow漂移是另外一個很是有用的功能,能夠控制flow從一個stream中漂移到另外一個stream中,並自動調整合適的offset,爲自動化運維提供服務。
Moonbox是一個DaaS平臺解決方案,面向羣體爲數據倉庫工程師、數據分析師、數據科學家等,提供數據虛擬化解決方案。便可做爲數據應用層數據查詢計算統一入口,也可做爲邏輯數據倉庫與現有數據倉庫互補。用戶只須要經過統一SQL服務調用和Moonbox交互,便可透明屏蔽異構數據系統異構交互方式,輕鬆實現跨異構數據系統透明混算。
上圖爲moonbox的模塊架構,能夠看到它是分佈式高可用的,並基於spark得到了計算能力。不過Spark雖然可以接各類數據源,可是算子下推的能力有限,limit、group by、join等都不支持,moonbox則彌補了這個問題。
Davinci做爲可視化應用平臺,提供了一站式可視化的解決方案。便可做爲公有云/私有云獨立部署使用,也可做爲可視化插件集成到三方系統。用戶只需在可視化UI上簡單配置便可服務多種數據可視化應用,並支持高級交互、行業分析、模式探索、社交智能等可視化功能。
整體架構
上圖爲實時報表實現流程,首先經過dbus加wormhole將數據實時同步到關係型數據庫或者在分佈式存儲,併爲了進一步下降自助門檻,流上沒有設置轉換邏輯。
數據量小時能夠sink到關係數據庫並直接展現,數據量大時sink到分佈式存儲,維護實時快照(ODS)。而後利用moonbox進行查詢混算並提供給展現段,爲提升性能能夠定時預算並緩存。最後經過zeppelin進行報表開發,使用davinci進行報表展現和應用。
實時數據應用會接納更多數據源類型數據,爲提升實時應用的數據時效性,能夠在wormhole上配置流上處理邏輯,將增量數據以append方式落入到分佈式存儲。UbiLog能夠用來backfill wormhole以修復問題數據或邏輯,也能夠做爲數據錶的歷史數據來源。
經過dbus加wormhole將數據源實時同步到ODS和UbiLog,這樣就具有了全部最新快照數據和全部最新歷史數據。以backfil確保ODS的最終一致性,對OLAP系統的支持知足了實時統計分析類的需求。
數據分層架構均創建在moonbox裏,全部數據訪問都要經過moonbox接入,所以moonbox會自動維護全部元數據信息和全部查詢SQL邏輯,能夠基於此創建元數據管理、血緣分析、數據質量等系統。
數據可能因各類緣由散落在不一樣存儲中,但這對於數據分析人員和數據科學家來講沒必要在乎,它們只需經過moonbox提供的統一SQL來透明操做全部須要的數據,便可在安全管控下進行只有分析和探索。
用戶還可使用moonbox方便的將感興趣的數據導入私人分析沙箱,以確保和其餘互不影響。
以上爲所有分享內容,謝謝你們!