1. 程式人生 > >為什麼大資料需要敏捷思維?

為什麼大資料需要敏捷思維?

內容來源:2018 年 09 月 08 日,宜信大資料技術專家盧山巍在“2018開源資料庫論壇暨首屆MariaDB中國使用者者大會”進行《敏捷大資料實踐與開源賦能》演講分享。IT 大咖說作為獨家視訊合作方,經主辦方和講者審閱授權釋出。

閱讀字數:2520 | 7分鐘閱讀

獲取嘉賓演講視訊及PPT,請點選: t.cn/Ew5eUsm

摘要

本次演講主要分享敏捷大資料的相關實踐。

何為敏捷大資料

敏捷大資料是指在敏捷理念原則指導下,構建一系列通用平臺工具,和一整套大資料應用全生命週期方法學,以支撐更輕量、更靈活、更低門檻、更快迭代的大資料實踐。

敏捷大資料平臺棧

實時化:dbus

DBus(資料匯流排平臺)是一個DBaaS平臺解決方案,它主要面向大資料專案開發和管理運維人員,致力於提供資料實時採集和分發解決方案。

平臺採用高可用流式計算框架,提供海量資料實時傳輸,可靠多路訊息訂閱分發。通過簡單靈活的配置,實現無侵入接入源端資料,對各個IT系統在業務流程中產生的資料進行彙集,並統一處理轉換成通過JSON描述的UMS格式,提供給不同下游客戶訂閱和消費。

上圖為dbus的模組架構以及模組之間的分工和資料流轉。就拿mysql為例,我們會先從MySQL備庫binlog中接入日誌抽取模組,由它監控日誌變更並實時抽取出來,經過處理之後再落到kafka上,後面連線的分發預處理模組會根據schema對資料進行分類,最後通過流式轉換模組進行資料的清洗,比如將不同的資料格式轉換成ums。

Slave用來拉取初始的全量或者日常資料補充,先由分片模組決定如何分片,具體分片工作在kafka上,後面的全量拉取模組會真正從Slave拉取資料。

心跳模組會定時給Master傳送心跳,心跳資料會經由binlog流出,這樣即使下游長時間未收到上游資料,也能夠判斷當前情況,知道dbus有沒有出現問題。

最後的多租戶分發模組主要是出於安全考慮,保證不同部門間的資料隔離。

在討論ums之前,我們首先要講下schema evolution。大多數公司出於業務考慮,其上游元資料會頻繁變更,因此需要在變更之前通知或者人為干預。而dbus支援系統層面的自動檢測,擁有schema模式演變的能力,任何關係型表都可以用ums的格式表示(如上圖)。

schema模式演變由dbus提供元資料查詢服務,ums訊息元資料自描述及解析去中心化,支援元資料變更版本號,線下支援非相容性變更,可以解耦邏輯表與物理Topic,通過payload降低元資料overhead。

實時化:wormhole

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

Moonbox是一個DaaS平臺解決方案,面向群體為資料倉庫工程師、資料分析師、資料科學家等,提供資料虛擬化解決方案。即可作為資料應用層資料查詢計算統一入口,也可作為邏輯資料倉庫與現有資料倉庫互補。使用者只需要通過統一SQL服務呼叫和Moonbox互動,即可透明遮蔽異構資料系統異構互動方式,輕鬆實現跨異構資料系統透明混算。

上圖為moonbox的模組架構,可以看到它是分散式高可用的,並基於spark獲得了計算能力。不過Spark雖然能夠接各種資料來源,但是運算元下推的能力有限,limit、group by、join等都不支援,moonbox則彌補了這個問題。

視覺化:davinci

Davinci作為視覺化應用平臺,提供了一站式視覺化的解決方案。即可作為公有云/私有云獨立部署使用,也可作為視覺化外掛整合到三方系統。使用者只需在視覺化UI上簡單配置即可服務多種資料視覺化應用,並支援高階互動、行業分析、模式探索、社交智慧等視覺化功能。

總體架構

架構方案之實時資料平臺RDP

場景1:實時報表

上圖為實時報表實現流程,首先通過dbus加wormhole將資料實時同步到關係型資料庫或者在分散式儲存,併為了進一步降低自助門檻,流上沒有設定轉換邏輯。

資料量小時可以sink到關係資料庫並直接展示,資料量大時sink到分散式儲存,維護實時快照(ODS)。然後利用moonbox進行查詢混算並提供給展示段,為提高效能可以定時預算並快取。最後通過zeppelin進行報表開發,使用davinci進行報表展示和應用。

場景2:實時應用

實時資料應用會接納更多資料來源型別資料,為提高實時應用的資料時效性,可以在wormhole上配置流上處理邏輯,將增量資料以append方式落入到分散式儲存。UbiLog可以用來backfill wormhole以修復問題資料或邏輯,也可以作為資料錶的歷史資料來源。

架構方案之敏捷商業智慧ABI

敏捷BI

通過dbus加wormhole將資料來源實時同步到ODS和UbiLog,這樣就具備了所有最新快照資料和所有最新歷史資料。以backfil確保ODS的最終一致性,對OLAP系統的支援滿足了實時統計分析類的需求。

資料分層架構均建立在moonbox裡,所有資料訪問都要通過moonbox接入,因此moonbox會自動維護所有元資料資訊和所有查詢SQL邏輯,可以基於此建立元資料管理、血緣分析、資料質量等系統。

敏捷AI

資料可能因各種原因散落在不同儲存中,但這對於資料分析人員和資料科學家來說不必在意,它們只需通過moonbox提供的統一SQL來透明操作所有需要的資料,即可在安全管控下進行只有分析和探索。

使用者還可以使用moonbox方便的將感興趣的資料匯入私人分析沙箱,以確保和其他互不影響。

以上為全部分享內容,謝謝大家!