隨著互聯網的不斷擴張和雲計算技術的進一步推廣,海量的資料在個人、企業、研究機構等源源不斷地產生。 這些資料為日常生活提供了便利,資訊網站可以推送使用者定制的新聞,購物網站可以預先提供使用者想買的物品,人們可以隨時隨地分享。 但是如何有效、快速、可靠地存取這些日益增長的海量資料成了關鍵的問題。 傳統的存儲解決方案能提供資料的可靠性和絕對的安全性,但是面對海量的資料及其各種不同的需求,傳統的解決方案日益面臨越來越多的問難,比如資料量的指數級增長對不斷擴容的存儲空間提出要求,即時分析海量的資料對存儲計算能力提出要求。 一方面傳統的存儲解決方案正在改變,比如多級存儲來不斷適應大資料存儲管理系統的特點和要求,另一方面全新的存儲解決方案正日漸成熟,來有效滿足大資料的發展需求。
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)。
3、傳統存儲在大資料應用中面臨的挑戰
作為資料存取的載體,大資料存儲管理系統與傳統的存儲系統仍然具有許多相似的特性,例如安全性、可用性、可靠性、可擴性及高效性。
1)安全性(Security)
雖然大資料的存儲訪問是位於企業的資料中心內部,對於外部使用者已經具有防火牆隔離功能,但是對於企業內部來說不同部門的資料也並非完全可以共用的,例如人事部門對於企業內部工資的管理,或者金融企業歷史交易資料等。 為每一個部門建立一個大資料的存儲管理平臺並不現實,較為實用的方法是類似于傳統的資料庫訪問,所有部門共用一個大資料存儲池,通過添加必要的存取控制來實現資料訪問的安全性。
2)可用性(Availability)和可靠性(Reliability)
資料的準確性是作為存儲管理系統最為基礎的要求,對於大資料的存儲來說,其準確性的要求可能沒有傳統資料庫這麼高,因為其資料規模龐大可以容忍較少量的資料錯誤,但是資料準確性依然是不能忽視的重要特性。 傳統的存儲是通過冗余備份(例如磁碟陣列)、定期,強制寫人磁片、雙控制器來確保資料的準確性,而在大資料存儲系統中則是通過其中較為簡單的多副本(即冗余備份)方式做到容錯的,一般來說同一個機架上擁有兩份備份在不同的節點上, 不同的機架上也有相應的備份,從而達到資料丟失的自動還原功能實現資料的可用性。 而為了達到資料備份的一致性,在資料備份創建的過程中也有相應的備份點及重傳機制作為保障。 從技術方法上來說,兩者是十分相似的,甚至在大資料領域所採用的方法較之傳統的存儲系統技術更為簡樸。
3)可擴性(Scalability)
無論是大資料存儲系統還是傳統的存儲系統,容量規劃都是一個重要的問題,容量規劃一是要滿足現有的存儲空間和頻寬的需求,更重要的是考慮到系統擴張後的容量升級。
4)高效性(Efficiency)
在存儲系統中,通過對使用者層透明的壓縮處理來實現空間及頻寬利用的有效性提升是一個普遍的做法,這個在傳統的存儲系統和大資料系統中都十分重要。 尤其是對一些歸檔備份的資料,自動的壓縮開啟以及不同壓縮演算法的提供與選擇就顯得十分實用。
除了以上的一些共性外,由於大資料的3V特性即Volume、Velocity、Variety(規模大、速度快、多樣性),傳統的資料存儲管理系統面臨著更多的挑戰,有些甚至已經完全不能滿足大資料的存儲計算的要求, 而需要開發新的針對大資料的資料存儲管理平臺,如表1所示。
5)擴容方式
雖然傳統存儲系統和大資料存儲系統都具有可擴性,但是其擴展方式是截然不同的。 傳統存儲是縱向擴容(Scale-up)即當存儲容量不夠或者存儲磁片頻寬不夠時,在SAN或者NAS存儲池中繼續添加磁片(Hard-drive)來達到增加容量和頻寬的作用,但是大資料時代縱向擴容方式是無法滿足其需求的。 首先,大資料的資料規模目前已經是EB(EXA-BYTE)級別,將來甚至會達到ZB(ZETA-BYTE),這個數量級別的存儲容量是無法通過單純的往網路存儲池添加硬碟來實現的。 其次,即使可以通過縱向擴容達到更大資料規模的需求,其高額的硬體及管理軟體成本也是資料存儲管理中心無法承擔的。 因此,對於大資料存儲系統來說橫向擴張才能夠很好的達到巨量資料規模的需求,才能夠實現存儲系統的按需(ON-DEMAND)動態規模增減。 所謂的橫向擴容是指當存儲容量或者頻寬不足以滿足現有要求足時,添加存儲節點來達到擴容的目的。 在大資料的應用領域,每一個節點不需要高價的磁碟陣列(RAID),相反只需要一定數量的各種類型的硬碟以獨立工作單元方式進行管理(即JBOD存放裝置)。 根據Google的設想,這些節點甚至可以是一些成本較為低廉的日常用機器(甚至是桌上型電腦)。 橫向擴容意味著資料管理軟體將要統籌更多的節點,面對更大的壓力。 例如如果採用集中式的主節點管理,主節點的能力可能成為整個大資料存儲系統的性能瓶頸,尤其是當規模的擴大到成千上萬個節點時,單管理節點的模式是不可靠的;如果採用分散式主節點群管理,軟體的開發成本和系統本身的複雜度相應就會提高。
6)存儲模式
傳統的存儲系統是依賴于SAN或者NAS這樣的網路存儲模式,這樣的存儲模式存在著如上所述縱向擴容瓶頸,更重要的是它們將計算節點與存儲節點分隔開,通過網路來共用一個或多個存儲池,最終使得資料的存取速度被限制在網路的瓶頸上, 即使通過縱向擴容其存儲池容量和頻寬都得到了提高,最終卻受限於它們與資料處理節點之間的網路頻寬上。 而對於大資料的處理和存取來說,最終的速度都受制于SAN或者NAS的物理網路頻寬,這是遠遠無法滿足EB級別資料規模的需求的。 因為網路存儲對於大資料意味著當計算發生時,PB或者EB級別的資料需要通過SAN或者NAS的網路搬遷到計算節點上進行各種應用的處理,然後再將結果返回,而這樣巨量資料的搬遷本身也許比起計算應用更加耗時。 所以目前大資料存儲系統普遍採用的是DAS的方式,並且將計算資源搬遷到資料的存儲節點上發生,但是簡單的DAS方式仍然給存儲管理系統的軟體層增加了許多的新問題,例如通過網路的跨節點資料訪問管理,存儲資料塊的管理等。
7)相容集成
對於大資料存儲系統的相容集成特性涉及到若干方面,首先正由大資料的多樣性特點所決定,其存儲系統需要相容各種種類的資料,有結構化、半結構化及非結構化資料,而傳統的資料庫存儲則是管理結構化的關聯式資料,其資料的種類比較單一 ;其次,大資料的存儲需要和各種資料來源和資料存儲系統整合集成系統工作,正如之前典型的架構所列舉,其資料交換介面需要相容各種資料傳輸機制才能夠很好的服務資料中心的各種需求;再者,大資料計算要對大量的資料提供各種有效服務, 例如有些批次處理(Batch.style)資料分析或者機器學習演算法需要處理大量的資料,有些互動式(Interactive-access)的資料訪問或者查詢需要快速返回;有些流式(streaming)計算的及時運算與回應,這些計算服務的資料都被存 放在統一的大資料存儲系統之上,因為反復的搬遷大規模的資料對於任何大資料應用來說都是降低效率的致命短板,所以基於大資料的存儲系統可以支援各種上層應用的需求,提供統一或者相容性強的讀寫介面;第四, 大資料存儲管理系統需要支援各種介質的存放裝置來滿足上層各種應用的需求。 例如對於經常訪問的熱點資料,存儲系統可以從磁片讀取資料的同時將資料緩存存放在記憶體或者Flash(SSD)中,這要求大資料的存儲系統支援多級快取作業,並且很好的相容各種硬體存放裝置。
8)故障維護
相較于傳統存儲系統,大資料的存儲系統成本不僅僅意味著花費的多少,更多的涉及到其可用性。 當資料管理系統的硬體規模達到成千上萬時,每一個節點和節點的磁片成本就會被成千上萬地擴大,根據Google最初的設想,大資料的處理集群只需要採用低廉的日常用機即可(甚至可以是桌上型電腦), 而低廉的存放裝置加上眾多節點使得故障率會高於一般的傳統存儲系統。 因而對於大資料的存儲系統來說,一是需要強大的容錯軟體管理能力,二是需要更加有效的運維繫統來監控各種故障的發生,尤其是對於大資料存儲系統可能擁有十萬級別的硬碟,磁片故障可能每天都會發生。
4、大資料存儲方案簡介
大資料存儲方案隨著大資料計算的發展也已經歷時將近10年,有的已經被廣泛應用,有的則是被不斷的完善中,以下列舉若干較為著名的大資料存儲方案及其優缺點。
1)HDFS
大資料計算最為代表性的就是Google在2004年提出的MapReduce框架和相應的GFS存儲系統。 2008年Yahoo的工程師根據MapReduce的框架推出了開源的Hadoop[41專案,作為一個大資料處理典型開源實現,如今Hadoop專案已經被廣泛應用於各大互聯網企業的資料中心, 並且正努力從一個開源專案走向商業化應用產品,不斷得到完善。 而HDFS(Hadoop Distributed File System)就是支援Hadoop計算框架的分散式大資料存儲系統,它具有大資料存儲系統幾項重要特性,具有很高的容錯性、可擴充性、高併發性,並且基於廉價存儲伺服器設備, 是目前最為流行的大資料存儲系統。 但是它還有許多方面需要進一步完善,例如目前HDFS自身不能與POSIX檔案系統相容,使用者需要通過其自訂的介面對資料進行讀寫管理,增加了各種資料存儲之間交換的開發成本;又如目前HDFS為了到達高容錯性, 在資料中心中推薦及實際操作的副本數目設置為三,也就意味著使用者的任意一份資料都會被覆制三份保存在存儲系統中,這樣造成存儲系統保存的資料量遠大於實際使用者需要的存儲量,相比傳統的RAID存儲空間效率要低很多。
2)Tachyon
來自于美國加州大學伯克利分校的AMPLab的Tachyon是一個高容錯的分散式檔案系統,允許檔以記憶體的速度在集群框架中進行可靠的共用,其輸送量要比HDFS高300多倍。 Tachyon都是在記憶體中處理快取檔案,並且讓不同的作業任務或查詢語句以及分散式運算框架都能以記憶體的速度來訪問快取檔案。 由於Tachyon是建立在記憶體基礎上的分散式大資料檔案系統,所以其高輸送量也是HDFS不能夠媲美的,當然截止目前Tachyon也只是0.2 Alpha發行版本其穩定性和魯棒性還有待檢驗。
3)其他
Quantcast File Syste(QFS)是一個商陛能、容錯、分散式的開源大資料檔案系統,其開發是為HDFS提供另一種選擇,但是其讀寫性能可以高於HDFS,並能比HDFS節省50%存儲空間。 Ceph是基於POSIX的沒有單點故障的PB級分散式檔案系統,從而使得資料能容錯和無縫的複製,Ceph的用戶端已經合併到Linux內核2.6.34中;GlusterFS是一個可以橫向擴展的支援PB級的資料量開源存儲方案。 GlusterFS通過TCP/IP或者InfiniBand RDMA方式將分佈到不同伺服器上的存儲資源彙集成一個大的網路並行檔案系統,使用單一全域命名空間管理資料。 GIuster存儲服務支援NFS、CIFS、HTTP、FTP以及Gluster自身協定,完全與POSIX標準相容。 現有應用程式不需要作任何修改或使用專用API,就可以對Gluster中的資料進行訪問。
5、小結
存儲管理已然成為大資料研究和應用的核心元件,各種改善人們El常生活、提高企業運營能力的實際應用都離不開資料的存取、分析和管理。 本文從定義大資料開始,描述了其廣泛應用和典型的架構,著重分析了大資料存儲的三個主要特點(Volume規模大、Velocity速度快、Variety多樣性)以及傳統存儲針對大資料面臨的各種挑戰。 最後本文簡單介紹了幾種較為著名的大資料存儲解決方案。 無論是傳統存儲還是大資料存儲,都要不斷適應大資料應用的主要特點和基礎架構,通過不斷的改進和完善來切實有效地存取和處理El漸豐富的資訊量。