南京北大青鳥告訴你大數據方法論

前段時間有報道稱,有學者質疑“大數據”理論,也有硅谷公司負責人質疑大數據應用的效果。結合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組織成為主題數據,從主題數據中提煉信息特徵,從特徵挖掘中發現規律和有價值的知識,就規律和預測等知識信息形成決策支持並進行應用和追蹤評估,最後反饋回大數據系統進行反覆驗證、優化並持續迭代的閉環信息處理過程。

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

南京北大青鳥告訴你大數據方法論

3.敏捷大數據方法論

  (1)何為敏捷?

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

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

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

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

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

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

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

  (2)敏捷大數據定義

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

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

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

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

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

4.敏捷大數據關鍵技術

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

  (1)微服務技術

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

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

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

  (2)容器技術

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

  (3)數據融合技術

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

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


分享到:


相關文章: