大數據技術創新呈現“原創-開源-產品化”的階梯格局
(一) 大數據對傳統數據處理技術體系提出挑戰
大數據來源于互聯網、企業系統和物聯網等信息系統,經過大數據處理系統的分析挖掘,產生新的知識用以支撐決策或業務的自動智能化運轉。從數據在信息系統中的生命周期看,大數據從數據源經過分析挖掘到最終獲得價值一般需要經過 5 個主要環節,包括數據準備、數據存儲與管理、計算處理、數據分析和知識展現,技術體系如圖 1所示。每個環節都面臨不同程度的技術上的挑戰。
數據準備環節:在進行存儲和處理之前,需要對數據進行清洗、整理,傳統數據處理體系中稱為 ETL ( Extracting ,Transforming,Loading)過程。與以往數據分析相比,大數據的來源多種多樣,包括企業內部數據庫、互聯網數據和物聯網數據,不僅數量龐大、格式不一,質量也良莠不齊。這就要求數據準備環節一方面要規范格式,便于后續存儲管理,另一方面要在盡可能保留原有語義的情況下去粗取精、消除噪聲。
數據存儲與管理環節:當前全球數據量正以每年超過 50%的速度增長,存儲技術的成本和性能面臨非常大的壓力。大數據存儲系統不僅需要以極低的成本存儲海量數據,還要適應多樣化的非結構化數據管理需求,具備數據格式上的可擴展性。
計算處理環節:需要根據處理的數據類型和分析目標,采用適當的算法模型,快速處理數據。海量數據處理要消耗大量的計算資源,對于傳統單機或并行計算技術來說,速度、可擴展性和成本上都難以適應大數據計算分析的新需求。分而治之的分布式計算成為大數據的主流計算架構,但在一些特定場景下的實時性還需要大幅提升。
數據分析環節:數據分析環節需要從紛繁復雜的數據中發現規律提取新的知識,是大數據價值挖掘的關鍵。傳統數據挖掘對象多是結構化、單一對象的小數據集,挖掘更側重根據先驗知識預先人工建立模型,然后依據既定模型進行分析。對于非結構化、多源異構的大數據集的分析,往往缺乏先驗知識,很難建立顯式的數學模型,這就需要發展更加智能的數據挖掘技術。
知識展現環節:在大數據服務于決策支撐場景下,以直觀的方式將分析結果呈現給用戶,是大數據分析的重要環節。如何讓復雜的分析結果易于理解是主要挑戰。在嵌入多業務中的閉環大數據應用中,一般是由機器根據算法直接應用分析結果而無需人工干預,這種場景下知識展現環節則不是必需的。
總的來看,大數據對數據準備環節和知識展現環節來說只是量的變化,并不需要根本性的變革。但大數據對數據分析、計算和存儲三個環節影響較大,需要對技術架構和算法進行重構,是當前和未來一段時間大數據技術創新的焦點。下面簡要分析上述 3 個環節面臨的挑戰及發展趨勢。
(二) 大數據存儲、計算和分析技術是關鍵
1.大數據存儲管理技術
數據的海量化和快增長特征是大數據對存儲技術提出的首要挑戰。這要求底層硬件架構和文件系統在性價比上要大大高于傳統技術,并能夠彈性擴展存儲容量。但以往網絡附著存儲系統(NAS)和存儲區域網絡(SAN)等體系,存儲和計算的物理設備分離,它們之間要通過網絡接口連接,這導致在進行數據密集型計算(Data Intensive Computing)時 I/O 容易成為瓶頸。同時,傳統的單機文件系統(如NTFS)和網絡文件系統(如 NFS)要求一個文件系統的數據必須存儲在一臺物理機器上,且不提供數據冗余性,可擴展性、容錯能力和并發讀寫能力難以滿足大數據需求。
谷歌文件系統(GFS)和 Hadoop 的分布式文件系統 HDFS(Hadoop Distributed File System)奠定了大數據存儲技術的基礎。與傳統系統相比,GFS/HDFS 將計算和存儲節點在物理上結合在一起,從而避免在數據密集計算中易形成的 I/O 吞吐量的制約,同時這類分布式存儲系統的文件系統也采用了分布式架構,能達到較高的并發訪問能力。存儲架構的變化如圖 2 所示。
當前隨著應用范圍不斷擴展,GFS 和 HDFS 也面臨瓶頸。雖然 GFS和 HDFS 在大文件的追加(Append)寫入和讀取時能夠獲得很高的性能,但隨機訪問(random access)、海量小文件的頻繁寫入性能較低,因此其適用范圍受限。業界當前和下一步的研究重點主要是在硬件上基于 SSD 等新型存儲介質的存儲體系架構,同時對現有分布式存儲的文件系統進行改進,以提高隨機訪問、海量小文件存取等性能。
大數據對存儲技術提出的另一個挑戰是多種數據格式的適應能力。格式多樣化是大數據的主要特征之一,這就要求大數據存儲管理系統能夠適應對各種非結構化數據進行高效管理的需求。數據庫的一致性(Consistency)、可用性(Availability)和分區容錯性(Partition-Tolerance)不可能都達到最佳,在設計存儲系統時,需要在 C、A、P 三者之間做出權衡。傳統關系型數據庫管理系統(RDBMS)以支持事務處理為主,采用了結構化數據表的管理方式,為滿足強一致性(C)要求而犧牲了可用性(A)。
為大數據設計的新型數據管理技術,如谷歌 BigTable 和 Hadoop HBase 等非關系型數據庫(NoSQL,Not only SQL),通過使用“鍵-值(Key-Value)”對、文件等非二維表的結構,具有很好的包容性,適應了非結構化數據多樣化的特點。同時,這類 NoSQL 數據庫主要面向分析型業務,一致性要求可以降低,只要保證最終一致性即可,給并發性能的提升讓出了空間。谷歌公司在 2012 年披露的 Spanner 數據庫,通過原子鐘實現全局精確時鐘同步,可在全球任意位置部署,系統規模可達到 100 萬~1000 萬臺機器。Spanner 能夠提供較強的一致性,還支持 SQL 接口,代表了數據管理技術的新方向。整體來看,未來大數據的存儲管理技術將進一步把關系型數據庫的操作便捷性特點和非關系型數據庫靈活性的特點結合起來,研發新的融合型存儲管理技術。
2.大數據并行計算技術
大數據的分析挖掘是數據密集型計算,需要巨大的計算能力。與傳統“數據簡單、算法復雜”的高性能計算不同,大數據的計算是數據密集型計算,對計算單元和存儲單元間的數據吞吐率要求極高,對性價比和擴展性的要求也非常高。傳統依賴大型機和小型機的并行計算系統不僅成本高,數據吞吐量也難以滿足大數據要求,同時靠提升單機 CPU 性能、增加內存、擴展磁盤等實現性能提升的縱向擴展(Scale Up)的方式也難以支撐平滑擴容。
谷歌在 2004 年公開的 MapReduce 分布式并行計算技術,是新型分布式計算技術的代表。一個 MapReduce 系統由廉價的通用服務器構成,通過添加服務器節點可線性擴展系統的總處理能力(Scale Out),在成本和可擴展性上都有巨大的優勢。谷歌的 MapReduce 是其內部網頁索引、廣告等核心系統的基礎。之后出現的開源實現 Apache Hadoop MapReduce 是谷歌 MapReduce 的開源實現,目前已經成為目前應用最廣泛的大數據計算軟件平臺。
MapReduce 架構能夠滿足“先存儲后處理”的離線批量計算(batch processing)需求,但也存在局限性,最大的問題是時延過大,難以適用于機器學習迭代、流處理等實時計算任務,也不適合針對大規模圖數據等特定數據結構的快速運算。
為此,業界在 MapReduce 基礎上,提出了多種不同的并行計算技術路線,如圖 3 所示。如 Yahoo 提出的 S4 系統、Twitter 的 Storm系統是針對“邊到達邊計算”的實時流計算(Real time streaming process)框架,可在一個時間窗口上對數據流進行在線實時分析,已經在實時廣告、微博等系統中得到應用。谷歌 2010 年公布的 Dremel系統,是一種交互分析(Interactive Analysis)引擎,幾秒鐘就可完成 PB(1PB=1015B)級數據查詢操作。此外,還出現了將 MapReduce內存化以提高實時性的 Spark 框架、針對大規模圖數據進行了優化的Pregel 系統等等。
針對不同計算場景建立和維護不同計算平臺的做法,硬件資源難以復用,管理運維也很不方便,研發適合多種計算模型的通用架構成為業界的普遍訴求。為此,Apache Hadoop 社區在 2013 年 10 月發布的 Hadoop 2.0 中推出了新一代的 MapReduce 架構。新架構的主要變化是將舊版本 MapReduce 中的任務調度和資源管理功能分離,形成一層與任務無關的資源管理層(YARN)。如圖 4 所示,YARN 對下負責物理資源的統一管理,對上可支持批處理、流處理、圖計算等不同模型,為統一大數據平臺的建立提供了新平臺。基于新的統一資源管理層開發適應特定應用的計算模型,仍將是未來大數據計算技術發展的重點。
3.大數據分析技術
在人類全部數字化數據中,僅有非常小的一部分(約占總數據量的 1%)數值型數據得到了深入分析和挖掘(如回歸、分類、聚類),大型互聯網企業對網頁索引、社交數據等半結構化數據進行了淺層分析(如排序)。占總量近 60%的語音、圖片、視頻等非結構化數據還難以進行有效的分析。
大數據分析技術的發展需要在兩個方面取得突破,一是對體量龐大的結構化和半結構化數據進行高效率的深度分析,挖掘隱性知識,如從自然語言構成的文本網頁中理解和識別語義、情感、意圖等;二是對非結構化數據進行分析,將海量復雜多源的語音、圖像和視頻數據轉化為機器可識別的、具有明確語義的信息,進而從中提取有用的知識。
目前的大數據分析主要有兩條技術路線,一是憑借先驗知識人工建立數學模型來分析數據,二是通過建立人工智能系統,使用大量樣本數據進行訓練,讓機器代替人工獲得從數據中提取知識的能力。由于占大數據主要部分的非結構化數據,往往模式不明且多變,因此難以靠人工建立數學模型去挖掘深藏其中的知識。
通過人工智能和機器學習技術分析大數據,被業界認為具有很好的前景。2006 年谷歌等公司的科學家根據人腦認知過程的分層特性,提出增加人工神經網絡層數和神經元節點數量,加大機器學習的規模,構建深度神經網絡,可提高訓練效果,并在后續試驗中得到證實。這一事件引起工業界和學術界高度關注,使得神經網絡技術重新成為數據分析技術的熱點。目前,基于深度神經網絡的機器學習技術已經在語音識別和圖像識別方面取得了很好的效果。但未來深度學習要在大數據分析上廣泛應用,還有大量理論和工程問題需要解決,主要包括模型的遷移適應能力,以及超大規模神經網絡的工程實現等。
(三) 大數據技術創新呈現“原創-開源-產品化”的階梯格局
當前,國際上大數據技術創新方面形成了獨特的“互聯網公司原創——開源擴散——IT 廠商產品化——其他企業使用”特點,如圖 5所示。
總結互聯網企業在大數據技術創新方面的經驗,如下幾個方面值得關注:
第一,豐富的數據和強大的平臺是大數據創新的基礎條件。以谷歌為例,它的數據資源極為豐富,擁有全球網頁索引庫,掌握幾十億用戶的搜索行為數據,建立了高分辨率的谷歌地圖數據數據庫,擁有2014谷歌+社交數據和 YouTube 海量視頻數據。谷歌的基礎設施也十分強大,在全球擁有 36 個超大型數據中心,上百萬臺服務器。
第二,大數據的應用效益不是飛躍突進的,必須依靠長期的不斷累積。從搜索、廣告和推薦等成熟應用來看,大數據的應用效果并非立竿見影,其巨大的效益是在日積月累的微小進步中逐漸形成的。
第三,累積效益的獲取,主要靠持續不斷的技術迭代。互聯網企業一直奉行敏捷開發、快速迭代的軟件開發理念,往往在一兩周內就能完成一個“規劃、開發、測試、發布”的迭代周期。大型互聯網企業通過這種長期持續“小步快跑”的研發方式,支撐了大數據應用效果的持續提升,建立了技術上的領先優勢。
第四,技術和應用一體化組織,是快速迭代的保障。互聯網企業之所以能夠保持高效率的持續技術演進,其研發和應用一體化的組織方式是很重要的因素。與傳統行業“應用者——解決方案提供商”分離的組織形態不同,互聯網企業省去了解決方案供應商環節,可以迅速將需求轉化為解決方案。谷歌、百度等大型互聯網企業的研發人員占比一般都在 50%~70%,遠遠高于其他類型的公司,這為技術開發提供了強大的后盾。
最后,大數據技術發展與開源運動的結合也成為大數據技術創新中的一個鮮明特點。領先企業進行前沿創新,創新成果通過開源得到不斷完善并向全社會輻射,原創與開源相得益彰,在國際上形成了一套高效運轉的研發產業化體系。開源模式讓人們“不必重復發明輪子”,能夠降低研發和采購成本,還能夠啟發新的創意,加快再創新步伐。特別是開源 Apache Hadoop 的大范圍應用,大大加速了大數據應用進程,一大批互聯網公司和傳統 IT 企業都從這種技術擴散體系中受益。在此背景下,國內大數據技術研發也應該把自主創新和開源結合起來,以更加開放的心態融入到國際大數據技術創新潮流中去。