韓鎮(zhèn)陽,張 磊,任 冬
(武警陜西省總隊,陜西 西安 710116)
大數據存儲架構是指在存儲、處理和分析大規(guī)模數據時所采用的技術架構。從廣義角度分析,大數據存儲架構是用于提取和處理海量數據并針對業(yè)務目的進行分析整理的整體系統(tǒng),可視作基于機構業(yè)務需求的大數據解決方案的藍圖[1]。大數據存儲架構通常包括以下幾個主要組成部分:數據存儲層、數據處理層、數據分析層和數據可視化層。隨著大數據時代的來臨,信息資源數據的體量越來越龐大,大數據存儲架構面臨著巨大的挑戰(zhàn)[2]。傳統(tǒng)的大數據存儲架構通常采用中央式存儲方式,這種方式在處理大規(guī)模數據時存在著很多局限性,例如可擴展性差、容錯能力低等問題[3]。為了應對挑戰(zhàn),研究者們提出了大數據存儲架構可擴展性優(yōu)化算法,對大數據存儲架構進行優(yōu)化,以提高其性能和可擴展性。當前,傳統(tǒng)的大數據存儲架構可擴展性優(yōu)化算法在實際應用中以批處理為主,缺乏實時的支撐。面對需要快速響應和處理的應用場景,如實時分析、實時推薦等,仍然存在缺陷,且對業(yè)務支撐的靈活度效果不佳[4]。
Kalman算法是一種優(yōu)秀的估計算法,它具有很好的自適應性和魯棒性,能夠對復雜系統(tǒng)進行準確的估計和預測[5]。在大數據存儲架構中,Kalman算法可以用于數據的優(yōu)化和預測,采用分布式存儲方式,通過將數據分散到多個節(jié)點上進行存儲和處理,提高數據的可擴展性和容錯能力,提高數據存儲和處理的效率。基于此,本文引入Kalman算法來開展大數據存儲架構可擴展性優(yōu)化算法研究。
內存布局對后續(xù)架構可擴展性優(yōu)化起到了至關重要的作用。首先,大數據存儲架構內存布局設計中,需要綜合考慮架構與多核環(huán)境內存布局之間的兼容性。本文設計的大數據存儲架構內存布局示意圖如圖1所示。

圖1 大數據存儲架構內存布局示意圖
47位地址以下部分均為用戶態(tài)地址空間,按照應用性能的不同,將其劃分為了7個不同的地址,其中,內存映射區(qū)域地址與堆地址之間的一段地址未被存儲架構使用,因此將其標記為內存空洞[6]。從大數據存儲架構配置文件中讀取相關的用戶配置信息,定義架構分布式共享內存的物理資源與協議[7]。其次,基于線程信息的地址段,存儲架構中所有線程的運行狀態(tài)信息(以及SNOP運行過程中產生的日志)提供大數據存儲架構運行所需的同步原語狀態(tài)信息,在不同機器上訪問堆和棧內存。
為提高架構的容錯性,在設計分布式共享內存協議前,需要設計內存協議本身所使用的庫名與代碼,避免協議運行中出現數據存儲無限遞歸現象。共享內存協議使用庫名及代碼如表1所示。

表1 分布式共享內存協議使用庫名及代碼
通過表1獲取到大數據存儲架構分布式共享內存協議本身所使用的庫,避免協議在機器同步過程中引發(fā)無限遞歸。在此基礎上,設計大數據存儲架構分布式共享內存協議,如表2所示。

表2 大數據存儲架構分布式共享內存協議
按照表2所示的協議權限對大數據存儲架構內存頁進行共享操作,展現協議的基本邏輯。基于同步操作機制,以確保各個進程在訪問共享內存時能夠正確地協同工作,即便節(jié)點發(fā)生故障仍然能夠正確地訪問和更新共享內存中的數據,提高大數據存儲架構的容錯性[8]。
在提高了大數據存儲架構容錯性的基礎上,利用Kalman算法對大數據存儲架構的可擴展性進行全方位的優(yōu)化。
首先,收集大數據存儲架構存儲節(jié)點的負載數據,包括CPU利用率、內存利用率、磁盤IO等。根據收集到的架構歷史數據,利用Kalman算法,建立存儲節(jié)點負載預測模型,對大數據存儲架構的參數與狀態(tài)作出估計[9]。Kalman算法是一種線性動態(tài)系統(tǒng)的最優(yōu)估計方法,其利用系統(tǒng)各時刻的測量值求得系統(tǒng)的狀態(tài)值,并不斷更新。Kalman算法主要由兩個步驟組成:預測步驟和更新步驟。
利用Kalman算法估計大數據存儲架構的參數與狀態(tài)的過程如下:
(1)定義系統(tǒng)模型。首先,定義一個用于描述存儲節(jié)點負載的系統(tǒng)模型,通常包含一些狀態(tài)變量,包括CPU利用率、內存利用率、磁盤IO等。
(2)初始化狀態(tài)估計和協方差矩陣。在開始循環(huán)之前,初始化狀態(tài)估計向量(即系統(tǒng)的初始狀態(tài))和協方差矩陣。其中,協方差矩陣用于描述系統(tǒng)狀態(tài)估計的誤差。
(3)預測。在每個時間步內,使用系統(tǒng)模型和當前狀態(tài)估計來預測下一個時間步的狀態(tài)。在大數據存儲架構中,這個步驟可能涉及對存儲節(jié)點負載的預測。預測狀態(tài)估計如下:
X(k+1|k)=F(k)×X(k|k)+G(k)×U(k)
(1)
其中,X(k+1|k)表示在k+1時間步內基于k時間步信息的預測狀態(tài),F(k)表示狀態(tài)轉移矩陣,G(k)表示控制矩陣,U(k)表示控制輸入。
(4)更新步驟。使用測量值(即實際負載)來更新對系統(tǒng)狀態(tài)的估計。這涉及將預測狀態(tài)與實際測量值進行比較,然后根據比較結果調整狀態(tài)估計。調整的幅度取決于測量誤差協方差矩陣和過程噪聲協方差矩陣。
更新狀態(tài)估計如下:
X(k+1|k+1)=
X(k+1|k)×(1-H(k+1))+K(k+1)×Z(k+1)
(2)
更新協方差矩陣如下:
P(k+1|k+1)=(I-K(k+1)×H(k+1))×P(k+1|k)
(3)
其中,H(k)、Q(k)、K(k)均表示系統(tǒng)模型和噪聲模型的參數,Z(k)表示測量值,P(k+1|k+1)和P(k+1|k)表示協方差矩陣,I表示單位矩陣。
(5)循環(huán)執(zhí)行。在每個時間步重復執(zhí)行預測步驟和更新步驟,直到得到最優(yōu)估計值。
根據最優(yōu)估計值,衡量Kalman算法估計結果的好壞程度,估計值與實際值越接近越好,利用該值代替大數據存儲架構的實際值[10]。在此基礎上,提取與大數據存儲結構存儲節(jié)點負載相關的特征,描述存儲節(jié)點負載的變化規(guī)律和趨勢。根據Kalman算法預測結果,對存儲節(jié)點的負載進行動態(tài)調整,以實現負載均衡。若發(fā)現負載不均或者出現其他問題,及時進行干預和處理。基于存儲節(jié)點負載動態(tài)調整結果,對大數據存儲架構進行優(yōu)化,以提高其可擴展性。優(yōu)化中包括增加架構存儲節(jié)點、優(yōu)化數據存儲策略、改進數據處理流程等。定期重復以上步驟,以實現大數據存儲架構的可擴展性持續(xù)優(yōu)化。
為了驗證上述提出的基于Kalman算法的大數據存儲架構可擴展性優(yōu)化算法的可行性及可擴展性優(yōu)化效果,開展了如下實驗測試分析。
首先,基于該算法的運行需求及運行特征,創(chuàng)建實驗所需的測試環(huán)境。實驗環(huán)境配置如表3所示。

表3 大數據存儲架構可擴展性優(yōu)化算法實驗環(huán)境配置
服務器節(jié)點之間通過以太網交換機連接,形成一個星型拓撲結構,服務器節(jié)點與交換機之間的網絡連接采用雙絞線或光纖連接,以確保數據傳輸的穩(wěn)定性和可靠性。創(chuàng)建好優(yōu)化算法實驗測試環(huán)境后,選取實驗所需的工具,包括數據預處理工具與數據可視化工具兩種。其中,數據預處理工具采用Python Pandas庫;數據可視化工具采用Matplotlib。完成實驗測試準備后,應用上述本文提出的基于Kalman算法的大數據存儲架構可擴展性優(yōu)化算法,在進行實驗之前,確保所有設備和軟件都已正確安裝和配置后,開展實驗測試分析。
完成以上實驗測試準備后,接下來,對大數據存儲架構可擴展性優(yōu)化結果作出全方位、多維度的分析。使用公開可用的ImageNet數據集,該數據集是一個寶貴的大數據資源,包含了超過1 400萬的圖像,涵蓋了2萬多個類別。
為了增強可擴展性優(yōu)化結果的說服力,將上述基于Kalman算法的大數據存儲架構可擴展性優(yōu)化算法設置為實驗組,將文獻[1]中提出的基于分布K-means算法的可擴展性優(yōu)化算法、文獻[2]中提出的基于ARM架構的均衡計算型服務器數據存儲系統(tǒng)優(yōu)化算法分別設置為對照組1與對照組2,以對比分析的形式,判斷本文提出的算法是否可行。
三種優(yōu)化算法的大數據處理流程為:將大數據集內的海量數據分散到4個配置相同的高性能服務器上,以分散的方式進行處理,使用三種優(yōu)化算法對應的數據處理模式,對大數據進行分析和計算。
選取大數據存儲架構可擴展性優(yōu)化后的資源利用率作為此次實驗測試的評價指標,其計算公式如下所示:
(4)
其中,MP表示大數據存儲架構運行過程中實際使用的資源量;M表示大數據存儲架構運行過程中所能使用的最大資源總量。大數據架構資源利用率越高,說明系統(tǒng)對服務器資源的利用越充分,可擴展性能越好,能夠更加高效地處理大規(guī)模數據,反之同理。
為避免實驗測試結果存在偶然性,進行了6組實驗,將6組實驗分別標號為A~F。測定三種優(yōu)化算法應用后大數據存儲架構資源利用率并作出客觀對比,結果如圖2所示。

圖2 大數據存儲架構資源利用率對比結果
在6組實驗測試中,應用本文提出的基于Kalman算法的大數據存儲架構可擴展性優(yōu)化算法后,大數據存儲架構的資源利用率始終高于另外兩種算法,均達到了96%以上,最高達到了98%,這意味著大數據存儲架構在處理或管理數據方面效率更高,能夠處理更多的工作負載。由此可知,本文提出的優(yōu)化算法具有較高的可行性,架構可擴展性優(yōu)化效果優(yōu)勢顯著,對服務器資源的利用更加充分,能夠更高效地處理大規(guī)模數據。
產生上述結果主要有如下三點原因:
(1)優(yōu)化內存布局:本文算法綜合考慮了大數據存儲架構與多核環(huán)境內存布局之間的兼容性,通過合理設計架構內存布局,可以更好地滿足多核環(huán)境下的數據存儲和訪問需求,從而提高了內存利用率。
(2)設計分布式共享內存協議:本文算法設計了一種分布式共享內存協議,確保各個進程在訪問共享內存時能夠正確地協同工作,避免了沖突和數據不一致性問題,提高了存儲架構的容錯性和整體性能。
(3)動態(tài)調整存儲節(jié)點負載:利用Kalman算法可以動態(tài)地調整存儲節(jié)點的負載,根據實際需求和系統(tǒng)狀態(tài)來合理分配存儲資源,避免了資源浪費和資源瓶頸的產生,進一步提高了資源利用率和系統(tǒng)性能。
本文通過引入優(yōu)秀的Kalman算法,有效地提高了大數據存儲架構的性能和可擴展性。該優(yōu)化算法利用Kalman算法的自適應性和魯棒性,對海量大數據進行優(yōu)化和預測,提高了數據處理的效率和準確性。同時,采用分布式存儲方式,將數據分散到多個節(jié)點上進行存儲和處理,提高了數據的可擴展性和容錯能力。該算法的研究和應用,為大數據存儲和處理領域的發(fā)展提供了新的思路和方法,具有較為重要的理論意義和實踐價值。