網路安全裝置聯動中小檔案儲存最佳化方法論文

網路安全裝置聯動中小檔案儲存最佳化方法論文

  摘要:網路系統在執行過程中會產生大量日誌,採用Java程式設計技術將各安全裝置日誌轉換為XML檔案。在對日誌檔案儲存過程中,現有的儲存系統硬體成本高,擴充套件能力差,資料並行訪問效率低,難以滿足網路安全裝置聯動系統的需求。因此,該文采用基於HDFS的雲端儲存系統對日誌檔案進行儲存。為了提高基於HDFS的雲端儲存系統中小檔案儲存效率,該文設計了雲端儲存系統中小檔案儲存的最佳化方案,主要在小檔案合併和小檔案檢索方面做了最佳化。該方案結合網路安全裝置聯動系統中日誌檔案的特點,首先是根據不同裝置的檔案進行分類,然後根據小檔案在合併後的大檔案中的偏移量進行檢索。最後採用3組檔案集合對最佳化方案進行了測試,實驗結果表明,在不影響儲存系統執行狀況的基礎上,該方案提高了小檔案的儲存效率和讀取效率。

  關鍵詞:網路安全;小檔案;Hadoop;儲存最佳化

  中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2015)35-0010-02

  1引言

  網路系統在執行過程中會產生大量的系統日誌、應用日誌、安全日誌和網路日誌,這些日誌包含著關於網路執行、安全及狀態的資料。隨著採集日誌的大規模增長,現有的儲存系統硬體成本高,擴充套件能力差,資料並行訪問效率低,難以滿足網路安全裝置聯動系統的需求。因此,提供一種更高效能、更低成本、更好可靠性的易於管理的儲存平臺,才能夠幫助該系統用盡可能低的成本應對日益增長的資料儲存需求。HDFS採用主從式架構設計模式(master/slave),一個名稱節點(NameNode)和若干資料節點(DataNode)構成HDFS叢集[1]。HDFS的這種單名稱節點的設計極大地簡化了檔案系統的結構,然而也因此引發了HDFS的小檔案儲存效率低的問題。HDFS設計之初的目的是儲存大量的大檔案,所以需要採用分塊策略先將每個檔案分塊,儲存機制是每個檔案都佔用一個或多個塊。因為HDFS中的每個目錄和檔案的元資料資訊都存放在名稱節點的記憶體中,如果系統中存在大量的小檔案(指那些比HDFS資料塊(預設為64MB)小得多的檔案),則無疑會降低整個儲存系統的儲存效率和儲存能力。然而,在網路安全裝置聯動系統[2]存在著大量的小檔案。大量的小檔案存在於雲端儲存系統中無疑會降低整個系統的I/O效能。針對這一問題,本文提出雲端儲存中小檔案的合併處理方法,以提高小檔案的儲存效率,提高整個系統的I/O效能。

  2整體方案最佳化設計

  檔案的最佳化方案主要包括4個部分:資料預儲存節點的功能設計,小檔案合併方案,小檔案索引結構的設計以及小檔案合併過程的整體設計。

  2.1資料預儲存節點功能設計

  資料預儲存節點是在HDFS架構的基礎上新增的節點,它位於客戶端與名稱節點和資料節點之間,主要實現對儲存的檔案進行預處理,根據檔案大小,判斷是否屬於小檔案,對於小檔案主要完成儲存前的合併,生成索引以及小檔案檢索時的檔案分離等功能。增加資料預儲存節點之後,在資料儲存的過程中,資料的流向由從客戶端直接到資料節點變成了由客戶端先到預儲存節點再到資料節點。

  2.2小檔案合併演算法設計

  當客戶端寫入小檔案時,首先根據小檔案的型別對資料預儲存節點進行分組。然後分別將每個分組中的小檔案合併成大檔案,此時,生成相關小檔案索引資訊及元資料資訊。最後將合併後的檔案和相關的元資料,按照原HDFS寫入檔案的方式一同上傳至HDFS中,其中第二類元資料資訊由資料預儲存節點進行儲存,第一類元資料資訊由名稱節點進行儲存,資料節點儲存合併成的大檔案[3]當客戶端需要讀取某個小檔案時,從名稱節點獲取小檔案所在大檔案的元資料資訊,然後從資料預儲存節點獲取第二類元資料資訊,從資料節點獲取小檔案所在的大檔案,並在介面中將大檔案解檔為若干小檔案,並將這些小檔案快取在客戶端。為了便於演算法描述,對演算法裡的符號進行定義:File[type][MD5][key]——緩衝區中待合併的檔案;type——日誌檔案的型別(1:主機日誌;2:sort日誌;3:防火牆日誌;4:交換機日誌);MD5——檔案的MD5值;fi——要合併的第i個檔案;xj——合併第j類檔案個數。分組合並演算法描述如下:(1)初始化,定義一個三維陣列File[type][MD5][key],type初始化為1,key值初始化為檔案的大小;(2)讀入緩衝區的所有檔案大小,更新陣列File[type][MD5][key],根據檔案的`型別更新陣列的type值,初始化i=1;(3)採用氣泡排序,分別將陣列File[i][MD5][key]從大到小進行排序。首先判斷File[i][MD5][key]的大小,如果所有檔案的總大小大於64M,開始進行合併,否則退出程式,i++,等待下次分組合並排程;(4)從最大的檔案fi開始分組。如果放入檔案fi後,此類檔案的總大小小於64M,則存放下一個檔案,從陣列中把檔案fi的記錄刪除,迴圈這個過程,直到所有的File[i][MD5][key]檔案都合併到一起;(5)計算每類檔案合併後的大小,檔案大小達到63M的呼叫HDFS命令將檔案上傳到HDFS上,大小小於63M的檔案,再從緩衝區中查詢檔案進行裝入,返回(2);(6)上傳成功;主要是考慮到使用者的訪問效率,演算法中採用將同類日誌檔案進行分組,無論從寫入小檔案,還是從讀取小檔案方面,都能大大提高HDFS的效能:首先減輕了名稱節點的負擔,在讀取小檔案方面,不用連線資料節點讀取,減少檔案讀寫的I/O操作,節約大量資料傳輸時間,極大地節省了網路通訊開銷,降低了HDFS的訪問壓力,提高客戶端訪問檔案的速率和效能。當用戶刪除資料時,把合併後的檔案取回資料預儲存節點,進行分解,刪除指定檔案,再與快取區中已有的檔案進行合併。使用者查詢檔案時,需要對HDFS索引進行查詢,同時也需要查詢緩衝區裡面的檔案。

  2.3小檔案索引結構的設計

  在小檔案合併之後,僅僅根據名稱節點中儲存的元資料資訊不能檢索到小檔案,為了提高檢索效率,需要為所有小檔案構建相應的索引,使使用者能夠透過索引快速的檢索到小檔案。小檔案索引資訊是在小檔案合併成大檔案之後生成的,儲存在資料預儲存節點中,透過此類元資料資訊,再結合名稱節點中的第一類元資料資訊,才能正確找到小檔案的儲存位置。所以小檔案的索引資訊對於後期的小檔案檢索極其重要,其中要包含小檔案的一些重要資訊:File_name型別為String,表示小檔名稱;File_size型別為int,表示小檔案大小;File_type型別為int,表示小檔案型別;Merge_file_nam型別為string,表示小檔案合併成大檔案後的名稱;File_offset型別為int,當前小檔案在合併檔案中的偏移量;time型別為long,表示檔案的寫入時間;If_use型別為bool,表示檔案是否存在。

  2.4小檔案合併過程的整體設計

  大致流程如下:當需要寫入檔案時,首先將資料傳輸到資料預儲存節點,判斷檔案大小,如果檔案大小超過了HDFS資料塊的大小,則直接存入資料節點,並將元資料資訊寫入到名稱節點;如果需要寫入的檔案屬於小檔案,則先判斷小檔案的型別,然後根據2.2中設計的小檔案合併演算法將小檔案合併,生成索引資訊,在這個合併的過程中,不斷地將正在合併的小檔案索引資訊插入到小檔案索引資訊列表中,當合並檔案塊達到合適的大小時,客戶端將寫檔案請求傳送到名稱節點將合併後的檔案儲存到相應的資料節點中。

  3實驗驗證

  實驗需要搭建Hadoop叢集,叢集中包括4個節點:一臺Na-meNode,二臺DataNode,以及客戶端用來提交資料的NameNode。使用VMware7.0來模擬Linux環境[4,5臺機器上模擬海量小檔案的儲存和訪問操作。本文隨機選取了10000個xml日誌資料檔案,檔案大小分佈情況為:200kB佔1%,300kB佔2%,400kB佔10%,500kB佔20%,600kB佔30%,700kB佔20%,800kB佔10%,900kB佔4%,1000kB佔3%,可見檔案大小集中在400kb到1000kb之間。為了直觀的反應最佳化方案在處理小檔案和大檔案時的系統性能,本文在測試資料中分別選取了100、1000、10000組資料,按照以上測試和執行程式步驟,對檔案寫入時間進行測試,測試結果如圖1所示。實驗結果表明,隨著檔案數量的增多,寫入檔案所用時間增長趨勢的變化緩慢,說明本文設計的Hadoop小檔案儲存最佳化方案在寫入海量小檔案時效能更高。

  4結論

  本文首先對網路安全裝置聯動系統的資料轉化為XML文件,然後對檔案的特點及檔案大小的分佈進行了分析。針對HDFS對小檔案儲存效率低的問題,對小檔案儲存方案進行了最佳化,設計了小檔案分組合並的演算法。最後搭建了Hadoop叢集環境,對改進的方案進行測試,實驗結果表明,本文設計的Hadoop小檔案儲存最佳化方案在寫入檔案所用時間增長趨勢的變化緩慢,說明本方案在寫入海量小檔案時具有很高的效能,在不影響儲存系統執行狀況的基礎上,該方案提高了小檔案的儲存效率和讀取效率。

  參考文獻:

  [1]廖彬,於炯,張陶,楊興耀.基於分散式檔案系統HDFS的節能演算法[J].計算機學報,2013(05):1047-1064.

  [2]傅穎勳,羅聖美,舒繼武.安全雲端儲存系統與關鍵技術綜述[J].計算機研究與發展,2013,50(1):136-145

  [3]DLTennenhouse,JMSmith,WDSincoskie,etal.ASurveyofActiveNetworksResearch[J].IEEECommunicationsMagazine,1997,35(l):80-86.

  [4]許春玲,張廣泉.分散式檔案系統HadoopHDFS與傳統檔案系統LinuxFS的比較與分析[J].蘇州大學學報(工科版),2010,04:5-9+19.

  [5]崔傑,李陶深,蘭紅星.基於Hadoop的海量資料儲存平臺設計與開發[J].計算機研究與發展,2012(S1):12-18.

最近訪問