云集技術學社 | 主流大數(shù)據(jù)架構及適用場景
7月22日,深信服大數(shù)據(jù)負責人Letian在信服云《云集技術學社》系列直播課上進行了《主流大數(shù)據(jù)架構及適用場景》的分享,對典型大數(shù)據(jù)的分析場景進行了總結,歸納了大數(shù)據(jù)新架構及適用應用場景,從大數(shù)據(jù)開發(fā)的視角來分析大數(shù)據(jù)開發(fā)過程以及如何簡化開發(fā)。以下是他分享內容摘要,想要了解更多可以點擊http://sangfor.bizconf.cn/live/watch/technology/?id=m471p65m&time=1628846273488觀看直播回放。
看點一:大數(shù)據(jù)分析典型應用場景
對于大部分用戶來說,對大數(shù)據(jù)只有一個模糊的概念,不了解特別具象化的應用場景。數(shù)據(jù)分析是大數(shù)據(jù)的核心場景,依據(jù)對于分析效率和方式的不同,基本上可以分為批處理、交互式分析、實時分析、分析預測、智能決策等場景。
大數(shù)據(jù)分析的主要應用場景有五個
一是離線分析場景,應用于用戶需要貼合業(yè)務形成的報表中,常見的是對靜態(tài)數(shù)據(jù)的批處理。離線分析場景往往需要對于海量數(shù)據(jù)處理幾個小時甚至幾天才能得到貼合業(yè)務需求的結果報表。
二是交互式分析場景,應用于儀表盤或自助分析。它的特點是表與表之間的關聯(lián)關系不確定,分析維度不確定,查詢度量不確定,通過即席查詢滿足秒級~分鐘級的分析需求。
三是實時分析場景,通常應用在交易風險預警、實時反欺詐、交易特征分析中,它的特點是表與表之間的關聯(lián)關系確定,分析維度不確定,查詢度量不確定,通過數(shù)據(jù)立方(Cube)技術提前預設數(shù)據(jù)模型,滿足從既定的多層次多維度的亞秒~秒級的分析需求。
四是流處理場景,流處理是指對如傳感器信號、日志、時空軌跡、網(wǎng)購、交易等連續(xù)的、沒有邊界的、快速隨時間不斷變化的數(shù)據(jù)項(又稱“流式數(shù)據(jù)“)進行過濾、轉化、復雜邏輯等操作,主要應用在公安緝查布控、套牌車分析、互聯(lián)網(wǎng)實時推薦系統(tǒng)中。
五是綜合檢索,即從海量的結構化、半/非結構化數(shù)據(jù)中快速抓取到符合要求的信息。通常應用在站內搜索引擎、知識庫以及高并發(fā)精準查詢等通過關鍵字檢索快速獲得信息的使用場景中。
看點二:大數(shù)據(jù)新架構及適用場景
信息技術的發(fā)展催生了大數(shù)據(jù)新架構的不斷升級迭代與創(chuàng)新,在本次課程中,Letian介紹了不同類型的大數(shù)據(jù)新架構及適用場景。
(1)存算分離
基于IO與CPU(含內存)的訴求可能出現(xiàn)不對等情況,人們意識到Hadoop發(fā)明之初強調存算融合,利用局部性讓計算跟著數(shù)據(jù)跑的局部性原理帶來的硬件節(jié)省,不如存儲和計算分別擴容帶來的節(jié)省硬件收益。對于企業(yè)而言,可以實現(xiàn)計算和存儲按需靈活擴容,降本增效。一般來說,數(shù)據(jù)量超過300TB,且大數(shù)據(jù)服務器總數(shù)量超過20臺時,用戶可以考慮采用存算分離架構。當分析時延要求極低且不具備緩存/RDMA能力時則不考慮采用存算分離架構。
(2)Lambda架構
Lambda架構是一個實時大數(shù)據(jù)處理框架,通過Batch Layer和Speed Layer的分層設計來實現(xiàn)在一個系統(tǒng)內同時支持流處理和批處理。
Lambda(λ)架構的數(shù)據(jù)流采用基于不可變日志的分布式消息系統(tǒng)Kafka,數(shù)據(jù)進入Kafka后,一部分進行批處理,一部分進行流處理。批處理通常使用MR或Spark進行Batch View的預計算, Batch View自身結果數(shù)據(jù)的存儲采用HBase(查詢大量的歷史結果數(shù)據(jù))。Speed Layer(流處理)增量數(shù)據(jù)的處理可選用Flink,Realtime View增量結果數(shù)據(jù)集為了滿足實時更新的效率,選用Redis。Lambda架構滿足了高容錯、低延時和可擴展等實時數(shù)據(jù)處理需求。
(3)批流融合
除了Lambda(λ)架構這種批流分離的架構外,批流融合也是十分流行的架構。批流融合支持ACID的upsert、delete、insert等可以實現(xiàn)流處理和批處理一體,確保統(tǒng)一的原始視圖(ODS),數(shù)據(jù)直接進入大數(shù)據(jù)數(shù)倉,計算口徑統(tǒng)一。批流融合不再采用消息隊列,其作用可以被流引擎部分替換,可以內部自動合并小文件,對上屏蔽小文件的處理復雜性,還可以讓用戶查詢給定時間點的快照或回滾錯誤更新到之前正確的數(shù)據(jù)。
(4)實時數(shù)倉
據(jù)Gartner統(tǒng)計實時數(shù)據(jù)規(guī)模在未來三年內會達到25%,數(shù)據(jù)規(guī)模高速增長帶來了強勁的數(shù)據(jù)分析需求,由此實時數(shù)倉應運而生,它可以進行內存級、細粒度的實時預計算。將cube的構建分為內存部分和磁盤部分,磁盤部分對應于傳統(tǒng)的預計算,內存部分對應于實時場景。在實時預計算系統(tǒng)中,用戶預先設置好需要在線分析的統(tǒng)計方法(度量及指標)。對實時產(chǎn)生的數(shù)據(jù),實時數(shù)倉以極細的時間粒度(segment)進行計算和匯總;實時數(shù)倉收到用戶查詢請求(query)時,如果計算結果處于內存中(realtime-node)中,則直接從內存中獲取結果。實時數(shù)倉廣泛應用于用戶畫像分析、點擊流分析、網(wǎng)絡流量分析等場景中。
(5)數(shù)據(jù)湖
企業(yè)在持續(xù)發(fā)展,企業(yè)的數(shù)據(jù)也不斷堆積,在數(shù)據(jù)存儲層面上,“含金量”最高的數(shù)據(jù)已經(jīng)存在數(shù)據(jù)庫和數(shù)倉里,支撐著企業(yè)的運轉。但是,企業(yè)希望把生產(chǎn)經(jīng)營中的所有相關數(shù)據(jù),歷史的、實時的,在線的、離線的,內部的、外部的,結構化的、非結構化的,都能完整保存下來,方便未來“沙中淘金”。因此,數(shù)據(jù)湖誕生,它由數(shù)據(jù)存儲架構、數(shù)據(jù)管理工具、數(shù)據(jù)探索和開發(fā)工具三要素構建。
(6)湖倉一體方案
數(shù)據(jù)湖起步成本很低,但隨著數(shù)據(jù)體量增大,TCO成本會加速飆升,數(shù)倉則恰恰相反,前期建設要小心地處理數(shù)據(jù),開支很大。一個后期成本高,一個前期成本高,對于既想修湖、又想建倉的用戶來說,既然都是拿數(shù)據(jù)為業(yè)務服務,數(shù)據(jù)湖和數(shù)倉作為兩大“數(shù)據(jù)集散地”,能不能彼此整合一下?于是數(shù)倉一體方案出現(xiàn),讓一套架構里面具備數(shù)據(jù)湖靈活性,兼有數(shù)據(jù)倉庫的成長性。
看點三:如何簡化大數(shù)據(jù)的開發(fā)
大數(shù)據(jù)的開發(fā)過程受工具及開發(fā)流程的影響,開發(fā)團隊的使用門檻高,上手難度大。對于項目交付而言,一是大數(shù)據(jù)分析的定制需求多,需要專業(yè)團隊才能交付;二是實施階段問題多,全階段都需要研發(fā)投入;三是項目成本中大數(shù)據(jù)占比高,驗證階段壓力大。這三重問題使得項目交付的成本高。其次,大數(shù)據(jù)復雜的架構就意味著技術棧復雜,尋找復合型人才難度大,人力成本高。由此可見,大數(shù)據(jù)的開發(fā)亟需降本增效,那么如何簡化大數(shù)據(jù)的開發(fā),提高研發(fā)人員的開發(fā)效率呢? Letian給出了如下建議:
一、通過外部工具將可視化展示內遷應用到大數(shù)據(jù)上??梢暬谴髷?shù)據(jù)分析的最后環(huán)節(jié),針對離線分析場景可以通過配置SQL/SPL 編寫圖/表的代碼,或者選擇預置的圖或表模板實現(xiàn)從立方體到交叉表(中國式復雜報表)的展示。針對交互式分析場景可以通過敏捷BI(Tableau、Kibana-Lens)進行拖拽實時自動地生成圖或表實現(xiàn)交互式分析可視化展示。
二、通過數(shù)倉開發(fā)工具簡化流程。數(shù)倉開發(fā)是大數(shù)據(jù)開發(fā)的主要場景,針對數(shù)倉開發(fā)可以通過工具或者可視化平臺減少需要反復的過程。在數(shù)據(jù)進行清洗后,數(shù)倉可以進入可視化平臺開發(fā)免除繁瑣的代碼編寫,在原始數(shù)據(jù)中加載數(shù)據(jù)可以有可視化操作,通過拖拽構建數(shù)倉模型,從中提取指標并設置加速機制自動進行預計算,設置上線定時周期腳本讓模型在固定時間關聯(lián)、運行、驗證。
三、流計算開發(fā)工具。在流處理場景中,可以通過可視化工具進行輔助開發(fā)。通過可視化開發(fā)畫布,進行數(shù)據(jù)來源配置、觸發(fā)條件配置和數(shù)據(jù)目的配置,省去流計算中的代碼編寫。
四、調度開發(fā)工具。大數(shù)據(jù)的開發(fā)需要不同代碼的編寫,各個代碼之間可以通過可視化調度開發(fā)工具實現(xiàn)管理、調度和依賴關系的處置。