摘 要: 涌現于社交網絡、電子商務中的超大規模非結構化數據標志著大數據時代的到來。大數據的多樣性、超大規模和可擴展性等特征對運行平臺產生新的要求。隨著大數據的產生和發展,形成了具有代表性的信息體系結構,包括編程模型、虛擬化和分布式文件系統等。隨著對大數據研究的深入,通過對大數據負載特性的分析,發現制約大數據的并不是計算能力,而是I/O延遲,采用基于內存的分布式文件系統,用于存儲和處理大規模分布式文件系統查詢的索引,可以有效降低I/O延遲,提高應用性能。
關鍵詞: 大數據;負載特征;內存系統;系統結構
隨著電子技術的發展,計算成本降低,內存容量增加,大部分平臺都可以用于高性能計算,可以處理比以往更多的數據信息,此外大規模集群技術的成熟,促成了多樣性、超大規模和可擴展的多種典型應用,即大數據應用。大數據是一種數據分析技術,用于從超大規模的多源信息中快速獲得有價值數據[1]。
在大數據應用的發展進程中,逐步形成了典型信息處理架構。硬件架構而言,其為大規模可擴展但不穩定的運算和存儲基礎設施;軟件架構而言,其涵蓋虛擬化、分布式數據庫系統、數據挖掘和機器學習等。
隨著大數據應用的擴展,對其研究的深入,提出了一些更有效的方法,這里基于大數據負載特性,分析以傳統用于計算的內存作為存儲介質,以加速制約大數據應用性能的延遲問題[2]。
1 大數據應用典型架構
以大數據應用為典型架構,從開發搜索引擎的需要出發,Google提出了Map/Reduce架構,此后開源社區根據該思想實現了Hadoop系統,并得到廣泛應用,使得大數據研究迅速成為熱點。
大數據應用與高性能計算有典型區別,大數據應用中基礎節點失效是正常的,運算向存儲節點遷移,非結構化文件的操作被優化為追加操作。大數據典型結構如圖1所示,在底層服務器節點之上是由存儲文件系統元數據的主節點和存儲文件實際數據的子節點組成的GFS或HDFS之類的分布式文件系統[3]。文件系統之上是分布式數據庫系統,代表性的有BigTable和Hbase。數據庫節點同樣也分為兩類:Master節點管理元數據并處理客戶端元數據請求,Tablet節點存儲數據并處理數據請求。
開源分布式文件系統HDFS由大量普通計算機組成,任何時候任何節點都有可能出現故障,因此在HDFS的核心架構設計時,基礎節點的出錯檢測和自動恢復是關鍵目標之一。HDFS系統采用主/從架構,包括目錄服務器節點和數據節點。系統中文件實際上劃分為數據塊冗余存儲在多個數據節點里,數據節點在目錄節點的控制下執行文件數據塊的操作,存儲管理本節點上的文件數據塊。目錄節點執行文件系統的目錄空間操作,同時決定文件數據塊到具體數據節點的映射,目錄節點管理文件系統的目錄和客戶端對文件數據的訪問。
HDFS系統中分布式文件系統之上是數據庫系統。利用數據庫系統,用戶可以按照類似數據庫范式進行數據處理。大數據應用中為非結構化數據,即NoSQL數據庫系統,它支持簡單查詢操作,而將復雜查詢交給應用層處理(例如基于Map/Reduce框架實現大規模數據分析)。BigTable和Hbase數據庫是典型的主/從結構的鍵/值存儲NoSQL數據庫系統。
HDFS系統結構中的頂層即為大數據應用,典型的應用例如搜索引擎和社交網絡等。其中許多大數據應用將Hadoop系統當作數據存儲設施,在此存儲設施上進一步挖掘獲取或分析其中的有價值信息[4]。
2 大數據負載特征
基于分布式文件系統以及其上的分布式數據庫系統的大數據應用,隨著應用規模的擴大,分布式系統中數據訪問延遲將極大地影響應用的性能體驗。Map/Reduce架構通過將計算遷移到數據節點,同時使用冗余請求有效降低延遲。盡管如此,大數據應用的訪問延遲仍然占到較大比例,其中最大負擔是硬盤訪問延遲,因此系統發展趨向于使用SSD硬盤替換磁介質硬盤,并將頻繁隨機訪問的數據都放到節點各自內存中,而將順序操作數據存儲到硬盤。
網絡延遲對分布式系統的影響也是一個關鍵問題。在高性能計算架構中采用InfiniBand、Myrinet和Arista等高性能互聯技術可實現跨數據中心微秒級延遲通信,而大數據應用中服務器節點之間廣泛采用的TCP/IP以太網的延遲達到數百微秒。因此網絡延遲的優化是影響大數據應用性能的關鍵因素之一。
3 基于內存的延遲優化技術
內存是計算機系統中處理器之外訪問延遲最小的部件,因此利用內存技術優化分布式系統數據訪問延遲是一個關鍵策略。以搜索引擎應用為例,典型的搜索引擎已經完全將網頁索引數據全部存儲在內存中,有的系統甚至把所有網頁快照都全部存儲在分布式服務器內存中[1]。
利用內存的訪問延遲優勢,基于內存的數據庫可以支持對數據進行實時處理。系統配置的內存越多,對數據的處理速度也就越快。計算機系統中不同部件的數據訪問速度如圖2所示。目前典型數據庫系統都支持多核處理器平臺,基于內存的數據庫技術,利用更多的內存資源,克服目前分布式系統服務延遲性能瓶頸。其中應用較多的典型內存數據庫有Memcached和Redis等。
Memcached是一個結構簡潔的高性能內存數據庫,常用于網絡應用以減輕數據訪問負載。它通過在內存中緩存數據來減少系統訪問次數,從而提高基于數據庫網絡應用的響應速度。未使用內存數據緩存時,大的數據記錄在進行讀寫訪問時需要較長時間響應,尤其是并發訪問頻繁時,嚴重影響系統性能。而Memcached通過使用簡單的鍵值對存儲訪問數據,可以較好地提高應用性能。與Memcached相似的Redis是一個采用hash結構來做鍵值對存儲的基于內存的NoSQL數據庫[5]。
4 基于內存數據庫元數據節點
大數據應用中元數據的查詢管理操作直接影響整個系統性能,因此利用基于內存技術的NoSQL數據庫管理元數據是一個較好的優化方法。
Memcached用作分布式內存數據緩存服務器,將鍵值數據對存儲于節點主內存中,其瓶頸在于需要處理存儲的鍵值數據對與后臺數據庫服務器之間的一致性,需要刷新緩存值以更新數據庫,因此需要對具體應用進行管理,增加了應用開發的復雜性。這類非關系型NoSQL數據庫以鍵值對方式存儲數據,每一個元組可以有不一樣的字段,結構不固定,可以根據需要增加一些鍵值數據對,不局限于固定結構,可以有效提高系統性能,但其后臺訪問速度[6]依然是瓶頸。
利用內存技術,特別是分布式系統中大量節點的內存存儲數據以優化訪問速度,可以有效提高系統性能,典型例子就是RAMCloud內存云技術。這是利用數據中心或集群系統的大量服務器的內存來存儲所有應用數據的存儲結構。傳統保存在磁盤上的所有數據都可以保存在RAMCloud內存存儲中。RAMCloud可提供比磁盤存儲低數百倍延遲和比磁盤存儲高近千倍的吞吐量。利用內存的訪存特點以及成熟的分布式系統技術,RAMCloud具有優異的性能體驗和良好的可擴展性,使之可以成為大數據應用中性能優化的關鍵技術。
RAMCloud的原理是基于分布式節點的內存提供一個通用的存儲系統,提供一個簡單易用的存儲模型,具有良好的擴展性。開發人員不需要采取特殊的方式對待RAMCloud數據存儲,原有應用程序不需要做架構上的改變就可以遷移到RAMCloud平臺。
基于分布式內存的RAMCloud的訪問延遲可低至微秒級別。這比傳統磁盤快近千倍,比基于半導體閃存器件的SSD要快數倍。RAMCloud的低延遲特性對于對響應要求苛刻的網絡應用和頻繁訪問數據為瓶頸的一些應用(例如高性能計算)來說極為重要。
4.1 RAMCloud模型
基于內存技術的RAMCloud的低延遲和可擴展屬性,便于大規模部署,消除了大數據應用所面臨的性能和擴展性問題,可以處理比目前多數百倍的數據。RAMCloud技術的可擴展性可以支持各個級別規模的應用,并可在小型應用擴展為大型應用時確保順利進行,不涉及額外的存儲結構?;赗AMCloud模型的應用系統框圖如圖3所示。
基于內存技術的RAMCloud代表存儲服務的一種新存儲模型。RAMCloud與傳統存儲系統的區別在于,首先所有應用數據在任何時候都存儲在構成RAMCloud存儲系統的分布式內存中;其次RAMCloud必須建立在一定數量的服務器上,并實現節點的出錯檢測和自動恢復。與傳統存儲系統一樣,存儲在RAMCloud系統的數據就像存儲在磁盤上那樣是持久的。單一節點的存儲出現故障后不會造成數據丟失或數據不可用的狀況。
與典型大數據應用結構一致,基于內存技術的分布式內存存儲系統也可以支持將計算遷移到數據節點,同時使用冗余請求進一步降低延遲。利用分布式內存存儲技術,在應用服務器上運行的進程訪問數據的延遲有可能降低到微秒級別,而基于傳統磁介質存儲系統通常為近毫秒級別。
4.2 分布式內存存儲分析
基于分布式內存技術的大數據應用新架構,傳統的架構是應用程序的代碼和本地局部數據被加載到計算機主存儲中,需要時訪問本地或遠程存儲節點。圖4顯示各種存儲方式下數據的訪問延遲。傳統應用的性能瓶頸是顯而易見的,不同數據的頻繁訪問操作、應用程序的并發訪問、規模大小都可能造成系統性能瓶頸。
基于分布式內存存儲技術代替傳統的存儲系統,采用基于輕量低功耗處理器的微服務器,將在線應用數據的主要存儲中心從傳統存儲遷移到分布式內存上,利用成熟的集群技術,構建可擴展的基于內存的存儲系統,利用Map/Reduce框架實現大數據應用。
基于內存技術的RAMCloud架構原理在于將所有應用的數據信息存儲在分布式內存上,并使用大量服務器構建可擴展的大型存儲系統。利用內存的訪存延遲極低的特性,存儲在內存上的數據的延遲要比存儲在基于傳統存儲系統上低近千倍,而吞吐量則會高數百倍。
大數據應用主要延遲來自數據訪問延遲,對處理器計算能力的需求遠低于處理器所能提供的性能。采用基于輕量低功耗處理器的微服務器,將應用數據從傳統存儲遷移到分布式內存上。內存存儲充分結合了內存的低延遲和集群的規?;瘍瀯?,保持應用可擴展性的同時降低了數據訪問延遲。這種基于分布式內存存儲的大數據可以同時實現大規模和低延遲的優勢,有效加速大數據應用。
參考文獻
[1] KAI H, GEOFFREY C F, JACK J D. Distributed and cloud computing: from parallel processing to the internet of things[M]. Massachusetts: Morgan Kaufmann Publishers, 2012.
[2] Jia Zhen, Wang Lei, Zhan Jianfeng, et al. Characterizing data analysis workloads in data centers[C]. In Workload Characterization (IISWC), 2013 IEEE International Symposium on. IEEE. 2013.
[3] 吳朱華. 云計算核心技術剖析[M]. 北京:人民郵電出版社,2011.
[4] 王鵬.云計算的關鍵技術與應用實例[M]. 北京:人民郵電出版社,2010.
[5] 曾超宇,李金香.Redis在高速緩存系統中的應用[J].微型機與應用, 2013,32(12):11-13.
[6] 張青鳳, 張鳳琴, 王磊.多數據中心的數據同步模型研究與設計[J]. 微型機與應用, 2013,32(12):60-62.