夏秀峰,王 濤
(沈陽航空航天大學(xué) a.遼寧省通用航空重點實驗室;b.計算機學(xué)院,沈陽 110136)
?
私有云環(huán)境下基于HDFS的PDM數(shù)據(jù)備份策略
夏秀峰a,b,王 濤b
(沈陽航空航天大學(xué) a.遼寧省通用航空重點實驗室;b.計算機學(xué)院,沈陽 110136)
企業(yè)“大數(shù)據(jù)”時代的到來,以及集中式存儲、訪問和維護大數(shù)據(jù)帶來的困難,兼顧企業(yè)數(shù)據(jù)涉密性的實際需求,使得企業(yè)利用私有云來存儲PDM數(shù)據(jù)成為必然趨勢,而如何備份企業(yè)私有云中的海量數(shù)據(jù)也成為一個新的問題。以Hadoop分布式文件系統(tǒng)HDFS為企業(yè)數(shù)據(jù)存儲平臺,提出了一種集中式的數(shù)據(jù)塊級增量備份策略,詳細描述了備份系統(tǒng)的體系結(jié)構(gòu)、相關(guān)概念定義及備份分組算法。該策略能夠解決系統(tǒng)故障、人為誤操作、存儲介質(zhì)故障等原因?qū)е碌钠髽I(yè)PDM數(shù)據(jù)丟失的問題。實驗結(jié)果表明,分組算法通過充分利用網(wǎng)絡(luò)帶寬,實現(xiàn)了數(shù)據(jù)的高效備份。
PDM數(shù)據(jù);企業(yè)私有云;HDFS;備份策略
作為裝備制造企業(yè)數(shù)據(jù)管理的核心系統(tǒng),產(chǎn)品數(shù)據(jù)管理(Product Data Management,PDM)是管理所有與產(chǎn)品相關(guān)的信息和過程的軟件,其主要功能包括產(chǎn)品文檔管理、產(chǎn)品結(jié)構(gòu)管理和工作流管理等[1]。企業(yè)“大數(shù)據(jù)”時代的到來,以及集中式存儲、訪問和維護大數(shù)據(jù)帶來的困難,兼顧企業(yè)數(shù)據(jù)涉密性的實際需求,利用企業(yè)私有云存儲PDM數(shù)據(jù)將是必然趨勢。例如,2010年李伯虎等人在文獻[2-3]中提出了云制造的概念,其作為一種基于知識、面向服務(wù)、高效低碳的網(wǎng)絡(luò)化智能制造新模式,強調(diào)產(chǎn)品全生命周期中各類制造資源的整合與高度共享。
企業(yè)私有云存儲利用云計算、大數(shù)據(jù)管理等多項技術(shù)充分整合企業(yè)已有資源,可以有效解決海量數(shù)據(jù)存儲訪問、高并發(fā)、高擴展等問題,能有效降低存儲成本,減少PDM系統(tǒng)的實施周期,提高生產(chǎn)效率[4]。存儲在私有云中的PDM數(shù)據(jù),由于人為誤操作、存儲介質(zhì)損壞、軟件錯誤、自然災(zāi)害等多種因素導(dǎo)致重要數(shù)據(jù)的丟失,會給企業(yè)帶來無法彌補的損失。作為一種數(shù)據(jù)安全策略,備份是避免數(shù)據(jù)丟失的最基本方法[5]。
在傳統(tǒng)的集中式環(huán)境下,要實現(xiàn)文件系統(tǒng)中PDM物理文檔數(shù)據(jù)的增量備份,所花費的查詢時間代價、PDM文檔簽出對比的時間代價很大。因此,現(xiàn)在大多數(shù)大型制造企業(yè)只能采用一周一次的完全備份策略,這樣的備份策略不僅時間粒度大,而且備份時間特別長。在企業(yè)私有云環(huán)境下,PDM數(shù)據(jù)的備份問題迄今為止未見相關(guān)研究成果。
本文以Hadoop[6-7]分布式文件系統(tǒng)HDFS(Hadoop Distributed File System)[8]作為私有云存儲平臺,研究PDM數(shù)據(jù)備份的策略。根據(jù)HDFS一次寫入、多次讀取、不支持在已上傳文件的任意位置進行修改等特點,快速準確定位到一日內(nèi)更新過的文件,進而提出一種以日為粒度的增量備份方案。
近幾年,國內(nèi)制造型企業(yè)經(jīng)過多年的積累、產(chǎn)品型號數(shù)量的不斷增加、“構(gòu)型”機制的逐步實施,以及MBD/MBE[9]概念的提出和應(yīng)用,使存儲在PDM中的數(shù)據(jù)越來越多,逐步呈現(xiàn)出“大數(shù)據(jù)”特征,使存儲與處理成本不斷增加、并發(fā)性和訪問速度逐步下降、備份時間越來越長。
如何解決制造型企業(yè)海量MBD數(shù)據(jù)的存儲和共享問題,是企業(yè)由制造向智造轉(zhuǎn)型的重要研究內(nèi)容之一[10-12]。因此,為解決制造型企業(yè)面臨的大數(shù)據(jù)存儲問題,兼顧企業(yè)高度保密性,私有云存儲[13]是個很好的解決方案。文獻[2]中提出基于企業(yè)私有云的PDM系統(tǒng)架構(gòu)可采用四層結(jié)構(gòu)模型:基礎(chǔ)設(shè)備層、存儲管理層、應(yīng)用接口層和訪問層,如圖1所示。
圖1 私有云存儲四層結(jié)構(gòu)模型
在上述基于企業(yè)私有云的PDM系統(tǒng)結(jié)構(gòu)的基礎(chǔ)上,本文以Hadoop分布式文件系統(tǒng)HDFS作為私有云存儲平臺,體系架構(gòu)如圖2所示[14]。
圖2 HDFS架構(gòu)圖
HDFS集群包含一個Namenode節(jié)點和多個datanode節(jié)點??蛻舳?c1ient)通過與Namenode和Datanode交互來訪問整個文件系統(tǒng)。HDFS在讀取一個文件時默認的算法是采用順序讀取方式,具體過程為:客戶端向Namenode節(jié)點申請讀操作,Namenode通過申請后會向客戶端返回一個包含文件所有數(shù)據(jù)塊信息的鏈表,客戶端按鏈表順序選擇合適的數(shù)據(jù)節(jié)點,進行與數(shù)據(jù)節(jié)點的連接和數(shù)據(jù)塊的讀取。當(dāng)一個數(shù)據(jù)塊讀取完成后,客戶端關(guān)閉與該數(shù)據(jù)節(jié)點的連接,并為下一個數(shù)據(jù)庫選擇數(shù)據(jù)節(jié)點,直到所有數(shù)據(jù)塊都讀取完成。
本文提出的以日為時間粒度(備份時間粒度是指兩次備份之間的時間間隔)的備份方案采用的是以一周為周期,周一到周六進行增量備份,周日做一次全備份。而要實現(xiàn)以日為時間粒度的增量備份,則需要查找到當(dāng)日HDFS中新建的文件和更新后重新上傳或者修改過屬性的文件。要完成文件的備份,則需要獲取文件在HDFS中的元信息,包括:文件名稱、文件最后修改時間、文件大小、文件源路徑、組成文件的數(shù)據(jù)塊ID、數(shù)據(jù)塊(包括副本)所在的節(jié)點信息。
同時,我們把上述元信息中的文件名稱、文件大小、最后修改時間、文件源路徑作為文件的備份元數(shù)據(jù),并把這些元數(shù)據(jù)信息以數(shù)據(jù)庫的方式進行組織,以便恢復(fù)時快速查詢。對于HDFS而言,只要能夠備份出系統(tǒng)的文件目錄樹和具體的文件,配合文件的備份元數(shù)據(jù)信息就可以實現(xiàn)數(shù)據(jù)的恢復(fù)。
2.1 體系結(jié)構(gòu)
目前,常用的集中式備份系統(tǒng)體系結(jié)構(gòu)有:Host-based、LAN-Based和基于存儲區(qū)域網(wǎng)SAN(Storage area network)的LAN-Free等多種結(jié)構(gòu)[15]。Host-Based是傳統(tǒng)的數(shù)據(jù)備份結(jié)構(gòu),已經(jīng)不適合現(xiàn)在大型企業(yè)的數(shù)據(jù)備份要求;LAN-Based備份結(jié)構(gòu)的優(yōu)點是節(jié)省投資、磁帶庫共享、集中備份管理,而缺點在于對網(wǎng)絡(luò)傳輸壓力大。LAN-Free備份結(jié)構(gòu)徹底解決了LAN-Based方式占用網(wǎng)絡(luò)帶寬的問題,但是其成本高、難度大、恢復(fù)能力弱,且只能針對于SAN這一特定的存儲架構(gòu)。
考慮到LAN-Free的缺點,并且由于實行冷備份,網(wǎng)絡(luò)帶寬資源全部用于備份,LAN-Based方式中網(wǎng)絡(luò)傳輸壓力大的問題也將不存在,因此采用LAN-Based的集中式備份體系架構(gòu)。其體系架構(gòu)如圖3所示。
圖3 數(shù)據(jù)備份體系結(jié)構(gòu)
整個系統(tǒng)分為三部分:名字節(jié)點Namenode、數(shù)據(jù)節(jié)點Datenode和備份服務(wù)器Back server。各部分的功能如下:
Namenode保存文件存儲系統(tǒng)中所有文件的相關(guān)信息、管理文件元數(shù)據(jù)、負責(zé)管理和協(xié)調(diào)各個Datenode。但Namenode不負責(zé)存儲文件,也不負責(zé)具體的文件上傳下載工作,這樣就大大減輕了Namenode的負擔(dān),避免Namenode成為系統(tǒng)的瓶頸。
Datenode是文件存儲的基本單元,以數(shù)據(jù)塊的形式保存著HDFS中文件的內(nèi)容和數(shù)據(jù)塊的校驗信息。備份恢復(fù)工程中,直接與備份服務(wù)器建立數(shù)據(jù)上傳和下載鏈接。
Backup server是備份恢復(fù)系統(tǒng)的核心,負責(zé)具體備份恢復(fù)工作。備份文件時,備份服務(wù)器首先從Namenode上獲得備份文件的相關(guān)信息,然后和存儲文件的Datenode建立連接,下載文件,在將文件存儲在備份介質(zhì)上之后,記錄備份文件的相關(guān)信息。
2.2 備份分組算法思想及相關(guān)概念
備份分組算法的思想就是:在多線程下載備份任務(wù)的前提下,為充分利用節(jié)點的網(wǎng)絡(luò)帶寬,使所有數(shù)據(jù)節(jié)點在同一時刻都有正在下載的數(shù)據(jù)塊。為進一步描述備份分組算法,下面給出幾個基本概念定義描述。
定義1:備份任務(wù)。設(shè)一個文件file由block1,block2…blockn n個數(shù)據(jù)塊組成,如式(1)所示,對該文件所有數(shù)據(jù)塊的下載任務(wù)之和稱為一個備份任務(wù),用Taskm(m為任務(wù)編號)表示,形式化描述如式(2)所示:
(1)
(2)
式(2)中,備份任務(wù)Taskm描述該文件所有數(shù)據(jù)塊的下載任務(wù),D(Blocki)為對數(shù)據(jù)塊的下載,稱為備份子任務(wù)。在進行備份操作之前,對文件最后修改時間與當(dāng)天日期進行匹配,如果一致,則確定一個備份任務(wù)。
因為數(shù)據(jù)塊在HDFS數(shù)據(jù)服務(wù)器中存在多個副本,所以需要確定下載哪個數(shù)據(jù)節(jié)點上的數(shù)據(jù)塊,即確定備份子任務(wù)。確定備份子任務(wù)的基本思想是:根據(jù)數(shù)據(jù)塊(包括副本)在數(shù)據(jù)節(jié)點上的實際物理分布情況,按照數(shù)據(jù)節(jié)點上映射的數(shù)據(jù)塊數(shù)量平均化策略,依次排除數(shù)量多的數(shù)據(jù)節(jié)點上的數(shù)據(jù)塊副本,從而篩選出需要下載的數(shù)據(jù)塊。
定義2:備份任務(wù)組。所有的備份任務(wù)確立后(設(shè)任務(wù)數(shù)量為N),在備份子任務(wù)定義的基礎(chǔ)上,把n個數(shù)據(jù)節(jié)點dataNode上同時進行的備份子任務(wù)的集合稱為備份任務(wù)組。因為備份任務(wù)組是備份子任務(wù)的集合即數(shù)據(jù)塊備份的集合,因此在不同的時間段會有不同的任務(wù)組形成。形式化描述如式(3)所示:
(3)
式(3)中,n個數(shù)據(jù)節(jié)點上同時下載的數(shù)據(jù)塊可以全部屬于一個文件,也可以屬于不同的文件,即使任意兩個數(shù)據(jù)塊屬于同一個文件,即i=j,而p≠q時,按照定義1的描述,篩選數(shù)據(jù)塊確立備份子任務(wù)的過程也能保證各數(shù)據(jù)節(jié)點所映射的數(shù)據(jù)塊的唯一性。根據(jù)數(shù)據(jù)節(jié)點與數(shù)據(jù)塊ID的映射,判斷數(shù)據(jù)節(jié)點上是否還有數(shù)據(jù)塊,若有則數(shù)據(jù)節(jié)點隨機選擇一個數(shù)據(jù)塊進行下載,從而確定一個任務(wù)組。
備份任務(wù)組確立以后,需要進行備份任務(wù)組的初始化工作,即首先獲取備份子任務(wù)的信息,包括數(shù)據(jù)塊的ID、數(shù)據(jù)塊所在的數(shù)據(jù)節(jié)點、數(shù)據(jù)塊所屬文件源路徑和下載數(shù)據(jù)塊的目標(biāo)路徑??捎萌缡?4)所示的四元組InfoD(blocki)來描述。
InfoD(blocki)=[x,y,z,t]
(4)
其中,x為下載數(shù)據(jù)塊的ID,y為所在的數(shù)據(jù)節(jié)點,z為所屬文件的源路徑,t為下載的目標(biāo)路徑,z與t是鏡像關(guān)系,即在備份中心文件的邏輯組織方式與在HDFS中相同。設(shè)CblockIDs是備份子任務(wù)中要下載的數(shù)據(jù)塊ID集合;CdataNodes是數(shù)據(jù)節(jié)點集合;Csourcepaths是備份任務(wù)中要下載的文件源路徑集合;Ctartetpaths是備份任務(wù)要下載到的目標(biāo)路徑集合,則初始化的過程如下。首先,建立三個映射關(guān)系:
CblockIDs到CdataNodes的映射關(guān)系:RblockIDsto DataNodes={[x,y|x∈CblockIDs,y∈CdataNodes};CblockIDs到Csourcepaths的映射關(guān)系:RblockIDstoSources={x,z|x∈CblockIDs,z∈Csourcepaths};Csourcepaths到Ctartetpaths的映射關(guān)系:RSourcestoTargets={z,t|z∈Csourcepaths,t∈Ctargetpaths}。
然后,一旦一個任務(wù)組內(nèi)的數(shù)據(jù)塊IDx已定,根據(jù)映射關(guān)系RblockIDstoDataNodes和RblockIDstoSources可確定其所在的數(shù)據(jù)節(jié)點y和所屬文件的源路徑y(tǒng);根據(jù)映射關(guān)系RblockIDstoSources和RSourecestoTargets可確定其下載的目標(biāo)路徑z。
備份窗口是指在不影響系統(tǒng)正常業(yè)務(wù)的情況下,用于備份的時間段。在保證數(shù)據(jù)全部備份完成的前提下,所花費的最少時間稱為最小備份窗口。最小備份窗口與讀請求響應(yīng)時間、網(wǎng)絡(luò)傳輸速度以及磁盤讀寫速度有關(guān)。以下給出最小備份窗口的明確定義和估算公式。
定義3:最小備份窗口。完成所有備份任務(wù)所需要的時間,其估算公式如式(5)所示:
(5)
其中,n為HDFS中數(shù)據(jù)節(jié)點個數(shù);p(1≤p≤n)為不同備份任務(wù)組內(nèi)任務(wù)的個數(shù),p隨著備份的進程而變化的;m表示備份任務(wù)組的數(shù)量;Sblock表示HDFS的數(shù)據(jù)塊大小(默認為64M);v1為網(wǎng)絡(luò)傳輸速率(在百兆交換機的情況下,v1的均值為11M/S);v2為磁盤讀寫速度;T0為讀請求相應(yīng)時間。其中,讀請求響應(yīng)時間T0可以忽略。根據(jù)映射關(guān)系RblockIDstoDataNodes能夠得到其反映射關(guān)系RDataNodestoblockIDs,從而計算出下載所有的備份任務(wù)所需要建立的備份任務(wù)組的數(shù)量m,即所有數(shù)據(jù)節(jié)點映射的數(shù)據(jù)塊數(shù)量的最大值,其計算公式如式(6)所示:
(6)
式(5)中,為了能夠計算,取p的最大值n,因此理論值會比實際測量值大。
2.3 分組算法思想描述
根據(jù)上述思想,分組算法的自然語言描述如下:
(1)遍歷HDFS文件目錄,將文件最后修改日期與當(dāng)天日期進行匹配,如果一致則確定一個備份任務(wù)并放入備份任務(wù)集合中,建立備份源路徑集合與目標(biāo)路徑集合的映射、數(shù)據(jù)節(jié)點與數(shù)據(jù)塊ID(包括副本)的映射和數(shù)據(jù)塊ID集合到備份源路徑的映射。
(2)根據(jù)節(jié)點與數(shù)據(jù)塊ID(包括副本)的映射,確定數(shù)據(jù)節(jié)點中對應(yīng)的數(shù)據(jù)塊數(shù)量,然后根據(jù)某一數(shù)據(jù)塊A所在的數(shù)據(jù)節(jié)點中總的數(shù)據(jù)塊數(shù)量,選擇數(shù)量少的數(shù)據(jù)節(jié)點作為數(shù)據(jù)塊ID集合到數(shù)據(jù)節(jié)點集合映射中A的象,從而建立起數(shù)據(jù)塊ID集合到數(shù)據(jù)節(jié)點集合的映射,建立映射過程即為備份子任務(wù)篩選數(shù)據(jù)塊的過程。
(3)根據(jù)數(shù)據(jù)塊ID集合到數(shù)據(jù)節(jié)點集合的映射,得到其逆映射關(guān)系即數(shù)據(jù)節(jié)點到數(shù)據(jù)塊ID集合的映射,計算數(shù)據(jù)節(jié)點映射的數(shù)據(jù)塊數(shù)量的最大值n。
(4)根據(jù)數(shù)據(jù)節(jié)點到數(shù)據(jù)塊(不包括副本)ID集合的映射,建立一組備份任務(wù)組,若n=0,則轉(zhuǎn)到(7)。
(5)根據(jù)建立的映射關(guān)系,得到備份任務(wù)組內(nèi)每個子任務(wù)信息,初始化備份任務(wù)組,進行數(shù)據(jù)塊的下載。
(6)一組備份任務(wù)所有備份子任務(wù)完成后,將每個數(shù)據(jù)節(jié)點映射的數(shù)據(jù)塊ID刪除,n減1并轉(zhuǎn)到(4)。
(7)算法結(jié)束。
形式化語言描述如下:
輸入:HDFS根目錄dirpath;
初始化:
SetCfiles←new HashSet(FileInfos);
//更新的文件集合(備份任務(wù)集合)
RSourcetoTarget←new HashMap(string,string);
//源路徑到目標(biāo)路徑的映射
RblockIDstoSources←new HashMap(Long,Srting);
//數(shù)據(jù)塊ID到源路徑的映射
RdataNodestoAllblockIDS←new HashMap(String,HashSet
//數(shù)據(jù)節(jié)點到數(shù)據(jù)塊ID的映射
RblockIDstoDataNodes←new HashMap(Long ,DataNodeInfo);
//數(shù)據(jù)塊ID到數(shù)據(jù)節(jié)點的映射
RdataNodestoblockIDs←new HashMap(String,HashSet
//數(shù)據(jù)節(jié)點到篩選后數(shù)據(jù)塊ID映射
maxNum←0;
//數(shù)據(jù)節(jié)點中數(shù)據(jù)塊(篩選后)數(shù)量的最大值
dataNodeNum←0;
//數(shù)據(jù)塊數(shù)量不為0的數(shù)據(jù)節(jié)點個數(shù)
建立映射:
(1)Cfiles←createFilesHashSet(dirpath);
(2)RSourcetoTarget←createSourcetoTargetHashMap(Cfiles);
(3)RblockIDstoSource←createBlockIDstoSourcesHashMap(Cfiles);
(4)RdataNodestoAllBlockIDs←createDataNodestoAllBlockIDsHAshMap(Cfiles);
為備份子任務(wù)篩選數(shù)據(jù)塊的過程(建立數(shù)據(jù)節(jié)點到篩選后數(shù)據(jù)塊ID的映射):
(1)fori=0toCfiles.sizedo
(2)locatedBlock←namenode.getBlockLocations(Cfiles.Get[i].getFilePath(),0,Cfiles.get[i].getFileSize());
//獲得文件的數(shù)據(jù)塊信息
(3)locatedBlockList←locatedBlock.getlocatedBlocks();
//數(shù)據(jù)塊鏈表信息
(4)forj=0 to locatedBlockList.size do
(5)a←R.dataNodestoAllblockIDs.get(locatedBlck[j].getLocations()[0].getHost()).size();
//將第一個數(shù)據(jù)塊副本所在的數(shù)據(jù)節(jié)點中數(shù)據(jù)塊數(shù)量賦值給a
(6)b←R.dataNodestoAllblockIDs.get(locatedBlock[j].getLocations()[1].getHose()).size();
//將第二個數(shù)據(jù)塊副本所在的數(shù)據(jù)節(jié)點中數(shù)據(jù)塊數(shù)量賦值給b
(7)c←R.dataNodestoAllblockIDs.get(locatedBlock[j].getLocations()[2].getHose()).size();
//將第三個數(shù)據(jù)塊副本所在的數(shù)據(jù)節(jié)點中數(shù)據(jù)塊數(shù)量賦值給c
(8)←Mmin(a,b,c);
(9) ifm==athen
(10)RblockIDstoDataNodesHashMap.put(locatedBlock,getBlcok()
.getBlcokID(),locatedBlcok.getLocations()[0]);
//若a為最小值,則把第一個數(shù)據(jù)塊所對應(yīng)的數(shù)據(jù)節(jié)點放入數(shù)據(jù)塊ID到數(shù)據(jù)節(jié)點的映射中
(11) end if
(12) ifm==bthen
(13)RblockIDstoDataNodesHashMap.put(locatedBlock,getBlcok()
.getBlcokID(),locatedBlcok.getLocations()[1]);
//若b為最小值,則把第一個數(shù)據(jù)塊所對應(yīng)的數(shù)據(jù)節(jié)點放入數(shù)據(jù)塊ID到數(shù)據(jù)節(jié)點的映射中
(14) end if
(15) ifm==cthen
(16)RblockIDstoDataNodesHashMap.put(locatedBlock,getBlcok().getBlcokID(),
locatedBlcok.getLocations()[2]);
//若c為最小值,則把第一個數(shù)據(jù)塊所對應(yīng)的數(shù)據(jù)節(jié)點放入數(shù)據(jù)塊ID到數(shù)據(jù)節(jié)點的映射中
(17) end if
(18) end for
(19)end for
(20)RdataNodestoblockIDs←creatDataNodestoblockIDsHashMap(Cfiles,RblcokIDstoDataNodes);
創(chuàng)建任務(wù)組并下載:
(1)maxNum←max(RdataNodestoblockIDs); //獲得數(shù)據(jù)節(jié)點中數(shù)據(jù)塊(篩選后)數(shù)量的最大值
(2)dataNodeNum←getDataNodeNum(RdataNodestoblockIDs);//獲得數(shù)據(jù)塊數(shù)量不為0的數(shù)據(jù)節(jié)點數(shù)
(3)fori=0 to maxNum-1 do
(4) forj=0 to dataNodeNum-1 do
(5) ifRdataNodestoblockIDs.get(dataNode[j]).size>0 then
TaskGroup[i].add(dataNode[j].block[i]);//
(6)CblockID.add(dataNode[j].block[i]);
(7) end if
(8) end for
(9)run(TaskGroup[i].RblockIDstoSources,RblockIDstodataNodes,RSourcestoTargets);//進行任務(wù)組的下載
(10)end for
實驗環(huán)境為三臺機架服務(wù)器和一個磁盤陣列。三臺機架服務(wù)器中,一臺為12核、24線程、16G內(nèi)存,型號為A620r-G;另兩臺機架服務(wù)器為24核、48線程、64 G內(nèi)存,型號為A840r-G;磁盤陣列有10 T容量,型號為DS200-N10。在服務(wù)器上,搭建Hadoop云環(huán)境:1個namenode節(jié)點,1個snamenode和8個datanode節(jié)點。Hadoop軟件版本為1.2.1,Java版本為jdk1.7.0_40。
實驗分別以5.09 G、11.86 G、14.11 G、30.25 G的備份任務(wù)量為例。備份介質(zhì)為普通臺式機磁盤,其讀寫速度在90 M/S-150 M/S之間,取128 M/S,得出分組算法中最小備份窗口的理論與實測值對比,如圖4所示。
圖4 最小備份窗口估算值與實測值對比
從圖4中可以看到,估算值與實測值相差不大。4次比較誤差依次為11秒、22秒、30秒、26秒。在備份任務(wù)量大的情況下,可以用公式(5)進行估算。
分別對單線程下載及多線程并行下載前提下的HDFS默認算法和分組算法進行時間效率對比,如圖5所示。
圖5 備份時間效率對比
對于單線程執(zhí)行備份,由于HDFS讀數(shù)據(jù)塊流程是順序的,節(jié)點帶寬只能利用1/8(8個節(jié)點),花費的時間隨任務(wù)量增加基本呈線程增長,遠比多線程要高得多。多線程方式下,Hadoop默認算法隨著備份任務(wù)的進行,讀請求集中在某幾個數(shù)據(jù)節(jié)點,導(dǎo)致8個數(shù)據(jù)節(jié)點的帶寬得不到充分利用。而備份分組算法定位到數(shù)據(jù)塊,得到備份任務(wù)組里所有文件的數(shù)據(jù)塊信息,按N個數(shù)據(jù)節(jié)點里的數(shù)據(jù)塊建立備份子任務(wù)組,使所有節(jié)點時刻都有任務(wù),達到了帶寬近100%的利用。從圖4中看出,在任務(wù)量小的情況下,分組算法與默認算法時間差距不大,隨著任務(wù)量的增加,分組算法的優(yōu)勢越來越明顯,在海量數(shù)據(jù)面前有著較高的下載效率。因而,該增量備份策略能夠解決日益增長的企業(yè)海量PDM數(shù)據(jù)的備份問題。
本文在基于企業(yè)私有云存儲PDM數(shù)據(jù)的前提下,針對PDM數(shù)據(jù)如何備份這一新問題,提出了一種以日為粒度的增量備份方案。該方案能夠?qū)⑵髽I(yè)私有云中的PDM數(shù)據(jù),以HDFS中相同的目錄組織方式,高效地備份到集中式的環(huán)境中,能夠解決企業(yè)海量PDM數(shù)據(jù)的備份問題,同時在恢復(fù)時,只要按照備份中心的目錄進行恢復(fù)即可。
[1]Miller E. PDM Today[J]. Computer Aided Design,1995,14(2):32-41.
[2]李伯虎,張霖,王時龍.云制造—面向服務(wù)的網(wǎng)絡(luò)化制造新模式[J].計算機集成制造系統(tǒng),2010,16(1):1-7,16.
[3]李伯虎,張霖.再論云制造[J].計算機集成制造系統(tǒng),2011,17(3):449-457.
[4]夏秀峰,趙小磊,孔慶云.MBE與大數(shù)據(jù)給PDM帶來的思考[J].制造業(yè)自動化,2013,10(35):71-72.
[5]LI W J,LI L X,LI F L,et al.Design and implementation of backup system based on P2P network[J].Journal of Inform ation Engineering University,2010,11(3):351-355.
[6]Apache Hadoop.Welcome to ApecheTM Hadoop(r)[EB/OL].下載地址:http:// Hadoop.apache.org/.
[7]欒亞建,黃翀民,龔高晟.Hadoop平臺的性能優(yōu)化研究[J].計算機工程,2010,36(14):262-264.
[8]Konstantin Shvachko,Hairong Kuang and Sanjay Radia.The hadoop distributed file system[C].Proceedings of the 26th IEEE Symposium on Mass Storage Systems and Technologies(MSST '10).Lake Tahoe,May 3-7,2010.1-10.IEEE,c2010.
[9]梅中義.基于MBD的飛機數(shù)字化裝配技術(shù)[J].航空制造技術(shù),2010(18):42-43.
[10]姜紅明,張豐華,吳慧杰.MBD技術(shù)實施研究[J].制造業(yè)自動化,2012,134(12):1-3,12.
[11]余定方.面向飛機全生命周期的MBD數(shù)據(jù)管理解決方案探討[J].航空制造技術(shù),2010(23):124-127.
[12]Yin Haijun,Ning Junyi,Han Zhiren.Study on application technology of lightweight model oriented to no-drawing manufacturing[C].2012 2nd International Conference on Chemical,Material and Metallurgical Engineering,ICCMME 2012,December 15,2012-December 16,2012:3798-3801.
[13]Ferraiolo D,Kuhn R,Sandhu R.RBAC standard rationale:Comments on “A critique of the ANSI standard on role-based access control”[J].IEEE Security &Privacy,2007,5(6):51-53.
[14]楊帆.Hadoop平臺高可用性方案的設(shè)計與實現(xiàn)[D].北京:北京郵電大學(xué)網(wǎng)絡(luò)技術(shù)研究院,2012:7-12.
[15]王昌旭,許榕生.企業(yè)數(shù)據(jù)備份系統(tǒng)分析與研究[J].計算機應(yīng)用軟件,2008,25(10):122-123.
(責(zé)任編輯:劉劃 英文審校:宋曉英)
Backup strategy for PDM data in private cloud based on HDFS
XIA Xiu-fenga,b,WANG Taob
(a.Liaoning General Aviation Key Laboratory;b.College of Computer Science,Shenyang Aerospace University,Shenyang 110136,China)
In the enterprise “Big Data” era,private cloud to store enterprise PDM data becomes an inevitable trend to deal with the difficulties of centralized storage,access and maintenance caused by “Big Data” and to meet the actual needs of secret characteristic of enterprise data.And how to back up large-scale data in enterprise private cloud has become a new problem.With Hadoop Distributed File System(HDFS)as the storage platform for enterprise data,a centralized block-level incremental backup strategy has been proposed,which gives the backup systematical structure,relevant definitions and grouping algorithm.The backup strategy can solve the problems of enterprise PDM data loss caused by system failures,human mistakes,storage media failure,etc.Experimental results show that the grouping algorithm can realize efficient data backup with sufficient network bandwidth.
PDM data;enterprise private cloud;HDFS;backup strategy
2014-10-20
航空科學(xué)基金(項目編號:2013ZG54032)
夏秀峰(1964-),男,山東青島人,教授,主要研究方向:數(shù)據(jù)庫理論與技術(shù),E-mail:xiaxiufeng@163.com;王濤(1987-),男,山東萊蕪人,碩生研究生,主要研究方向:管理信息系統(tǒng)與數(shù)據(jù)庫,E-mail:594608907@qq.com。
2095-1248(2015)04-0071-07
TP311
A
10.3969/j.issn.2095-1248.2013.04.12