前言: 這篇文章主要對兩篇論文進行綜述,一篇是美國一些知名的數據管理領域的專家學者從專業的研究角度出發聯合發布的《大數據白皮書》,另一篇是孟曉峰和慈祥的《大數據管理:概念、技術與挑戰》[1]。前者介紹了大數據的產生、分析了大數據的處理流程,並提出了大數據所面臨的若干挑戰,而后者介紹了大數據的基本概念,闡述其同傳統數據庫的區別,對大數據處理框架進行了詳細解析,並展開介紹了大數據時代不可或缺的雲計算技術和工具。同樣,在論文的最后給出了大數據時代面臨的新挑戰。由於后者是在前者的基礎上完成的,與前者有很多重復的內容,同時又對雲計算等方面做出了更進一步的闡述,因此,本篇文章以《大數據白皮書》的結構為主線,將孟的論文中涉及到的其他內容(如大數據的基本概念、雲計算等內容)穿插在合適的位置,進行統一綜述。
摘要:數據驅動型決策的前景正在獲得越來越多人的認可,人們對“大數據”這個概念的熱情也越來越高。大數據的發展前景是毋庸置疑的。然而,目前其發展潛力與實現之間仍然存在着巨大的差距。本文介紹了大數據處理的不同流程、處理框架、關鍵技術和處理工具,最終引出了大數據分析過程中將面臨的挑戰並給出解決相應問題的部分思路。
Abstract: The prospect of data-driven decision-making is gaining more and more recognition and the passion for the concept of big data is growing rapidly. Big data development prospects are beyond doubt. However, recently there is still a huge gap between its development potential and its realization. This article introduces the different processes of big data pipelines, processing frameworks, key technologies and processing tools, and finally introduces the challenges that big data analysis will face and gives some ideas to solve the corresponding problems.
關鍵詞:大數據;數據分析;雲計算;處理流程
key words: big data; data analysis; cloud computing; processing pipelines
1.1 背景
現如今,我們正生活在數據的洶涌浪濤之中,數據正在以前所未有的規模增長着。 在以前,決策的產生或基於猜測,或精心構建的現實模型,但現在人們完全可以依靠數據本身做出合理的決策。這樣的大數據分析推動了我們現代社會的幾乎所有方面,包括移動服務,零售,制造業,金融服務,生命科學和物理科學。
1.2 大數據的4V定義
雖然大數據的潛在價值巨大且真實,而且已經取得了一些初步的成功,但若要充分發揮這種潛力,仍然有許多技術挑戰需要解決。數據的龐大規模是最明顯,最主要的挑戰。但是,這並不是唯一的挑戰。行業分析公司指出,大數據面臨的挑戰不僅體現在數量(Volume)方面,還在於多樣性(Variety)和速度(Velocity)[2],因此我們不應該只關注其中的第一個(Volume)。其中,多樣性(Variety)通常意味着數據類型、表示方法和語義解釋的異構性。速度(Velocity)是指數據到達的和它必須被處理速度。雖然這三個要素很重要,但卻沒有包含隱私和可用性等其他要求。
除此3V定義之外,孟[1]的論文中還添加了另外一個V,組成為4V定義。但人們對第4個V說法不一,國際數據公司認為大數據應該有價值性(Value),而IBM[3]公司認為 數據必然具有真實性(Veracity)。不必過度地拘於具體的定義,在把握3V定義的基礎上,適當地考慮4V即可。
1.3 傳統數據庫與大數據的區別
a. 數據規模:傳統數據庫處理對象通常以MB為基本單位,而大數據常常以GB甚至TB,PB為基本處理單位
b. 數據類型:傳統數據庫僅有一種或幾種,且以結構化數據為主。大數據中的數據類型種類繁多,數以千計,不僅包含結構化,還包括半結構化和非結構化數據
c. 模式和數據的關系:傳統數據庫先有模式再有數據。大數據的模式隨着數據量的增長而不斷演變。
d. 處理對象:傳統數據庫的數據僅作為處理對象而存在,而大數據的數據作為資源來輔助解決其他領域的問題。
e. 處理工具:大數據的數據不僅僅只是工程處理的對象,傳統的3種范式(實驗、理論和計算)無法很好的發揮作用,需要探索第4種范式。4中范式的比較如表1所示:
表1 典型大數據應用的比較
1.4 大數據的產生
人類社會的數據產生方式大致經歷3個階段,其中第三個階段(感知式系統階段)導致了大數據的產生。這3個階段分別是:
運營式系統階段:數據庫出現在這個階段,數據伴隨着一定的運營活動產生並記錄在數據庫中。
用戶原創內容階段:Web 2.0時代,數據呈爆炸式增長。
感知式系統階段:感知式系統被廣泛使用。傳感器被大量使用,數據的產生方式是自動的。
總體而言,數據的產生經歷了被動、主動到自動的3個階段。
2. 大數據的處理流程
圖1 大數據處理流程
大數據分析涉及多個不同的階段,如圖1所示,每個階段都會帶來挑戰。不幸的是,許多人只關注分析/建模階段(雖然這個階段至關重要,但是如果沒有數據分析管道的其他階段,這個階段便無用武之地。即使是在分析階段,我們對在多個用戶程序並發運行的多租戶集群的情況下的復雜性的了解也很少。許多重大挑戰超出了分析階段。例如,大數據必須在一定情境下進行管理,這可能是嘈雜的,異構的,且不包括前期模型。這樣做會增加追蹤出處和處理不確定性和錯誤的需要。這些對於成功至關重要,卻很少像大數據一樣提及。同樣,數據分析階段的問題通常也不會全部提前擺出來。我們可能需要根據數據找出好的問題。這樣做需要更智能的系統,並且更好地支持用戶與數據分析處理流程的交互。事實上,我們現在的一個主要的瓶頸就是能夠對這些問題提問並分析的人的數量。通過支持對數據的許多層次的參與(並不都需要深入的數據庫專業知識),我們可以通過大幅增加這個數字。解決這類問題的方案不是像往常那樣逐漸改進業務,這個工業可以自己做。相反,他們要求我們從根本上重新思考我們如何處理數據分析。
2.1 數據獲取與記錄
大數據不是從天而降的,它產生於一些數據生成源。我們周圍的世界,從老年人的心率,我們呼吸的空氣中的毒素,到規划的SKA望遠鏡,這些每天會產生高達100萬TB的原始數據。 同樣,科學實驗和模擬可以很容易地產生PB級的數據。
這些數據大部分是沒有意義的,數量級可以被過濾和壓縮。 一方面的挑戰是如何定義這些過濾器,以避免丟棄有用的信息。另一方面挑戰是自動生成正確的元數據來描述哪些數據被記錄以及這些數據是如何被記錄和測量的。
2.2 信息提取和清潔
通常情況下,不能直接對收集好的信息進行分析。相反,我們需要一個信息提取過程,從底層資源中提取所需信息,並通過一種適合分析的結構化形式來表示。正確而完全地做到這點是一個持續的技術挑戰,而這樣的提取通常是高度依賴於應用的。
2.3 數據整合,聚合和表示
鑒於數據洪流的異構性,僅記錄它並將其放入存儲庫是不夠的。例如,加入我們有一系列科學實驗的數據。如果我們在一個數據庫中只有一堆數據集,那么任何人都不可能找到任何這些數據,更不用說重復使用這些數據了。如果有足夠的元數據,仍然有一些希望,但即便如此,由於實驗細節和數據記錄結構的差異,挑戰依然存在。
2.4 查詢處理,數據建模和分析
對大數據進行查詢和挖掘的方法與傳統的小樣本統計分析有着根本的區別。 大數據往往是有噪聲,動態,異構,相互關聯且不可信的。盡管如此,即使是噪聲大的大數據也可能比小樣本更有價值。
挖掘需要集成的,清理的,可信賴的,高效可訪問的數據,聲明式查詢和挖掘接口,可擴展挖掘算法和大數據計算環境。同時,數據挖掘本身也可以用來幫助提高數據的質量和可信度,理解其語義,並提供智能查詢功能。下一代的大數據還支持實時處理的交互式數據分析。
目前的大數據分析存在的一個問題是,提供SQL查詢功能的數據庫系統與執行各種形式的非SQL處理的分析包(如數據挖掘和統計分析)之間的協調。如今的分析師需要從數據庫中導出數據,然后執行非SQL過程,再將數據帶回,這個過程是麻煩而枯燥的。聲明性查詢語言與這些包的功能之間的緊密耦合將有利於分析的表達性和性能。
2.5 解釋
如果用戶無法理解結果,那么具有分析大數據的能力是沒有意義的。提供分析結果的決策者必須解釋這些結果。僅僅提供結果是不夠的。相反,必須提供補充信息,說明每個結果是基於哪些輸入、如何得出的。這種補充信息被稱為(結果)數據的來源。通過研究如何最好地捕獲,存儲和查詢出處,結合捕獲足夠的元數據的技術,我們可以創建一個基礎結構,使用戶能解釋獲得的分析結果,並用不同的假設,參數,或數據集重復分析過程。
3. 大數據處理框架
大數據處理模式主要可以分為兩種:流處理模式和批處理模式。
3.1 流處理
流處理處理模式將數據視為流,當數據到來時就立刻處理並返回所需結果。流處理的過程基本在內存中完成,其處理方式更多依賴於在內存中設計巧妙的概要數據結構,主要瓶頸是內存容量。以PCM(相變存儲器)為代表的存儲級內存設備的出現或許可以打破這個瓶頸。比較有代表性的開源系統有:Twitter的Storm、Yahoo的S4以及Linkedin的Kafka等。
圖2 基本的數據流模型
3.2 批處理
以Google的MapReduce為代表,完整的MapReduce過程如圖3所示:
圖3 MapReduce基本原理
批處理的核心設計思想在於:1. 分而治之 2. 將計算推到數據,而非相反。
在實際場景下,常常不是簡單使用某一種,二是將二者結合起來。很多互聯網公司將業務划分為在線、近線和離線,可以基於這種划分應用不同的處理模式。
4. 大數據關鍵技術
大數據需要多種技術的協同。文件系統提供最底層的存儲能力的支持。數據庫提供數據管理服務。
4.1 雲計算
雲計算涉及到的技術很多,圖4是Google雲計算技術的介紹,從中可以對雲計算有更清晰的認識。
圖4 google技術演化圖
4.1.1 文件系統
基於“系統組件失敗是一種常態而非異常”的思想,Google研發了GFS。這是一個構建在大量廉價服務器上的可擴展分布式文件系統,采用主從結構,主要針對文件較大,且讀遠大於寫的應用場景。后來在Google對GFS級你醒了重新設計,解決了單點故障、海量小文件等問題。許多其他企業的文件系統都是借鑒了GFS。
4.1.2 數據庫系統
由於數據的數量(大)、多樣性、設計理念的沖突、數據庫事務處理苛刻的ACID要求等原因,大數據不可能直接采用關系型數據庫。為了應對這個挑戰,產生了NoSQL數據庫。NoSQL數據庫具有如下特點:模式自由、支持簡易備份、簡單的應用程序接口、最終一致性、支持海量數據。其與關系型數據看對比如下圖所示:
表2 NoSQL數據庫和關系數據庫對比
4.1.3 索引與查詢技術
NoSQL數據庫針對逐漸的查詢效率一般比較高,因此NoSQL數據庫上的查詢優化研究主要有兩個思路:
- 采用MapReduce秉性技術優化多值查詢
- 采用索引技術優化多值查詢
總體而言,在NoSQL數據庫上的查詢優化技術都並不成熟,有很多關鍵性問題亟待解決。
4.1.4 數據分析技術
實時數據處理是大數據分析的一個核心需求,主要有3個思路:
- 采用流處理模式
- 采用批處理模式
- 二者的融合:主要思路是利用MapReduce模型實現流處理。
4.2 大數據處理工具
Hadoop是當前最為流行的大數據處理平台,它已經成為大數據處理工具事實上的標准。它是包括文件系統(HDFS),數據庫(HBase、Cassandra)、數據處理(MapReduce)等功能模塊的完整生態系統。下圖歸納了現今主流的處理平台和工具。
表3 采用索引加速多只查詢的方案對比
5. 大數據分析的挑戰
在描述了大數據分析流程中的多個階段之后,我們現在轉向一些共同的挑戰,這些挑戰存在於以上階段中的許多階段(有時是全部階段)。
5.1 異構性與不完整性
當人類消費信息時,大量的異構性是可以容忍的。事實上,自然語言的細微和豐富可以提供有價值的深度。然而,機器分析算法期望同構數據,並且不能理解細微差別。 因此,數據分析時必須在數據分析之前(或在分析的第一步)仔細地將數據結構化。即使在數據清理和糾錯之后,數據中的一些不完整性和一些錯誤也可能保留下來。數據分析期間必須管理這些不完整性和這些錯誤,這對我們而言是一項挑戰。
5.2 規模
在過去幾十年里,管理巨大和迅速增長的數據量一直是一個具有挑戰性的問題。 過去,這一挑戰已經通過更快的處理器、遵循摩爾定律得到緩解。但現在正在發生一個根本的轉變:數據量增長得比計算資源更快,而CPU速度是沒有變化。
5.3 時效性
數據量大的另一面是速度慢。要處理的數據集越大,分析所需的時間就越長。 有效處理大數據量的系統也更可能能夠更快地處理給定大小的數據集。然而,當大數據所說的速度(Velocity)不僅僅是這個速度。 相反,我們還有獲得速度的挑戰和時效性挑戰。
有很多情況下需要立即得到分析結果。當數據量迅速增長,並且查詢響應時間有限時,設計這樣的結構變得尤其具有挑戰性。
5.4 隱私
數據的隱私是另一個巨大的問題。 公眾對個人資料的不當使用,尤其是連接多個來源的資料,恐怕是非常恐懼的。管理隱私既是一個技術問題,也是一個社會問題,必須從兩個方面共同解決,才能實現大數據的承諾。
5.5 人的合作
理想情況下,大數據分析不全部是計算,而是將人的角色放在循環當中。在當今這個復雜的世界里,常常需要來自不同領域的多位專家真正理解正在發生的事情。大數據分析系統必須支持來自多個人類專家的輸入,並共享對結果的探索。這些專家可能在空間和時間上是分散,因為將整個團隊集中在一個房間內太昂貴了,一種流行的新解決方法是通過眾包。
5.6 能耗問題
服務器電量的開銷是巨大的,而其中只有6%~12%是用於相應用戶查詢的,絕大多部分的電量用於確保服務器處於閑置狀態。可以通過采用新型低功耗硬件和引入可再生能源來應對能耗問題。
5.7 與硬件的協同
硬件的異構性會不可避免給集群整體性能帶來“木桶效應”,解決方案是將不同計算強度的任務智能地分配給計算能力不同的服務器。另外,新硬件的給大數據帶來了變革。可以通過構建HDD和SSD的混合存儲系統來解決大數據處理問題。然而內存的發展一直沒有出現革命性的變化,隨着PCM為代表的SCM的出現,未來的內存很可能會兼具內存和硬盤的雙重功能,給大數據處理帶來根本性的變革。
5.8 大數據管理易用性問題
解決這個問題,需要從以下3個方面下手:可視化原則、匹配原則和反饋原則。
5.9 性能的測試基准
構建大數據測試基准面臨的主要挑戰有:系統復雜性高、用戶案例的多樣性和數據規模龐大、系統的快速演變、重新構建還是復用現有的測試基准。
6. 系統架構
如今的公司已經在使用商業智能,並重視商業智能的價值。業務數據分析的目的有很多:公司可以執行系統日志分析和社交媒體分析,以進行風險評估,客戶保留,品牌管理等等。通常情況下,即使每個系統都包含信息提取,數據清理,關系型處理(聯合,分組,聚合),統計和預測建模以及適當的探索和可視化工具。
7. 總結
我們已經進入了一個大數據時代。通過更好地分析大量可用的數據可以提高了企業的盈利能力和成功率。本文詳細分析了大數據管理的關鍵技術,然而,在充分實現數據價值之前,必須解決本文中描述的許多技術挑戰。在從數據采集到結果解釋的各個階段中,挑戰不僅包括顯而易見的規模問題,而且還包括異構性,缺乏結構,錯誤處理,隱私,時效性,來源、與硬件的協同、能耗問題、管理易用性等等。這些挑戰將需要變革性的解決方案。
參考文獻:
[1]孟小峰,慈祥.大數據管理:概念、技術與挑戰[J].計算機研究與發展,2013,50(01):146-169.
[2] 大數據白皮書
[3] What is Big Data Analytics? What is Big Data Analytics? https://www.ibm.com/analytics/hadoop/big-data-analytics