《電子技術應用》
您所在的位置:首頁 > 通信與網(wǎng)絡 > 設計應用 > 大數(shù)據(jù)負載特性及基于內(nèi)存技術的優(yōu)化
大數(shù)據(jù)負載特性及基于內(nèi)存技術的優(yōu)化
來源:微型機與應用2014年第2期
劉根賢
(清華大學 計算機科學與技術系,北京100084)
摘要: 涌現(xiàn)于社交網(wǎng)絡、電子商務中的超大規(guī)模非結構化數(shù)據(jù)標志著大數(shù)據(jù)時代的到來。大數(shù)據(jù)的多樣性、超大規(guī)模和可擴展性等特征對運行平臺產(chǎn)生新的要求。隨著大數(shù)據(jù)的產(chǎn)生和發(fā)展,形成了具有代表性的信息體系結構,包括編程模型、虛擬化和分布式文件系統(tǒng)等。隨著對大數(shù)據(jù)研究的深入,通過對大數(shù)據(jù)負載特性的分析,發(fā)現(xiàn)制約大數(shù)據(jù)的并不是計算能力,而是I/O延遲,采用基于內(nèi)存的分布式文件系統(tǒng),用于存儲和處理大規(guī)模分布式文件系統(tǒng)查詢的索引,可以有效降低I/O延遲,提高應用性能。
Abstract:
Key words :

摘  要: 涌現(xiàn)于社交網(wǎng)絡、電子商務中的超大規(guī)模非結構化數(shù)據(jù)標志著大數(shù)據(jù)時代的到來。大數(shù)據(jù)的多樣性、超大規(guī)模和可擴展性等特征對運行平臺產(chǎn)生新的要求。隨著大數(shù)據(jù)的產(chǎn)生和發(fā)展,形成了具有代表性的信息體系結構,包括編程模型、虛擬化和分布式文件系統(tǒng)等。隨著對大數(shù)據(jù)研究的深入,通過對大數(shù)據(jù)負載特性的分析,發(fā)現(xiàn)制約大數(shù)據(jù)的并不是計算能力,而是I/O延遲,采用基于內(nèi)存的分布式文件系統(tǒng),用于存儲和處理大規(guī)模分布式文件系統(tǒng)查詢的索引,可以有效降低I/O延遲,提高應用性能。
關鍵詞: 大數(shù)據(jù);負載特征;內(nèi)存系統(tǒng);系統(tǒng)結構

    隨著電子技術的發(fā)展,計算成本降低,內(nèi)存容量增加,大部分平臺都可以用于高性能計算,可以處理比以往更多的數(shù)據(jù)信息,此外大規(guī)模集群技術的成熟,促成了多樣性、超大規(guī)模和可擴展的多種典型應用,即大數(shù)據(jù)應用。大數(shù)據(jù)是一種數(shù)據(jù)分析技術,用于從超大規(guī)模的多源信息中快速獲得有價值數(shù)據(jù)[1]。
    在大數(shù)據(jù)應用的發(fā)展進程中,逐步形成了典型信息處理架構。硬件架構而言,其為大規(guī)??蓴U展但不穩(wěn)定的運算和存儲基礎設施;軟件架構而言,其涵蓋虛擬化、分布式數(shù)據(jù)庫系統(tǒng)、數(shù)據(jù)挖掘和機器學習等。
    隨著大數(shù)據(jù)應用的擴展,對其研究的深入,提出了一些更有效的方法,這里基于大數(shù)據(jù)負載特性,分析以傳統(tǒng)用于計算的內(nèi)存作為存儲介質(zhì),以加速制約大數(shù)據(jù)應用性能的延遲問題[2]。
1 大數(shù)據(jù)應用典型架構
    以大數(shù)據(jù)應用為典型架構,從開發(fā)搜索引擎的需要出發(fā),Google提出了Map/Reduce架構,此后開源社區(qū)根據(jù)該思想實現(xiàn)了Hadoop系統(tǒng),并得到廣泛應用,使得大數(shù)據(jù)研究迅速成為熱點。
 大數(shù)據(jù)應用與高性能計算有典型區(qū)別,大數(shù)據(jù)應用中基礎節(jié)點失效是正常的,運算向存儲節(jié)點遷移,非結構化文件的操作被優(yōu)化為追加操作。大數(shù)據(jù)典型結構如圖1所示,在底層服務器節(jié)點之上是由存儲文件系統(tǒng)元數(shù)據(jù)的主節(jié)點和存儲文件實際數(shù)據(jù)的子節(jié)點組成的GFS或HDFS之類的分布式文件系統(tǒng)[3]。文件系統(tǒng)之上是分布式數(shù)據(jù)庫系統(tǒng),代表性的有BigTable和Hbase。數(shù)據(jù)庫節(jié)點同樣也分為兩類:Master節(jié)點管理元數(shù)據(jù)并處理客戶端元數(shù)據(jù)請求,Tablet節(jié)點存儲數(shù)據(jù)并處理數(shù)據(jù)請求。

    開源分布式文件系統(tǒng)HDFS由大量普通計算機組成,任何時候任何節(jié)點都有可能出現(xiàn)故障,因此在HDFS的核心架構設計時,基礎節(jié)點的出錯檢測和自動恢復是關鍵目標之一。HDFS系統(tǒng)采用主/從架構,包括目錄服務器節(jié)點和數(shù)據(jù)節(jié)點。系統(tǒng)中文件實際上劃分為數(shù)據(jù)塊冗余存儲在多個數(shù)據(jù)節(jié)點里,數(shù)據(jù)節(jié)點在目錄節(jié)點的控制下執(zhí)行文件數(shù)據(jù)塊的操作,存儲管理本節(jié)點上的文件數(shù)據(jù)塊。目錄節(jié)點執(zhí)行文件系統(tǒng)的目錄空間操作,同時決定文件數(shù)據(jù)塊到具體數(shù)據(jù)節(jié)點的映射,目錄節(jié)點管理文件系統(tǒng)的目錄和客戶端對文件數(shù)據(jù)的訪問。
    HDFS系統(tǒng)中分布式文件系統(tǒng)之上是數(shù)據(jù)庫系統(tǒng)。利用數(shù)據(jù)庫系統(tǒng),用戶可以按照類似數(shù)據(jù)庫范式進行數(shù)據(jù)處理。大數(shù)據(jù)應用中為非結構化數(shù)據(jù),即NoSQL數(shù)據(jù)庫系統(tǒng),它支持簡單查詢操作,而將復雜查詢交給應用層處理(例如基于Map/Reduce框架實現(xiàn)大規(guī)模數(shù)據(jù)分析)。BigTable和Hbase數(shù)據(jù)庫是典型的主/從結構的鍵/值存儲NoSQL數(shù)據(jù)庫系統(tǒng)。
    HDFS系統(tǒng)結構中的頂層即為大數(shù)據(jù)應用,典型的應用例如搜索引擎和社交網(wǎng)絡等。其中許多大數(shù)據(jù)應用將Hadoop系統(tǒng)當作數(shù)據(jù)存儲設施,在此存儲設施上進一步挖掘獲取或分析其中的有價值信息[4]。
2 大數(shù)據(jù)負載特征
 基于分布式文件系統(tǒng)以及其上的分布式數(shù)據(jù)庫系統(tǒng)的大數(shù)據(jù)應用,隨著應用規(guī)模的擴大,分布式系統(tǒng)中數(shù)據(jù)訪問延遲將極大地影響應用的性能體驗。Map/Reduce架構通過將計算遷移到數(shù)據(jù)節(jié)點,同時使用冗余請求有效降低延遲。盡管如此,大數(shù)據(jù)應用的訪問延遲仍然占到較大比例,其中最大負擔是硬盤訪問延遲,因此系統(tǒng)發(fā)展趨向于使用SSD硬盤替換磁介質(zhì)硬盤,并將頻繁隨機訪問的數(shù)據(jù)都放到節(jié)點各自內(nèi)存中,而將順序操作數(shù)據(jù)存儲到硬盤。
 網(wǎng)絡延遲對分布式系統(tǒng)的影響也是一個關鍵問題。在高性能計算架構中采用InfiniBand、Myrinet和Arista等高性能互聯(lián)技術可實現(xiàn)跨數(shù)據(jù)中心微秒級延遲通信,而大數(shù)據(jù)應用中服務器節(jié)點之間廣泛采用的TCP/IP以太網(wǎng)的延遲達到數(shù)百微秒。因此網(wǎng)絡延遲的優(yōu)化是影響大數(shù)據(jù)應用性能的關鍵因素之一。
3 基于內(nèi)存的延遲優(yōu)化技術
    內(nèi)存是計算機系統(tǒng)中處理器之外訪問延遲最小的部件,因此利用內(nèi)存技術優(yōu)化分布式系統(tǒng)數(shù)據(jù)訪問延遲是一個關鍵策略。以搜索引擎應用為例,典型的搜索引擎已經(jīng)完全將網(wǎng)頁索引數(shù)據(jù)全部存儲在內(nèi)存中,有的系統(tǒng)甚至把所有網(wǎng)頁快照都全部存儲在分布式服務器內(nèi)存中[1]。
    利用內(nèi)存的訪問延遲優(yōu)勢,基于內(nèi)存的數(shù)據(jù)庫可以支持對數(shù)據(jù)進行實時處理。系統(tǒng)配置的內(nèi)存越多,對數(shù)據(jù)的處理速度也就越快。計算機系統(tǒng)中不同部件的數(shù)據(jù)訪問速度如圖2所示。目前典型數(shù)據(jù)庫系統(tǒng)都支持多核處理器平臺,基于內(nèi)存的數(shù)據(jù)庫技術,利用更多的內(nèi)存資源,克服目前分布式系統(tǒng)服務延遲性能瓶頸。其中應用較多的典型內(nèi)存數(shù)據(jù)庫有Memcached和Redis等。

    Memcached是一個結構簡潔的高性能內(nèi)存數(shù)據(jù)庫,常用于網(wǎng)絡應用以減輕數(shù)據(jù)訪問負載。它通過在內(nèi)存中緩存數(shù)據(jù)來減少系統(tǒng)訪問次數(shù),從而提高基于數(shù)據(jù)庫網(wǎng)絡應用的響應速度。未使用內(nèi)存數(shù)據(jù)緩存時,大的數(shù)據(jù)記錄在進行讀寫訪問時需要較長時間響應,尤其是并發(fā)訪問頻繁時,嚴重影響系統(tǒng)性能。而Memcached通過使用簡單的鍵值對存儲訪問數(shù)據(jù),可以較好地提高應用性能。與Memcached相似的Redis是一個采用hash結構來做鍵值對存儲的基于內(nèi)存的NoSQL數(shù)據(jù)庫[5]。
4 基于內(nèi)存數(shù)據(jù)庫元數(shù)據(jù)節(jié)點
    大數(shù)據(jù)應用中元數(shù)據(jù)的查詢管理操作直接影響整個系統(tǒng)性能,因此利用基于內(nèi)存技術的NoSQL數(shù)據(jù)庫管理元數(shù)據(jù)是一個較好的優(yōu)化方法。
    Memcached用作分布式內(nèi)存數(shù)據(jù)緩存服務器,將鍵值數(shù)據(jù)對存儲于節(jié)點主內(nèi)存中,其瓶頸在于需要處理存儲的鍵值數(shù)據(jù)對與后臺數(shù)據(jù)庫服務器之間的一致性,需要刷新緩存值以更新數(shù)據(jù)庫,因此需要對具體應用進行管理,增加了應用開發(fā)的復雜性。這類非關系型NoSQL數(shù)據(jù)庫以鍵值對方式存儲數(shù)據(jù),每一個元組可以有不一樣的字段,結構不固定,可以根據(jù)需要增加一些鍵值數(shù)據(jù)對,不局限于固定結構,可以有效提高系統(tǒng)性能,但其后臺訪問速度[6]依然是瓶頸。
    利用內(nèi)存技術,特別是分布式系統(tǒng)中大量節(jié)點的內(nèi)存存儲數(shù)據(jù)以優(yōu)化訪問速度,可以有效提高系統(tǒng)性能,典型例子就是RAMCloud內(nèi)存云技術。這是利用數(shù)據(jù)中心或集群系統(tǒng)的大量服務器的內(nèi)存來存儲所有應用數(shù)據(jù)的存儲結構。傳統(tǒng)保存在磁盤上的所有數(shù)據(jù)都可以保存在RAMCloud內(nèi)存存儲中。RAMCloud可提供比磁盤存儲低數(shù)百倍延遲和比磁盤存儲高近千倍的吞吐量。利用內(nèi)存的訪存特點以及成熟的分布式系統(tǒng)技術,RAMCloud具有優(yōu)異的性能體驗和良好的可擴展性,使之可以成為大數(shù)據(jù)應用中性能優(yōu)化的關鍵技術。
    RAMCloud的原理是基于分布式節(jié)點的內(nèi)存提供一個通用的存儲系統(tǒng),提供一個簡單易用的存儲模型,具有良好的擴展性。開發(fā)人員不需要采取特殊的方式對待RAMCloud數(shù)據(jù)存儲,原有應用程序不需要做架構上的改變就可以遷移到RAMCloud平臺。
    基于分布式內(nèi)存的RAMCloud的訪問延遲可低至微秒級別。這比傳統(tǒng)磁盤快近千倍,比基于半導體閃存器件的SSD要快數(shù)倍。RAMCloud的低延遲特性對于對響應要求苛刻的網(wǎng)絡應用和頻繁訪問數(shù)據(jù)為瓶頸的一些應用(例如高性能計算)來說極為重要。
4.1 RAMCloud模型
    基于內(nèi)存技術的RAMCloud的低延遲和可擴展屬性,便于大規(guī)模部署,消除了大數(shù)據(jù)應用所面臨的性能和擴展性問題,可以處理比目前多數(shù)百倍的數(shù)據(jù)。RAMCloud技術的可擴展性可以支持各個級別規(guī)模的應用,并可在小型應用擴展為大型應用時確保順利進行,不涉及額外的存儲結構。基于RAMCloud模型的應用系統(tǒng)框圖如圖3所示。

 

 

    基于內(nèi)存技術的RAMCloud代表存儲服務的一種新存儲模型。RAMCloud與傳統(tǒng)存儲系統(tǒng)的區(qū)別在于,首先所有應用數(shù)據(jù)在任何時候都存儲在構成RAMCloud存儲系統(tǒng)的分布式內(nèi)存中;其次RAMCloud必須建立在一定數(shù)量的服務器上,并實現(xiàn)節(jié)點的出錯檢測和自動恢復。與傳統(tǒng)存儲系統(tǒng)一樣,存儲在RAMCloud系統(tǒng)的數(shù)據(jù)就像存儲在磁盤上那樣是持久的。單一節(jié)點的存儲出現(xiàn)故障后不會造成數(shù)據(jù)丟失或數(shù)據(jù)不可用的狀況。
      與典型大數(shù)據(jù)應用結構一致,基于內(nèi)存技術的分布式內(nèi)存存儲系統(tǒng)也可以支持將計算遷移到數(shù)據(jù)節(jié)點,同時使用冗余請求進一步降低延遲。利用分布式內(nèi)存存儲技術,在應用服務器上運行的進程訪問數(shù)據(jù)的延遲有可能降低到微秒級別,而基于傳統(tǒng)磁介質(zhì)存儲系統(tǒng)通常為近毫秒級別。
4.2 分布式內(nèi)存存儲分析
     基于分布式內(nèi)存技術的大數(shù)據(jù)應用新架構,傳統(tǒng)的架構是應用程序的代碼和本地局部數(shù)據(jù)被加載到計算機主存儲中,需要時訪問本地或遠程存儲節(jié)點。圖4顯示各種存儲方式下數(shù)據(jù)的訪問延遲。傳統(tǒng)應用的性能瓶頸是顯而易見的,不同數(shù)據(jù)的頻繁訪問操作、應用程序的并發(fā)訪問、規(guī)模大小都可能造成系統(tǒng)性能瓶頸。
     基于分布式內(nèi)存存儲技術代替?zhèn)鹘y(tǒng)的存儲系統(tǒng),采用基于輕量低功耗處理器的微服務器,將在線應用數(shù)據(jù)的主要存儲中心從傳統(tǒng)存儲遷移到分布式內(nèi)存上,利用成熟的集群技術,構建可擴展的基于內(nèi)存的存儲系統(tǒng),利用Map/Reduce框架實現(xiàn)大數(shù)據(jù)應用。

    基于內(nèi)存技術的RAMCloud架構原理在于將所有應用的數(shù)據(jù)信息存儲在分布式內(nèi)存上,并使用大量服務器構建可擴展的大型存儲系統(tǒng)。利用內(nèi)存的訪存延遲極低的特性,存儲在內(nèi)存上的數(shù)據(jù)的延遲要比存儲在基于傳統(tǒng)存儲系統(tǒng)上低近千倍,而吞吐量則會高數(shù)百倍。
    大數(shù)據(jù)應用主要延遲來自數(shù)據(jù)訪問延遲,對處理器計算能力的需求遠低于處理器所能提供的性能。采用基于輕量低功耗處理器的微服務器,將應用數(shù)據(jù)從傳統(tǒng)存儲遷移到分布式內(nèi)存上。內(nèi)存存儲充分結合了內(nèi)存的低延遲和集群的規(guī)?;瘍?yōu)勢,保持應用可擴展性的同時降低了數(shù)據(jù)訪問延遲。這種基于分布式內(nèi)存存儲的大數(shù)據(jù)可以同時實現(xiàn)大規(guī)模和低延遲的優(yōu)勢,有效加速大數(shù)據(jù)應用。
參考文獻
[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在高速緩存系統(tǒng)中的應用[J].微型機與應用, 2013,32(12):11-13.
[6] 張青鳳, 張鳳琴, 王磊.多數(shù)據(jù)中心的數(shù)據(jù)同步模型研究與設計[J]. 微型機與應用, 2013,32(12):60-62.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉載。