元數(shù)據(jù)管理方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信領(lǐng)域,特別涉及一種元數(shù)據(jù)管理方法和系統(tǒng)。
【背景技術(shù)】
[0002]文件系統(tǒng)作為操作系統(tǒng)的重要組成部分,通過對操作系統(tǒng)所管理的存儲空間進行抽象,為用戶提供對象化的、統(tǒng)一的訪問接口,避免直接操作物理設備,達到管理資源的目的。文件系統(tǒng)最初只能管理本地磁盤空間,計算機之間則通過文件傳輸協(xié)議(FileTransfer Protocol,簡稱:FTP)共享文件,但FTP協(xié)議不提供與本機文件系統(tǒng)一致的訪問接口和對象模型。
[0003]隨著計算機被廣泛用于生產(chǎn)和生活的各個方面,而單個計算機的存儲和計算能力十分有限,通過多臺計算機協(xié)同管理文件的需求日益增長,并逐漸出現(xiàn)了分布式文件系統(tǒng)。分布式文件系統(tǒng)的發(fā)展經(jīng)歷了網(wǎng)絡文件系統(tǒng)(Network File System,簡稱:NFS)、安德魯文件系統(tǒng)(Andrew File System,簡稱:AFS)、存儲區(qū)域網(wǎng)絡(Storage Area Network,簡稱:SAN)、網(wǎng)絡附連存儲(Network Attached Storage,簡稱:NAS)、直接訪問文件系統(tǒng)(DirectAccess File System,簡稱:DAFS)等多個階段。當前比較成熟和應用廣泛的是GFS(GoogleFile System)和 HDFS (Hadoop Distributed File System)。
[0004]HDFS是GFS的一個開源實現(xiàn),是一種基于Java語言的支持數(shù)據(jù)密集型應用的分布式文件系統(tǒng),HDFS的特點是具有高度容錯性,適合部署在廉價的機器上,能提供高吞吐量的數(shù)據(jù)訪問,非常適合管理大規(guī)模數(shù)據(jù)。
[0005]HDFS系統(tǒng)設計采用主從式(Master-Slave)架構(gòu),如附圖1所示。一個HDFS集群由一個客戶端(Client)、一個元數(shù)據(jù)節(jié)點(Name Node)和多個數(shù)據(jù)節(jié)點(Data Node)組成??蛻舳丝稍L問元數(shù)據(jù)節(jié)點和數(shù)據(jù)節(jié)點。元數(shù)據(jù)節(jié)點是一個中心主服務器,負責維護文件系統(tǒng)的命名空間和客戶端對文件系統(tǒng)的訪問。數(shù)據(jù)節(jié)點由多個服務器組成,負責管理存儲結(jié)點上的存儲空間、執(zhí)行來自元數(shù)據(jù)節(jié)點的指令和客戶端的讀寫請求。
[0006]HDFS管理元數(shù)據(jù)的設計方案存在如下缺點:
[0007]1.元數(shù)據(jù)需要被頻繁的訪問,但不同數(shù)據(jù)的冷熱度不同,即有些數(shù)據(jù)被訪問的頻率高,有些數(shù)據(jù)被訪問的頻率低。采用單一元數(shù)據(jù)節(jié)點的結(jié)構(gòu),當存在熱度非常高的數(shù)據(jù)時,磁盤讀寫性能的瓶頸會嚴重影響HDFS的工作效率。
[0008]2.HDFS的一個重要應用場景是處理大規(guī)模并行數(shù)據(jù)訪問請求,HDFS的單一元數(shù)據(jù)節(jié)點的結(jié)構(gòu)決定其吞吐量不高,不能滿足大批量數(shù)據(jù)讀寫操作同時進行。
[0009]3.HDFS的一個重要功能是為了支持上層的MapReduce并行計算,單一元數(shù)據(jù)節(jié)點的存儲和計算能力十分有限,不具備可擴展性,很難滿足大量數(shù)據(jù)的處理請求。
[0010]4.元數(shù)據(jù)節(jié)點是HDFS的一個中心服務器,負責處理客戶端對文件系統(tǒng)的訪問請求。如果元數(shù)據(jù)節(jié)點因出現(xiàn)故障而宕機,將使整個HDFS系統(tǒng)癱瘓,造成重大損失。
[0011]隨著HDFS運行時間越來越長,HDFS中的文件數(shù)量不斷增長,元數(shù)據(jù)的規(guī)模也會變得十分龐大,且當前單個服務器的存儲和計算能力都十分有限,因此單一的元數(shù)據(jù)節(jié)點在數(shù)據(jù)總量增長非常迅速時,有可能成為性能瓶頸,導致整個系統(tǒng)的性能降低。
[0012]HDFS中只有一個元數(shù)據(jù)節(jié)點的設計方案簡化了系統(tǒng)的體系結(jié)構(gòu)。然而HDFS的一個設計前提是硬件發(fā)生故障是常態(tài),因此如何在故障發(fā)生后使系統(tǒng)自動快速恢復到正常運行狀態(tài)是HDFS的一個核心設計目標。
[0013]元數(shù)據(jù)作為描述數(shù)據(jù)的數(shù)據(jù),其高可用性是至關(guān)重要的,只有對元數(shù)據(jù)管理方法加以優(yōu)化,保證其高效地讀寫,不出故障,或發(fā)生故障后能迅速恢復,才能達到HDFS的核心設計目標。
【發(fā)明內(nèi)容】
[0014]本發(fā)明實施例提供一種元數(shù)據(jù)管理方法和系統(tǒng)。通過采用服務器集群的方式管理元數(shù)據(jù),根據(jù)元數(shù)據(jù)熱度的不同對元數(shù)據(jù)分類,然后按照網(wǎng)絡數(shù)據(jù)復制算法進行備份,該方法分散了單個節(jié)點的數(shù)據(jù)訪問和磁盤讀寫壓力,提高整個系統(tǒng)的性能和吞吐量,同時提高整個系統(tǒng)的計算和存儲能力。
[0015]根據(jù)本發(fā)明的一個方面,提供一種元數(shù)據(jù)管理方法,包括:
[0016]需要備份數(shù)據(jù)的元數(shù)據(jù)主節(jié)點在備份指定數(shù)據(jù)時,向元數(shù)據(jù)集群中的其它元數(shù)據(jù)主節(jié)點發(fā)送負載查詢請求;
[0017]接收到負載查詢請求的元數(shù)據(jù)主節(jié)點統(tǒng)計自身的負載狀況,并將負載統(tǒng)計信息上報給需要備份數(shù)據(jù)的元數(shù)據(jù)主節(jié)點;
[0018]需要備份數(shù)據(jù)的元數(shù)據(jù)主節(jié)點利用上報的負載統(tǒng)計信息確定目標節(jié)點,其中目標節(jié)點包括負載最輕的m個元數(shù)據(jù)主節(jié)點,m為大于O的正整數(shù),m的大小與指定數(shù)據(jù)的數(shù)據(jù)熱度相關(guān)聯(lián);
[0019]需要備份數(shù)據(jù)的元數(shù)據(jù)主節(jié)點將指定數(shù)據(jù)發(fā)送給每一個作為目標節(jié)點的元數(shù)據(jù)主節(jié)點;
[0020]作為目標節(jié)點的元數(shù)據(jù)主節(jié)點接收到指定數(shù)據(jù)后,將指定數(shù)據(jù)在本地備份,并在備份成功后向需要備份數(shù)據(jù)的元數(shù)據(jù)主節(jié)點發(fā)送備份成功消息。
[0021]在一個實施例中,需要備份數(shù)據(jù)的元數(shù)據(jù)主節(jié)點在將指定數(shù)據(jù)發(fā)送給每一個作為目標節(jié)點的元數(shù)據(jù)主節(jié)點后,還包括:
[0022]判斷是否在預定時間范圍內(nèi)接收到全部作為目標節(jié)點的元數(shù)據(jù)主節(jié)點發(fā)送的備份成功消息;
[0023]若未能在預定時間范圍內(nèi)接收到全部作為目標節(jié)點的元數(shù)據(jù)主節(jié)點發(fā)送的備份成功消息,則將目標節(jié)點中沒有發(fā)送備份成功消息的元數(shù)據(jù)主節(jié)點重新確定為目標節(jié)點;
[0024]然后執(zhí)行需要備份數(shù)據(jù)的元數(shù)據(jù)主節(jié)點將指定數(shù)據(jù)發(fā)送給每一個作為目標節(jié)點的元數(shù)據(jù)主節(jié)點的步驟。
[0025]在一個實施例中,元數(shù)據(jù)主節(jié)點在本地保存數(shù)據(jù)時,將保存的數(shù)據(jù)發(fā)送給與自身相關(guān)聯(lián)的元數(shù)據(jù)從節(jié)點進行存儲,以便元數(shù)據(jù)從節(jié)點與元數(shù)據(jù)主節(jié)點實現(xiàn)數(shù)據(jù)同步。
[0026]在一個實施例中,元數(shù)據(jù)從節(jié)點在判斷與其相關(guān)聯(lián)的元數(shù)據(jù)主節(jié)點出現(xiàn)故障時,將自身的網(wǎng)絡參數(shù)修改為元數(shù)據(jù)主節(jié)點參數(shù),以作為元數(shù)據(jù)集群中新的元數(shù)據(jù)主節(jié)點。
[0027]在一個實施例中,出現(xiàn)故障的元數(shù)據(jù)主節(jié)點故障恢復后,將自身的網(wǎng)絡參數(shù)修改為元數(shù)據(jù)從節(jié)點參數(shù),以作為元數(shù)據(jù)集群中新的元數(shù)據(jù)從節(jié)點,其中新的元數(shù)據(jù)從節(jié)點與新的元數(shù)據(jù)主節(jié)點相關(guān)聯(lián);
[0028]新的元數(shù)據(jù)從節(jié)點向新的元數(shù)據(jù)主節(jié)點發(fā)送自身的數(shù)據(jù)快照,以便新的元數(shù)據(jù)主節(jié)點根據(jù)數(shù)據(jù)快照,將新的元數(shù)據(jù)從節(jié)點缺失的數(shù)據(jù)發(fā)送給新的元數(shù)據(jù)從節(jié)點進行存儲,從而新的元數(shù)據(jù)從節(jié)點與新的元數(shù)據(jù)主節(jié)點實現(xiàn)數(shù)據(jù)同步。
[0029]根據(jù)本發(fā)明的另一方面,提供一種元數(shù)據(jù)管理系統(tǒng),包括多個元數(shù)據(jù)主節(jié)點,其中:
[0030]需要備份數(shù)據(jù)的元數(shù)據(jù)主節(jié)點,用于在備份指定數(shù)據(jù)時,向元數(shù)據(jù)集群中的其它元數(shù)據(jù)主節(jié)點發(fā)送負載查詢請求;利用上報的負載統(tǒng)計信息確定目標節(jié)點,其中目標節(jié)點包括負載最輕的m個元數(shù)據(jù)主節(jié)點,m為大于O的正整數(shù),m的大小與指定數(shù)據(jù)的數(shù)據(jù)熱度相關(guān)聯(lián);將指定數(shù)據(jù)發(fā)送給每一個作為目