隨著互聯網的不斷擴張和云計算技術的進一步推廣,海量的數據在個人、企業、研究機構等源源不斷地產生。這些數據為日常生活提供了便利,信息網站可以推送用戶定制的新聞,購物網站可以預先提供用戶想買的物品,人們可以隨時隨地分享。但是如何有效、快速、可靠地存取這些日益增長的海量數據成了關鍵的問題。傳統的存儲解決方案能提供數據的可靠性和絕對的安全性,但是面對海量的數據及其各種不同的需求,傳統的解決方案日益面臨越來越多的問難,比如數據量的指數級增長對不斷擴容的存儲空間提出要求,實時分析海量的數據對存儲計算能力提出要求。一方面傳統的存儲解決方案正在改變,比如多級存儲來不斷適應大數據存儲管理系統的特點和要求,另一方面全新的存儲解決方案正日漸成熟,來有效滿足大數據的發展需求。
1、大數據定義及其廣泛應用與典型架構
越來越多的人可以通過網絡獲得包括架構(IAAS)、平臺(PAAS)以及軟件(SAAS)等服務,云計算為終端用戶提供了便捷而人性化的服務,大大地降低他們的使用成本,優化了用戶體驗,更拓展了互聯網企業自身的營收業務。例如購物網站通過記錄每位訪問用戶在其網站上每一次的鼠標點擊操作來預測用戶的喜好,并由后臺計算產生相關產品的購物推薦,提高了廣告產品推廣的針對性同時也完善了個人用戶的購物體驗。隨著成千上萬的終端用戶的并行訪問,僅用戶行為的跟蹤就會產生巨量的數據,這些數據的處理與存儲對于互聯網企業的傳統數據倉庫來說帶來了新的問題和挑戰,從而“大數據”的概念應運而生。所謂大數據或稱巨量資料、海量資料,指的是所涉及的資料量規模巨大到無法透過目前主流軟件工具,在合理時間內達到擷取、管理、處理、并整理成為幫助企業經營決策更積極目的的資訊。
大數據自誕生以來其規模也在不斷地發生改變,從開始PB(PETA-BYTE)級別正快速地發展到EB(EXA-BYTE)級別,大數據規模的不斷快速擴張是因為其廣泛的數據源,這些數據有的正如前面例子所提到的,是每天線上跟蹤用戶日常行為所產生,或者是網絡中手機和傳感器數據采集而來;有的則是企業自身多年以來信息積累而成,例如金融行業歷史數據來引導未來的投資方向,又如最大的電子商務網站淘寶根據其歷史記錄推出的數據魔方服務產品來幫助商家指定營銷手段;有的是服務系統日志收集而來,例如從網絡服務器的工作日志或者數據庫El志中提取到。這些各種各樣的數據來自不同的設備或者應用,其格式也不盡相同,被實時或事后采集并保存到大數據存儲管理系統中,根據不同的應用需求被大數據處理系統進行離線或實時或交互式的處理,之后可能的用途包括:(1)成為最終的數據報表反饋給應用開發人員或數據分析師;(2)成為快速查詢或者計算的結果反饋給前端應用服務;(3)成為更新后的數據表格傳送到數據庫中以供查詢;(4)被壓縮成備份數據存放到大數據存儲集群中。大數據的存儲與處理典型架構(如圖1)已經逐漸取代傳統的數據倉庫成為數據中心核心部件,發揮著云計算時代重要的作用,并且使得數據中心發生著巨大的變化,迎接新的挑戰。
2、大數據存儲與應用的特點分析
“大數據”是由數量巨大、結構復雜、類型眾多數據構成的數據集合,是基于云計算的數據處理與應用模式,通過數據的整合共享,交叉復用形成的智力資源和知識服務能力。其常見特點可以概括為3V:Volume、Velocity、Variety(規模大、速度快、多樣性)。
大數據具有數據規模大(Volume)且增長速度快的特性,其數據規模已經從PB級別增長到EB級別,并且仍在不斷地根據實際應用的需求和企業的再發展繼續擴容,飛速向著ZB(ZETA-BYTE)的規模進軍。以國內最大的電子商務企業淘寶為例,根據淘寶網的數據顯示,至2011年底,淘寶網最高單日獨立用戶訪問量超過1.2億人,比2010年同期增長120%,注冊用戶數量超過4億,在線商品數量達到8億,頁面瀏覽量達到20億規模,淘寶網每天產生4億條產品信息,每天活躍數據量已經超過50TB.所以大數據的存儲或者處理系統不僅能夠滿足當前數據規模需求,更需要有很強的可擴展性以滿足快速增長的需求。
(1)大數據的存儲及處理不僅在于規模之大,更加要求其傳輸及處理的響應速度快(Velocity)。
相對于以往較小規模的數據處理,在數據中心處理大規模數據時,需要服務集群有很高的吞吐量才能夠讓巨量的數據在應用開發人員“可接受”的時間內完成任務。這不僅是對于各種應用層面的計算性能要求,更加是對大數據存儲管理系統的讀寫吞吐量的要求。例如個人用戶在網站選購自己感興趣的貨物,網站則根據用戶的購買或者瀏覽網頁行為實時進行相關廣告的推薦,這需要應用的實時反饋;又例如電子商務網站的數據分析師根據購物者在當季搜索較為熱門的關鍵詞,為商家提供推薦的貨物關鍵字,面對每日上億的訪問記錄要求機器學習算法在幾天內給出較為準確的推薦,否則就丟失了其失效性;更或者是出租車行駛在城市的道路上,通過GPS反饋的信息及監控設備實時路況信息,大數據處理系統需要不斷地給出較為便捷路徑的選擇。這些都要求大數據的應用層可以最快的速度,最高的帶寬從存儲介質中獲得相關海量的數據。另外一方面,海量數據存儲管理系統與傳統的數據庫管理系統,或者基于磁帶的備份系統之間也在發生數據交換,雖然這種交換實時性不高可以離線完成,但是由于數據規模的龐大,較低的數據傳輸帶寬也會降低數據傳輸的效率,而造成數據遷移瓶頸。因此大數據的存儲與處理的速度或是帶寬是其性能上的重要指標。
(2)大數據由于其來源的不同,具有數據多樣性的特點。
所謂多樣性,一是指數據結構化程度,二是指存儲格式,三是存儲介質多樣性。對于傳統的數據庫,其存儲的數據都是結構化數據,格式規整,相反大數據來源于日志、歷史數據、用戶行為記錄等等,有的是結構化數據,而更多的是半結構化或者非結構化數據,這也正是傳統數據庫存儲技術無法適應大數據存儲的重要原因之一。所謂存儲格式,也正是由于其數據來源不同,應用算法繁多,數據結構化程度不同,其格式也多種多樣。例如有的是以文本文件格式存儲,有的則是網頁文件,有的是一些被序列化后的比特流文件等等。所謂存儲介質多樣性是指硬件的兼容,大數據應用需要滿足不同的響應速度需求,因此其數據管理提倡分層管理機制,例如較為實時或者流數據的響應可以直接從內存或者Flash(SSD)中存取,而離線的批處理可以建立在帶有多塊磁盤的存儲服務器上,有的可以存放在傳統的SAN或者NAS網絡存儲設備上,而備份數據甚至可以存放在磁帶機上。因而大數據的存儲或者處理系統必須對多種數據及軟硬件平臺有較好的兼容性來適應各種應用算法或者數據提取轉換與加載(ETL)。