敏捷大數據方法論

前段時間有報道稱,有學者質疑“大數據”理論,也有硅谷公司負責人質疑大數據應用的效果。結合2011年Gartner關于BI(Business Intelligence)應用70%-80%都失敗的一個調查結論(這里的fail是夸張的說法,更確切地講應該是沒有達到預期效果),本文就來談談為什么會出現這樣的問題,大數據應用落地的瓶頸是什么?為什么大數據應用容易失敗?為什么大數據應用需要敏捷?敏捷大數據方法論又是什么,包括那些關鍵技術,系統架構如何設計等等問題,希望能為業界大數據應用落地提供一點有價值的參考。

1.大數據應用落地的主要瓶頸是什么?

我在前文《論大數據的泡沫、價值與應用陷阱》有說到,大數據現象源于我們對未來不確定性的恐懼,和應對軟件在加速吞噬世界(軟件越來越龐雜,操作越來越自動化,數據越來越豐富,而大部分人卻對其原理和特性卻知之甚少)這一大背景下的管理失控問題。大數據規律的可預測性創造了一種新的知識體系和管理思維,但分析模型的黑箱和操作的自動化卻削弱了人類對其深層規律的理解和探索能力,機器的量化能力與人的主觀判斷能力短時間內還難以有機融合,大數據應用不缺預測模型、計算資源和數據科學家,而是缺乏提出正確問題和利用大數據工具解決問題的能力,就好比用大炮沒有打到蚊子,我們不能說大炮沒用,而會說這個人的方法搞錯了。

大數據分析的核心目標是,面向過去,發現數據規律,歸納已知;面向未來,挖掘數據趨勢,預測未知。從而通過大數據分析提高對事物的理解和決策處置能力,最終實現智能化。不管是商業智能,機器智能,人工智能,還是智能客服,智能問答,智能推薦,智慧醫療、智慧交通等相關技術和系統,其本質都是朝著這一目標在演進。隨著云計算平臺和開源大數據系統(如Hadoop、Spark、Storm等)的高速發展,獲得大數據基礎設施建設相關技術和支持越來越容易。同時,移動互聯網和物聯網技術所具備的全面數據采集能力,客觀上促進了大數據的積累和爆發。但是,大數據應用要落地,除了需要上述提出正確問題和利用大數據工具解決問題的能力之外,個人認為還面臨如下幾個方面的主要瓶頸:

1)IT向DT(Data Technology,DT)技術泛型的轉變,使得傳統硬件和軟件技術架構面臨挑戰,大規模并行計算、量子計算機、深度神經網絡芯片、分布式存儲系統、GPU大規模計算等都是對傳統IT技術架構的顛覆。現階段各種大數據分析相關的開源技術和系統百花齊放,大數據技術生態體系龐雜,技術門檻較高也間接說明了這一點。研究、研發人員要跟上這一波技術變革還需要時間去消化和積累,特別是學術界和工業界的結合,對大數據應用來講至關重要,深度學習領域的突破就是例證。如何在掌握有限技術的條件下(或受制于核心技術人才的情況下),能快速進行大數據應用研究和落地應用,需要從技術選型角度進行深入探討、分析和評估。

2)傳統商業智能(Business Intelligence, BI)應用的失敗教訓太多,項目周期漫長,考驗客戶耐性,應用投入成本高,最終成果多是昂貴的豪華報表,沒有達到預期效果。另外,傳統數據倉庫和數據集市架構下,面對海量數據的存儲能力、擴展能力、并發能力弱等問題無法從根本解決。大數據分析如何從BI項目中總結失敗教訓和獲得經驗,大數據應用與傳統BI系統是融合還是代替?企業大數據技術架構如何與發源于互聯網巨頭的主流大數據技術框架有機統一?也還有很多問題需要深入總結,解決不好就會事倍功半。

3)大數據應用的標準化和產品化問題。針對大數據的多源異構、動態性、關聯性等特點,對大數據分析流程和應用進行標準化的管理,對離線分析、在線分析、實時分析、內存分析等計算框架的融合處理,對圖像、文本、視頻、音頻、網頁、關系數據庫等多源異構數據進行跨模態建模,對大數據分析結果的應用效果進行量化與評價。不管是從技術選型角度還是業務支撐角度,都還有很多問題需要實戰經驗的積累和支持,想要一勞永逸地解決不現實。

4)除了前述探討的大數據應用面臨的挑戰之外,從大數據架構本身的技術角度分析還需要解決如下幾個關鍵問題:高可擴展性,能支持大規模數據增長和大量業務分析的快速擴展等;高容錯性和穩定性,能支持大數據分析的失敗情況和進行自動恢復等;高性能和并行支持,能在海量數據條件下快速完成多種計算模型和分析處理;多源異構環境支持,能處理多模態數據和多種分析任務;開放性和共享支持,能提供標準的數據和開發接口,支持數據和系統集成;效率和成本的控制,能在有限的時間、人力和財力條件下提高系統性能等,這對大數據系統架構的設計提出了較高要求。

5)大數據管理思維和開發、應用實施的脫節,大數據強化了定量科學和客觀方法的地位,但事實上,現階段很多企業領導,包括技術人員對大數據的處理和使用仍然是主觀性的,而且面對機器學習的黑箱,對模型的缺陷和適用范疇很難有深入把握,這樣的話通過大數據挖掘分析量化的結果也未必更符合客觀事實,大數據不等于好數據,如何切實輔助決策才是關鍵。

再則,大數據是非常碎片化的,大數據不只是谷歌,亞馬遜,BAT等互聯網企業,每一個行業、企業里面都有它去關注數據的痕跡:一條生產線上的實時傳感器數據,車輛身上的傳感數據,高鐵設備的運行狀態數據,交通部門的監控數據等等;其次,現在的開源大數據系統架構和工具集來源于互聯網巨頭,這種技術架構不一定適合傳統企業和政府關聯機構,因為不同組織機構所擁有的數據類型和結構可能大不相同;再次,從大數據應用過程和特點來看,數據科學的本質是迭代,就好比嬰兒的學習一樣,輸入-回應-反饋-學習-再輸入,持續訓練和學習才會產生智能,大數據分析系統是一樣的道理,自適應優化和持續改進是大數據系統的必備特征。所以,這就需要大數據技術架構具有極強的靈活性、可擴展性,或者說敏捷性。

2.大數據應用為什么需要敏捷?

上述五個方面的大數據應用瓶頸分析可以看到,大數據應用要切實落地并產生應有價值還要較長的路要走,當然這取決于我們的期望,在《企業大數據應用三段論》一文中,有明確的界定,大數據應用的效果不能輕易否定,當然也不能太樂觀,關鍵還是看處于那個階段,技術成熟度和設計研發能力如何等等。為什么大數據需要敏捷,或者說我為什么提出敏捷大數據,主要基于上述大數據應用瓶頸的判斷:大數據應用落地面臨很多現實問題,首先我們看大數據的應用過程和特點(如圖1),大數據要完成的是一種將各方面源數據(零散的、相關的圍繞某行業或者某分析主題的數據)通過ETL組織成為主題數據,從主題數據中提煉信息特征,從特征挖掘中發現規律和有價值的知識,就規律和預測等知識信息形成決策支持并進行應用和追蹤評估,最后反饋回大數據系統進行反復驗證、優化并持續迭代的閉環信息處理過程。

圖1 大數據應用金字塔模型

其次,有沒有通用的大數據應用架構和流程?一般來講,不同行業、不同企業、不同應用場景,采用的技術架構和分析流程也會有差異;再次,大數據應用落地需面對的現實問題眾多,項目周期漫長,考驗客戶耐性,技術生態龐雜,復合型人才少,一將難求,應用效果如何量化也還沒標準,用戶參與度低,難達預期目標,機器學習數據實驗,如何應用于數據工程等等問題,對大數據分析的系統架構、關鍵技術及應用方法論,提出了較高要求,下面就來看敏捷大數據能否解決一些問題。

3.敏捷大數據方法論

(1)何為敏捷?

何為敏捷,我們先看幾個概念:

敏捷開發(Agile Development),以用戶的需求進化為核心,采用迭代、循序漸進的方法進行軟件開發。在敏捷開發中,軟件項目在構建初期被切分成多個子項目,各個子項目的成果都經過測試,具備可視、可集成和可運行使用的特征。換言之,就是把一個大項目分為多個相互聯系,但也可獨立運行的小項目,并分別完成,在此過程中軟件一直處于可使用狀態。

敏捷管理(Agile Management),敏捷管理是規劃和指導項目流程的迭代方法,與敏捷軟件開發一樣,敏捷項目是在叫做迭代的小型部門中完成的。每個迭代都由項目團隊審查和評判,從迭代的評判中獲得的信息用于決定項目的下一個步驟。由于開發周期短,對需求管理恰當,敏捷管理正在從軟件研發行業延伸到已經采取項目化管理的大部分行業中。

精益生產(Lean Production),簡稱“精益”,是衍生自日本豐田生產方式的一種管理哲學,由美國麻省理工學院教授詹姆斯.P.沃麥克等專家通過“國際汽車計劃(IMVP)”對全世界17個國家90多個汽車制造廠的調查和對比分析,認為日本豐田汽車公司的生產方式是最適用于現代制造企業的一種生產組織管理方式,精益生產是通過系統結構、人員組織、運行方式和市場供求等方面的變革,使生產系統能很快適應用戶需求不斷變化,并能使生產過程中一切無用、多余的東西被精簡,最終達到包括市場供銷在內的生產的各方面最好結果的一種生產管理方式。

精益思維(Lean Thinking)和精益管理(Lean Management),源于精益生產,精益管理由最初的在生產系統的管理實踐成功,已經逐步延伸到企業的各項管理業務,也由最初的具體業務管理方法,上升為戰略管理理念。精益管理要求企業的各項活動都必須運用“精益思維”(Lean Thinking)。“精益思維”的核心就是以最小資源投入,包括人力、設備、資金、材料、時間和空間,創造出盡可能多的價值,為顧客提供新產品和及時的服務。

圖. 現代軟件工程,基礎技術工具棧已經很成熟,搭積木式敏捷開發與精益制造有著相似理念

從上述概念定義可以看出,敏捷和精益是對孿生姐妹,其關鍵詞涉及需求進化,迭代,可視化,循序漸進,可集成可運行,精益,最小資源投入等。單體應用系統建設,傳統軟件工程對敏捷開發和精益管理思想的需求并不迫切,而面對多源、異構、協作式大數據系統的架構設計、研發和項目實施來講,敏捷和精益設計理念至關重要,為什么這樣講?下圖是典型的傳統信息化技術架構與大數據系統架構的一個對比,有經驗的朋友們應該可以看出一些端倪。

圖2 傳統信息系統與大數據系統架構對比

上圖左邊部分為傳統信息化技術架構,右邊部分為常見大數據系統架構,當然其中具體的技術組件選型根據不同的需求也不一樣,這種架構不是固定的,其中每個組件至少有幾個替代品,而且可以根據需要進行擴展。從這個圖我們可以得出這樣的結論,傳統信息系統可以一人打天下,而大數據系統的核心思想卻是分布式和團結協作,一個人的力量再大,智慧再高,精力再強,也不如一群人有效整合后的力量大,而大數據系統架構就是負責多方面的整合(Hadoop,Spark等大數據基礎系統架構同理,如圖3-Hadoop系統架構示意圖),換句話說,這就像是軟件研發或生產過程中的敏捷和精益管理,由公司大領導(Master)進行分配任務,人員調配,每位員工(slave)努力完成自己負責的小目標工作,各級主管進行橫向和縱向協同,有效整合起來就是公司的大目標,可見大數據系統架構的演變已經是很接近人類社會協作的思想了。而要有效支撐大數據系統架構的分布式協作能力,敏捷和精益設計思想是很有必要的參考。

圖3 Hadoop系統架構示意圖

(2)敏捷大數據定義

那什么是敏捷大數據呢,本文暫且給出一個初步的定義(還不夠成熟):“敏捷大數據是基于數據科學的迭代性本質和敏捷研發管理思想,利用構件化、服務化和容器化等技術,對大數據系統架構和關鍵組件協作等進行精益設計,逐步實現多層次數據的融合處理和多種計算框架、模型的擴展和高效管理,快速響應大數據分析需求,快速構建大數據生產系統,快速迭代大數據分析能力,從而提升大數據系統的分析效率和大數據決策價值”。敏捷大數據的核心要素遵從SFV原則(Small,Fast,Validation, SFV):一是小、二是快、三是證,小的業務分析目標切入,快速出原型快速迭代,證明有效之后再擴張。從某種程度上講,傳統BI項目的失敗很多是沒有把握好這三個原則,而互聯網企業的大數據系統能成功,能使開源大數據技術百花齊放,是因為把握好了這三個原則。

敏捷大數據要解決如下關鍵問題:如何實現統一的、標準化的、模塊化、可配置的大數據架構,以解決不同類型的異構子系統之間難以有效整合的問題。應用功能可以使用已有的功能組件組合而成,通過服務復用降低成本,在組件之間交換的數據形式應當標準化和接口化;組件的組合只需少量編程或配置便可以完成,常用模型和工具的集成標準化,如何簡化使用,可以對非程序員提供開箱即用的數據挖掘和分析能力;大數據應用全程(采集、存儲、分析、管理)可視化操作。基于數據科學的迭代性本質和利用高效組件化工具,對大數據各功能子系統(模塊)進行組件化,模型標準化設計,并根據實際需求快速選型、快速配置、快速搭建大數據原型系統,快速迭代大數據分析結果,并順應不斷變化的需求,盡快將原型轉化成生產系統。在快速迭代、快速反饋、閉環驗證過程中,讓客戶逐步完成大數據分析的系統思維和管理思維變革,天下武功,唯快不破,快小證原則和精益設計,這是敏捷大數據應用的核心目標。

圖4 敏捷迭代開發示意圖

(3)敏捷大數據流程優化

根據敏捷大數據快、小、證SFV原則,我們對傳統的跨行業數據挖掘標準流程(Cross-industry Standard Process for Data Mining ,CRISP-DM)進行了改進,提出了基于微服務和容器(后續敏捷大數據關鍵技術章節會做詳細介紹)的敏捷大數據處理流程(Agile Big Data Processing based on Micro-services),如下圖:

圖5. CRISP-DM流程與敏捷大數據處理流程

敏捷大數據處理流程相比傳統數據挖掘流程,從兩個層面進行了擴展:首先是架構上采用基于容器的微服務技術進行支撐;其次針對傳統數據挖掘模型、系統和現實決策反饋的脫節問題,根據數據科學迭代性本質特點,對模型系統和現實決策反饋兩個過程分別進行自適應迭代升級和智能決策進化支持。通過這種擴展,使得敏捷大數據方法論與傳統數據挖掘技術,以及和新興的主流大數據框架,能在架構和流程上進行互補和融合。要實現敏捷大數據SFV原則,敏捷大數據架構的設計至關重要。敏捷大數據架構需要在組件化管理、數據融合、資源調度、服務抽象、部署運維、計算模型和標準數據集的服務化,以及敏捷大數據處理流程等多個層面,進行科學有效地設計支撐。核心目標是要實現大數據的融合處理和分析功能的服務化、標準化和流程化,基于數據融合和微服務技術,設計模塊化、可配置的大數據分析平臺,對微服務的構建和管理進行快速實現,通過各種微服務的劃分、組合、編排和動態配置,形成可復用的、可擴展的和可靈活調整的大數據分析系統,從而實現敏捷大數據目標。

4.敏捷大數據關鍵技術

大數據時代,各種新興技術和計算框架層出不窮,加之分析需求的不斷變化,如何使大數據架構能隨時調整以適應業務需求,跟上技術更新的步伐,是大數據應用要解決的關鍵問題,這也是為什么提出敏捷大數據架構的本質原因。面對大型企業動輒數十個上百個信息系統,如何通過跨物理、虛擬、公共和私有云環境實現一致性、互操作性和可移植性,對IT基礎設施來講是極大的挑戰。所以微服務和容器技術應運而生,微服務實現系統模塊的組件化和獨立自治運行,容器能實現輕量級的虛擬化,而且完全使用沙箱機制,相互之間沒有任何接口。微服務、容器與云計算技術的天然結合,及其快速的研發、部署、維護優勢,使得基于微服務和容器的敏捷大數據應用潛力巨大。

(1)微服務技術

服務的本質就是行為的抽象,面向對象的方法是從對象實體這個維度對世界進行描述,而面向服務(SOA)則是從行為模式這個維度對世界進行描述,本質上是兩種不同維度的描述方法。

圖6. 軟件服務化發展歷程

由于數據科學的迭代性本質,大數據分析即服務成為應用熱點,而微服務與容器技術能有效支持本文提出的敏捷大數據SFV核心原則。近年來,微服務(設計思想發源于康威定律,如圖7)成為互聯網和大數據企業的研究和設計熱點,諸如谷歌、亞馬遜、Facebook、百度、京東、攜程等公司都在采用微服務理論和技術進行產品的設計、研發和部署。Netflix公司的Adrian Cockcroft將微服務稱為“細化SOA(Service Oriented Architecture, SOA)”,并認為這是一套具備開創意義的新型架構。敏捷之父Martin Fowler在他的《Micro services》一文中給出了微服務的定義,概括來說,微服務設計思想是一種使用若干小服務開發龐大應用的方法,每個服務運行在自己的進程中,通過輕量級的通信機制進行信息交互,每個微服務的粒度基于業務能力大小進行構建,并可以由不同的程序語言實現,構建的服務鏈能夠通過容器等技術進行自動化部署

圖7. 康威定律(Conway’s Law),系統的結構受限于設計這個系統的組織的溝通結構。由于系統的結構可能會隨著設計的深入而變化,所以必須保持設計的精簡與靈活。

從上述微服務定義可以看到,去中心化、原子化、獨立自治、快速組合、自動部署等特性是微服務技術的核心要素,中心思想是將一個單體應用構架打散,把原來龐大的應用層功能切分成粒度較小的微服務模塊,數據庫也按微服務功能單元進行相應的拆分進行支持(如圖8所示),采用基于云的容器技術單獨運行這些服務模塊,通過網絡和輕量級通信機制將這些分解的服務模塊協同連接起來,形成微服務簇和網絡,完成大型復雜任務,這種通過將復雜系統切分成若干小的微服務模塊的方式,其分布式、低耦合架構能極大地適應大數據分布式處理特性。

圖8 傳統單體應用架構與微服務架構的區別

(2)容器技術

微服務技術采用類似搭積木的構建方法,使得服務之間不相互影響,而且同一個系統的微服務可以采用不同的開發語言和數據庫技術。但是面對大型企業動輒數十、上百個信息系統,如何通過跨物理、虛擬、公共和私有云環境實現一致性、互操作性和可移植性,對IT基礎設施來講是極大的挑戰。所以容器技術應運而生,容器最早由Docker公司提出并應用于自家的PaaS云服務平臺,近年來獲得廣泛認可,很多大型企業開始將單體應用系統微服務化,并部署在容器中。容器基于操作系統之上能實現相比傳統虛擬化技術(如VMware)更輕量級的虛擬化,而且完全使用沙箱機制,相互之間沒有接口。Hadoop的子系統Kubernetes已經能支持基于云計算和Docker容器技術的微服務開發和部署,容器技術與云計算的天然結合及其快速的研發、部署、維護優勢,對于微服務和敏捷大數據架構的設計和實現具有重要支撐作用。

圖9 Docker容器架構圖

(3)數據融合技術

由于大數據呈現的關聯性、動態性、多源異構性等特點,導致大數據的存儲、挖掘、分析和理解面臨極大挑戰。如何對多種形態格式的數據進行統一標準化融合處理,是敏捷大數據要解決的關鍵問題。與一般的大數據融合目標不同,本文主要從構建標準數據集的角度進行大數據多粒度融合,通過構建統一數據單元(unified data units,UDU)來支持多模態特征融合和多種類型、結構數據集的封裝融合。將多源異構數據進行抽取、融合、集成為支持不同計算模型處理的UDU數據集,是多粒度信息融合技術的核心目標。統一數據單元是獨立的和靈活的實體數據集,可隨數據源和分析需求的變化進行快速重組、調整和更新。通過信息融合形成的UDU標準數據集,是進行敏捷大數據處理的基礎。

針對機器學習各類模型的數據適配特點,我們提出了一種標準數據集定義:統一數據單元(UDU)對大數據多個層次和粒度的信息進行融合處理。特別是對多模態數據,通過統一數據單元設計方法能實現數據的存儲優化和機器學習模型數據輸入的標準化,以統一數據單元作為敏捷大數據系統的基本數據組織和處理單元,能提高大數據分析模型和算法的適應性和敏捷性,提升大數據處理能力。多粒度信息融合設計如下圖所示。

圖10 大數據多粒度信息融合設計

上圖的UDU統一數據單元至少可以支持三個層面的大數據融合,一是特征級融合,支持跨模態特征(如時間+空間特征)的大數據計算模型處理;二是數據級融合,支持多維數據立方體(Data Cube),數據集市(星型,雪花型模式)等數據模式和數據結構的融合;三是模型級融合,從不同模型任務(如分類、聚類、預測、關聯等模型)角度支持相應的數據單元處理。設計和構造大數據統一數據單元,需進行如下三個環節的處理。

1)特征抽取:對結構化數據、半結構化數據和非結構化數據進行數據集成和特征抽取,抽取出數據中的各類不同特征,包括時間特征、空間特征或其他全局特征等,實現對數據相關的位置屬性、時間空間關聯屬性和其他觀測屬性等的特征描述。2)融合封裝:抽取出來的各類數據特征,或者初步預處理后的數據,根據不同的計算模型數據處理特點和要求,封裝成結構和格式統一的數據處理單元,形成標準分析數據集,為上層的挖掘計算服務提供快速數據適配。可以通過元數據定義方法和XML/JSON等技術,實現不同種類的統一數據單元定義,對每類統一數據單元進行基本信息和各類屬性定義和描述,包括標識ID、基本屬性、語義屬性、結構屬性等內容。3)服務接口:封裝好的統一數據單元數據集,針對不同的挖掘計算服務模型實現快速數據適配,設計統一的數據單元調用接口,通過接口定義和參數設置對封裝數據單元進行解析,并對數據集各類屬性特征、結構信息等進行提取。

5.敏捷大數據系統架構

根據上述敏捷大數據關鍵技術的分析,如何設計實現有效的敏捷大數據系統架構是敏捷大數據應用的重點內容。下面以交通大數據處理為例,對其敏捷處理架構進行了初步設計。由于交通大數據的復雜性和分析目標的多樣性,對傳統的數據挖掘分析模式和大數據技術架構提出了挑戰。例如,針對海量交通歷史靜態數據,需采用離線批處理技術,而動態實時流交通數據則需要流式計算框架進行處理。另外,對文本、圖像、視頻、傳感器等多模態數據需采用不同的機器學習模型進行處理,如何進行跨模態的融合計算分析也是應用難點。針對交通大數據分析需求的變更和擴展,大數據系統如何進行快速響應和功能、模型的擴充和調整,是面向交通的敏捷大數據架構設計要解決的關鍵問題。

換句話說,要能根據不同的交通大數據分析需求設計靈活的處理架構進行支持,大數據架構要能從采集、存儲、計算、應用多個層面,滿足不同分析需求的變更或擴張。基于敏捷大數據方法論及其關鍵技術的分析和研究,從數據采集集成、大規模數據存儲和數據融合、多模式/多模態計算微服務、數據應用4個層面進行了敏捷大數據架構設計。通過基于多粒度大數據集成融合構建統一數據單元,形成標準數據集,通過基于微服務的計算模型抽象和匯聚層處理,實現交通大數據挖掘的敏捷化、服務化。采用標準接口和插件開發的方式,對大數據主流處理框架(如Hadoop、Spark、Storm等)能進行統一配置管理,基于即插即用的構件化和服務化設計,各層子系統和組件可根據分析目標進行快速選型、靈活配置,構建原型和迭代升級(如下圖中根據兩條虛線不同的設計路徑,可以快速配置實現歷史數據庫數據的批處理分析,或公網采集數據的流處理分析),敏捷大數據總體架構設計如下圖所示。

圖11 面向交通的敏捷大數據總體架構設計

1)數據采集層:分3個層面的采集技術進行支持,一是傳統業務系統數據庫和半結構化、結構化數據的采集和集成,如采用Sqoop技術進行關系數據庫和Hadoop系統之間的數據抽取和交換;二是交通實時流數據的采集,包括實時傳感器數據、定位軌跡數據和其他實時流數據;三是交通公共數據的采集,包括公網的數據爬取、開放平臺的數據接口、行業公共數據庫的數據交換等。對采集到的數據需進行提取、轉換和加載(extract-transform-load,ETL)處理,包括數據抽取、轉換、清洗和隱私脫敏等預處理工作,預處理集成后的數據進入交通大數據云存儲中心。

2)數據存儲層:交通領域數據規模巨大,數據存儲層需設計基于云計算的分布式云存儲系統,以支持海量數據的存儲擴展。提供基于云的列式存儲、NoSQL存儲或數據倉庫存儲能力;根據業務需求和快速配置,可切換相應的分布式存儲模式,還可根據需要對傳統BI系統的數據倉庫和數據集市進行集成。利用Hadoop集群提供PB級存儲能力擴展,同時Hadoop YARN 和Spark Mesos等集群資源管理框架可支持多種存儲模式和計算模式(主要對存儲和計算兩個層面資源進行管理,如圖中雙向箭頭所示)的云資源調度。在此基礎上,對各類存儲數據進行多粒度信息融合,構建統一數據處理單元,為計算服務層提供標準化的分析數據集。

3)數據計算層:針對交通大數據多源、異構、海量等特征,傳統的計算模型難以直接處理。數據計算層需滿足主流大數據處理框架的各種計算模型與方法實現,如基于云計算并行框架,實現基于Hadoop批處理、Storm流處理、Spark內存處理的高效數據挖掘與機器學習。數據計算層采用基于統一數據處理單元和計算模式、模型微服務化的大數據分析框架,通過構建多種微服務簇網絡(主要分計算微服務、數據微服務和流程微服務,涵蓋存儲和計算兩個層面,如圖中雙向箭頭所示),為應用層提供支持MapReduce、Storm、Spark等多種計算模式下的多種數據挖掘模型與方法(如分類、聚類、序列等);根據大數據分析需求和數據特征,可基于組件配置和服務治理技術進行各類服務的快速切換和靈活管理。

4)數據應用層:數據應用層首先要滿足智慧交通各類大數據分析需求,包括基本的可視化與查詢、展示、探索等,分析結果能結合知識庫應用于決策支持。另外,大數據系統本身管理方面,針對構件化和微服務設計,需對相關中間件進行設計,實現服務治理、組件配置、安全、接口等功能,以支撐存儲層和計算層各類微服務的敏捷管理。

敏捷大數據架構的關鍵內容除了數據融合UDU層面之外,另外一個關鍵環節就是對多種計算模式框架、多種計算模型的微服務化設計,包括計算框架、模型和算法的微服務化、數據獲取調用的微服化和分析流程的微服務化等層面。其核心是計算微服務,如MapReduce批處理服務、Storm流處理服務、Spark內存處理服務,每種大的計算框架微服務下包含具體挖掘模型等小粒度的計算微服務支持(如分類模型服務、序列模型服務)等。由于微服務詳細技術涉及面比較廣,包括微服務的注冊、定位、發現和搜索(基于分布式一致算法Paxos和Zookeeper框架等),微服務的輕量級通信機制如REST(Representational State Transfer)、RPC(Remote Procedure Call Protocol)、IPC(Inter-Process Communication)等,微服務的容錯處理(熔斷、限流、負載均衡等),微服務容器化和服務的測試、部署等方面。由于篇幅原因,各方面的技術細節這里不做贅述,大家可以參考專業數據進行了解。在敏捷大數據架構和數據融合統一數據單元基礎上,進行了大數據分析層的微服務設計,如下圖。

圖12? 面向交通的大數據分析微服務化設計

大數據分析微服務化的核心理念是一個服務只專注做好一類或一個分析,服務的粒度和分析功能大小、邊界要匹配,服務方(計算微服務)和消費方(基于微服務的分析功能)要能解耦,即調整或升級一個微服務不能影響其他微服務。大數據分析微服務設計主要內容包括如下幾個方面。

1)大數據分析業務抽象和微服務劃分:按多模式計算框架分,有MapReduce批處理框架、Storm流式處理框架、Spark內存處理框架、圖計算框架等;按挖掘模型分,有分類、聚類、序列、多模態、多任務等不同種類計算模型。針對交通大數據各類分析需求和數據處理特點,進行大數據業務分析和抽象建模,并選擇相應的計算模型和計算框架進行支撐,再決定需要哪些微服務,并實現微服務的劃分和組合,設定好微服務網絡的總體設計目標,并通過統一的微服務接口(Microservices API Gateway)進行調用。

2)微服務簇設計及契約接口定義:針對大數據處理特點,服務層中的微服務分3類進行規劃設計,數據微服務簇負責從UDU標準數據集中進行數據獲取、數據同步和更新等操作;計算微服務簇是敏捷大數據處理的核心,按多模式計算框架和多類計算模型兩個維度進行挖掘分析服務的統籌設計;流程微服務簇負責數據微服務、計算微服務的協同處理,同時對系統組件的配置管理和調度進行支持。各類微服務通過REST、RPC等輕量級通信機制和MessageBroker等消息服務進行交互和聯系[14],構建微服務簇網絡,并通過服務路由進行統一管理和調度。

3)微服務治理和容器部署:由各類微服務簇連接成的微服務網絡,其高效協調工作離不開微服務治理技術和容器管理技術。通過服務路由和服務治理負責各種大小微服務的注冊、搜索、發現、通信和統一配置,最后基于云計算和容器技術進行微服務的自動部署和動態管理。

6.敏捷大數據應用評述

本文提出的敏捷大數據架構在一定程度上實現了大數據融合處理和挖掘計算的服務化、標準化和流程化。基于統一數據單元和計算、流程微服務設計思想,對微服務的構建和管理進行快速實現,通過各種微服務的劃分、組合、編排和動態配置,能構建模塊化、可配置、可復用、可擴展的敏捷大數據分析系統。相比傳統大數據處理架構,敏捷大數據架構在如下幾個方面具有明顯優勢(見表1)。

表1 ?敏捷大數據架構與傳統大數據架構比較分析

從上述各項特性的比較分析可以看到,敏捷大數據架構除了支持大規模數據增長之外,更重要的是能適應大數據分析業務的擴展和變化,通過容器和服務化技術,具備高容錯性和穩定性,能支持大數據分析的失敗處理和自動恢復等,能在海量數據條件下快速完成多種計算模型和分析處理,能基于數據融合單元和計算服務化技術,支持多模態計算和多模式計算任務處理,能在有限的成本條件下提高大數據分析效率

當然要實現一套有效的敏捷大數據架構,不同的業務需求或采用不同的技術路線,所做的工作可能有較大差異,所以本文的標題定義為方法論。條條大路通羅馬,技術只是工具,關鍵還是方法論和指導思想。另外在架構詳細設計和實現方面,還有幾個難點需要突破,由于大數據計算框架眾多、每種框架下所支持的分析模型也很多、可視化庫更多…這些計算框架的技術架構和開發語言、接口定義標準可能都不一樣,敏捷大數據架構如何通過構建化、插件化等技術對上述工具集進行標準化和流程化的快速集成,這是敏捷實現要解決的主要問題。

我們結合正在規劃建設的綜合交通大數據分析云服務平臺,以本文提出的敏捷大數據方法論及架構設計,作為關鍵技術選型和技術路線實現的指導思想,并進行了初步應用。綜合交通大數據分析云服務平臺的主要目標是通過大數據技術解決交通資源的供需智能匹配和瓶頸預測分析問題。應用多粒度信息融合和多模態計算微服務技術,對交通大數據進行集成、融合和挖掘;采用定量分析和定性分析相結合的機器學習進行供求配置預測,為智能出行推薦、交通樞紐瓶頸分析、多模接駁換乘、實時交通管控等智慧交通關鍵環節提供大數據分析和決策支持。由于綜合交通大數據多源異構、時空關聯和動態處理等特點,傳統大數據架構面臨擴展性、兼容性、穩定性諸多問題。基于敏捷大數據方法論,設計了面向智慧交通的具有構件化、云服務化、容器化特性的敏捷大數據架構,為綜合交通大數據分析云服務平臺的研發提供了切實參考和應用指導,并在一定程度上提高了開發效率和控制了技術風險。

7.總結與展望

探討了大數據應用落地的主要瓶頸和面臨的挑戰。針對大數據特點及其分析瓶頸問題,分析了傳統信息化技術架構與大數據系統架構的區別,基于敏捷、精益和迭代設計思想,首次提出了敏捷大數據方法論,并對其概念定義、核心要素、流程優化和關鍵技術等內容進行了論述,通過分析敏捷大數據的設計緣由,基于傳統數據挖掘流程改進,設計了面向微服務的敏捷大數據處理流程,并對其關鍵支撐技術進行了初步研究和探索。構建了基于微服務和多粒度信息融合技術的敏捷大數據架構,并結合實際案例對交通大數據微服務化、交通大數據融合等關鍵技術環節進行了詳細設計和論述。

敏捷大數據的提出是基于數據科學迭代性本質,為各行業大數據應用環境下的高效、靈活大數據系統建設和機器學習、知識發現提供了新方法、新思路和新的技術架構,希望能通過敏捷設計最大程度降低成本、控制風險,從而發揮出大數據的應用價值,相比傳統大數據處理方法和技術架構,本方法論的重要意義和參考價值不言而喻。當然,敏捷大數據作為一個新的涵蓋多種前沿信息技術的跨領域應用研究問題,還需要在設計方法、關鍵技術和系統架構等方面進行深入探索和應用實踐。

本文轉載,只供參考。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容