今天繼續帶大家學習大數據。今天主要介紹大數據價值鏈的數據存儲部分,前面兩期重點介紹了數據生成和數據獲取,有希望學習的朋友可以翻閱我前面的文章。希望大家持續學習,每天關注,我會連續更新文章,讓大家系統學習和認識大數據。

階段III:數據存儲

大數據系統中的數據存儲子系統將收集的信息以適當的格式存放以待分析和價值提取。為了實現這個目標,數據存儲子系統應該具有如下兩個特徵:

?存儲基礎設施應能持久和可靠地容納信息;

?存儲子系統應提供可伸縮的訪問介面供用戶查詢和分析巨量數據。從功能上,數據存儲子系統可以分為硬體基礎設施和數據管理軟體。

一、存儲基礎設施

硬體基礎設施實現信息的物理存儲,可以從不同的角度理解存儲基礎設施。首先,存儲設備可以根據存儲技術分類。典型的存儲技術有如下幾種。

?隨機存取存儲器(RAM):是計算機數據的一種存儲形式,在斷電時將丟失存儲信息。現代RAM包括靜態RAM、動態RAM和相變RAM。

?磁碟和磁碟陣列:磁碟是現代存儲系統的主要部件。HDD由一個或多個快速旋轉的碟片構成,通過移動驅動臂上的磁頭,從碟片表面完成數據的讀寫。與RAM不同,斷電後硬碟仍能保留數據信息,並且具有更低的單位容量成本,但是硬碟的讀寫速度比RAM讀寫要慢得多。由於單個高容量磁碟的成本較高,因此磁碟陣列將大量磁碟整合以獲取高容量、高吞吐率和高可用性。

?存儲級存儲器:是指非機械式存儲媒體,如快閃記憶體。快閃記憶體通常用於構建固態驅動器SSD,SSD沒有類似HDD的機械部件,運行安靜,並且具有更小的訪問時間和延遲。但是SSD的單位存儲成本要高於HDD。

這些存儲設備具有不同的性能指標,可以用來構建可擴展的、高性能的大數據存儲子系統。

其次,可以從網路體系的觀點理解存儲基礎設施,存儲子系統可以通過不同的方式組織構建。

?直接附加存儲(DAS):存儲設備通過主機匯流排直接連接到計算機,設備和計算機之間沒有存儲網路。DAS是對已有伺服器存儲的最簡單的擴展。

?網路附件存儲(NAS):NAS是文件級別的存儲技術,包含許多硬碟驅動器,這些硬碟驅動器組織為邏輯的冗餘的存儲容器。和SAN相比,NAS可以同時提供存儲和文件系統,並能作為一個文件伺服器。

?存儲區域網路(SAN):SAN通過專用的存儲網路在一組計算機中提供文件塊級別的數據存儲。SAN能夠合併多個存儲設備,例如磁碟和磁碟陣列,使得它們能夠通過計算機直接訪問,就好象它們直接連接在計算機上一樣。

這三種存儲技術的存儲網路體系架構如圖7所示,SAN具有最複雜的網路架構,並依賴於特定的存儲網路設備。

最後,儘管已有的存儲系統架構得到了深入的研究,但是卻無法直接應用於大數據系統中。為了適應大數據系統的「4Vs」特性,存儲基礎設施應該能夠向上和向外擴展,以動態配置適應不同的應用。

一個解決這些需求的技術是雲計算領域提出的存儲虛擬化。存儲虛擬化將多個網路存儲設備合併為單個存儲設備。目前可以在SAN和NAS架構上實現存儲虛擬化。基於SAN的存儲虛擬化在可擴展性、可靠性和安全方面能夠比基於NAS的存儲虛擬化具有更高的性能。但是SAN需要專用的存儲基礎設施,從而帶來較高的成本。

二、數據管理框架

數據管理框架解決的是如何以適當的方式組織信息以待有效地處理。在大數據出現之前,數據管理框架就得到了較為廣泛的研究。從層次的角度將數據管理框架劃分為3層: 文件系統、資料庫技術和編程模型, 如圖 8 所示。

(1) 文件系統

文件系統是大數據系統的基礎,因此得到了產業界和學術界的廣泛關注。Google為大型分散式數據密集型應用設計和實現了一個可擴展的分散式文件系統GFS。GFS運行在廉價的商用伺服器上,為大量用戶提供容錯和高性能服務。GFS適用於大文件存儲和讀操作遠多於寫操作的應用。但是GFS具有單點失效和處理小文件效率低下的缺點,Colossus改進了GFS並克服了這些缺點。此外,其他的企業和研究者們開發了各自的文件存儲解決方案以適應不同的大數據存儲需求。

(2)資料庫技術

資料庫技術已經經歷了30多年的發展,不同的資料庫系統被設計用於不同規模的數據集和應用。傳統的關係資料庫系統難以解決大數據帶來的多樣性和規模的需求。由於具有模式自由、易於複製、提供簡單API、最終一致性和支持海量數據的特性,NoSQL資料庫逐漸成為處理大數據的標準。隨後將根據數據模型的不同,討論三種主流的NoSQL資料庫:鍵值(key-value)存儲資料庫、列式存儲資料庫和文檔存儲資料庫。

(a)鍵值存儲資料庫

鍵值存儲是一種簡單的數據存儲模型,數據以鍵值對的形式儲存,鍵是唯一的。近年出現的鍵值存儲資料庫受到Amazon公司的Dynamo影響特別大。在Dynamo中,數據被分割存儲在不同的伺服器集羣中,並複製為多個副本。可擴展性和持久性依賴於以下兩個關鍵機制。

?分割和複製:Dynamo的分割機制基於一致性哈希技術,將負載分散在存儲主機上。哈希函數的輸出範圍被看作是一個固定的循環空間或「環」。系統中的每個節點將隨機分配該空間中的一個值,表示它在環中的位置。通過哈希標識數據項的鍵,可以獲得該數據項在環中對應的節點。Dynamo系統中每條數據項存儲在協調節點和N?1個後繼節點上,其中N是實例化的配置參數。如圖9所示,節點B是鍵k的協調節點,數據存儲在節點B同時複製在節點C和D上。此外,節點D將存儲在(A,B],(B,C]和(C,D]範圍內的鍵。

?對象版本管理:由於每條唯一的數據項存在多個副本,Dynamo允許以非同步的方式更新副本並提供最終一致性。每次更新被認為是數據的一個新的不可改變的版本。一個對象的多個版本可以在系統中共存。

(b)列式存儲資料庫

列式存儲資料庫以列存儲架構進行存儲和處理數據,主要適合於批量數據處理和實時查詢。下面介紹典型的列式存儲系統。

?Bigtable:是Google公司設計的一種列式存儲系統。Bigtable基本的數據結構是一個稀疏的、分散式的、持久化存儲的多維度排序映射,映射由行鍵、列鍵和時間戳構成。行按字典序排序並且被劃分為片,片是負載均衡單元。列根據鍵的前綴成組,稱為列族,是訪問控制的基本單元。時間戳則是版本區分的依據。

?Cassandra:由Facebook開發並於2008年開源,結合了Dynamo的分散式系統技術和Bigtable的數據模型。Cassandra中的表是一個分散式多維結構,包括行、列族、列和超級列。此外,Cassandra的分割和複製機制也和Dynamo的類似,用於確保最終一致性。

?Bigtable改進:由於Bigtable不是開源的,因此開源項目HBase和Hypertable進行合併,同時吸收了Bigtable的思想,實現了類似的系統。

列式存儲資料庫大部分是基於Bigtable的模式,只是在一致性機制和一些特性上有差異。

(c)文檔資料庫

文檔資料庫能夠支持比鍵值存儲複雜得多的數據結構。MongoDB,SimpleDB和CouchDB是主要的文檔資料庫,它們的數據模型和JSON對象類似。不同文檔存儲系統的區別在於數據複製和一致性機制方面。

(d)其他NoSQL和混合資料庫

除了前面提到的數據存儲系統,還有許多其他項目支持不同的數據存儲系統。

(3)編程模型

儘管NoSQL資料庫具有很多關係型資料庫不具備的優點,但是沒有插入操作的聲明性表述,對查詢和分析的支持也不夠。編程模型則對實現應用邏輯和輔助數據分析應用至關重要。但是,使用傳統的並行模型如OpenMP和MPI在大數據環境下實現並行編程非常困難。

許多並行編程模型已被提出應用於領域相關的應用。這些模型有效地提高了NoSQL資料庫的性能,縮小了NoSQL和關係型資料庫性能的差距,因此NoSQL資料庫逐漸成為海量數據處理的核心技術。目前主要有三種編程模型:通用處理模型、圖處理模型以及流處理模型。

?通用處理模型

這種類型的模型用於解決一般的應用問題,被用於MapReduce和Dryad中。其中,MapReduce是一個簡單但功能強大的編程模型,能將大規模的計算任務分配到大的商用PC集羣中並行運行。

?圖處理模型

社交網路分析和RDF等能夠表示為實體間的相互聯繫,因此可以用圖模型來描述。和流類型(?ow-type)的模型相比,圖處理的迭代是固有的,相同的數據集將不斷被重訪。

?流處理模型

S4和Storm是兩個運行在JVM上的分散式流處理平臺。S4實現了actor編程模型,每個數據流中keyedtupple被看作是一個事件並被以某種偏好路由到處理部件。PEs形成一個有向無環圖,並且處理事件和發布結果。處理節點是PEs的邏輯主機並能監聽事件,將事件傳遞到處理單元容器PEN中,PEN則以適當的順序調用處理部件。Storm和S4有著許多相同的特點。Storm作業同樣由有向無環圖表示,它和S4的主要區別在於架構:S4是分散式對稱架構,而Storm是類似於MapReduce的主從架構。

上表比較了上述幾種編程模型的特點。

首先,儘管實時處理越來越重要,批處理仍然是重要的數據處理方式。

其次,大多數系統採取圖作為編程模型是因為圖能夠表示更複雜的任務。

再次,所有的系統都支持並發執行以加速處理速度。

第四,流處理模型使用內存作為數據存儲媒體以獲得高訪問和處理速率,而批處理模型使用文件系統或磁碟存儲海量數據以支持多次訪問。

第五,這些系統的架構通常是主–從式的,但是S4則是分散式的架構。

最後,不同的系統具有不同的容錯策略。對於Storm和S4,當節點失效時,失效節點的任務將轉移到備用節點運行;Pregel和GraphLab則是用檢查點用於容錯;MapReduce和Dryad則僅指出節點級別的容錯。

今天介紹了大數據價值鏈的數據存儲部分,後面會繼續帶你認識不一樣的大數據。

如果您想長期獲取科技信息的解讀,記得關注我,我會每天更新,謝謝。同時如果您有什麼意見和建議,歡迎評論。


推薦閱讀:
相關文章