爲什麼大數據需要敏捷思維?

為什麼大數據需要敏捷思維?

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

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

獲取嘉賓完整演講視頻及PPT,請複製:http://t.cn/Ez1wD3p,粘貼至瀏覽器即可。

為什麼大數據需要敏捷思維?

摘要

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

何為敏捷大數據

為什麼大數據需要敏捷思維?

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

敏捷大數據平臺棧

實時化: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方便的將感興趣的數據導入私人分析沙箱,以確保和其他互不影響。

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


分享到:


相關文章: