HDFS架構(gòu)及HDFS架構(gòu)中NameNode節(jié)點的壓力分解方法
【專利摘要】本發(fā)明公開了一種HDFS架構(gòu)及HDFS架構(gòu)的NameNode節(jié)點的壓力分解方法,本發(fā)明將HDFS架構(gòu)中NameNode節(jié)點分為MetaDataNode節(jié)點和MonitorNode節(jié)點,所述MetaDataNode節(jié)點與所述MonitorNode節(jié)點之間進行數(shù)據(jù)通信;所述MetaDataNode節(jié)點用于Hadoop分布式文件系統(tǒng)中元數(shù)據(jù)的管理,所述MonitorNode監(jiān)測Hadoop分布式文件系統(tǒng)、備份元數(shù)據(jù)、與所述MetaDataNode節(jié)點之間交互數(shù)據(jù)。相比現(xiàn)有技術HDFS架構(gòu)中只有一臺NameNode節(jié)點,本發(fā)明HDFS架構(gòu)中NameNode節(jié)點分為MetaDataNode節(jié)點和MonitorNode節(jié)點,即將原HDFS架構(gòu)中NameNode的職責分解到兩個節(jié)點上,能夠有效的減輕現(xiàn)有HDFS架構(gòu)中主控節(jié)點的壓力。
【專利說明】HDFS架構(gòu)及HDFS架構(gòu)中NameNode節(jié)點的壓力分解方法
【技術領域】
[0001]本發(fā)明涉及云計算中的云存儲,具體地指一種HDFS架構(gòu)及HDFS架構(gòu)中NameNode節(jié)點的壓力分解方法。
【背景技術】
[0002]隨著互聯(lián)網(wǎng)技術的廣泛應用及發(fā)展,全球已經(jīng)進入了大數(shù)據(jù)時代,信息量呈現(xiàn)了爆炸性的增長,傳統(tǒng)的存儲已經(jīng)滿足不了時代的需要,存儲資源的昂貴及大數(shù)據(jù)量的處理及管理逐漸制約著企業(yè)的發(fā)展,越來越多的企業(yè)開始將數(shù)據(jù)存儲分離出來,通過一些技術手段實現(xiàn)高可靠性、高擴展性、大容量、高效率、相對低成本的存儲方式,并且可以實現(xiàn)存儲資源的對外租賃這就是云存儲出現(xiàn)的原因。云存儲的出現(xiàn)則會徹底改變大數(shù)據(jù)時代的存儲模式。
[0003]具體來說,云存儲是在云計算(cloud computing)概念上延伸和發(fā)展出來的一個新的概念,是指通過集群應用、網(wǎng)格技術或分布式文件系統(tǒng)等功能,把各種不同類型的存儲設備通過軟件進行協(xié)同工作,成為一個數(shù)據(jù)中心,企業(yè)或個人的文件或數(shù)據(jù)集中存儲在數(shù)據(jù)中心而非本地,并按實際使用進行付費,這就形成了一個對外提供數(shù)據(jù)存儲和業(yè)務訪問功能的一個云存儲系統(tǒng)。換句話說,當云計算系統(tǒng)運算和處理的核心是大量數(shù)據(jù)的存儲和管理時,云計算系統(tǒng)中就需要配置大量的存儲設備,那么云計算系統(tǒng)就轉(zhuǎn)變成為一個云存儲系統(tǒng),所以云存儲是一個以數(shù)據(jù)存儲和管理為核心的云計算系統(tǒng)。所以,云存儲即是云計算所提供的一種存儲服務。
[0004]鑒于上述的云存儲,使得大量中小型企業(yè)可以不再受制于昂貴的存儲服務器成本,并且免去了對服務器的架構(gòu)設計及運維管理成本,只需要一筆少量的投入,使用公共云存儲服務,降低成本的同時也得到了更好的技術保障。
[0005]Hadoop (分布式系統(tǒng)基礎架構(gòu))采用的是分布式系統(tǒng)基礎架構(gòu),用戶可以在不了解分布式底層細節(jié)的情況下,開發(fā)分布式程序。充分利用集群的威力高速運算和存儲。Hadoop和處理大規(guī)模數(shù)據(jù)的云存儲具有天然的聯(lián)系,可以設計部署在低廉的硬件設備上,以提供高傳輸率來訪問應用程序的數(shù)據(jù),適合那些有著超大數(shù)據(jù)集的應用程序.所以目前國內(nèi)外很多云存儲是基于Hadoop架構(gòu)之上的。
[0006]Hadoop 分布式文件系統(tǒng)(Hadoop Distributed File System,簡稱 HDFS)是部署在大量低廉硬件上的文件系統(tǒng),采用流的方式進行文件系統(tǒng)中數(shù)據(jù)的訪問,并具有數(shù)據(jù)自動備份等功能,因此具有高容錯性、高吞吐量等特點,適合大數(shù)據(jù)集的應用服務。HDFS采用Master/Slave結(jié)構(gòu),即主從分布式結(jié)構(gòu)。HDFS架構(gòu)中包括了一臺NameNode節(jié)點,還有多臺DataNode節(jié)點,其本質(zhì)上是集群中的多種服務器,協(xié)同工作,各盡其責,提供整個文件系統(tǒng)的服務。其中包括主控服務器(即文件系統(tǒng)的Master,NameNode節(jié)點)、數(shù)據(jù)服務器(即文件系統(tǒng)的Slave, DataNode節(jié)點),以及客戶服務器Client。
[0007]HDFS架構(gòu)中單一節(jié)點的NameNode簡化了系統(tǒng)的架構(gòu),但也增加了單一節(jié)點的風險,一旦NameNode出現(xiàn)故障,整個系統(tǒng)將會癱瘓。由于NameNode負責全部的元數(shù)據(jù)管理和 系統(tǒng)的監(jiān)測,所以其具有巨大的負載壓力,而這負載壓力是其可能發(fā)生故障的原因之一。
【發(fā)明內(nèi)容】
[0008]本發(fā)明目的在于克服上述現(xiàn)有技術的不足而提供一種HDFS架構(gòu)及HDFS架構(gòu)中NameNode節(jié)點的壓力分解方法,本發(fā)明通過將HDFS架構(gòu)中NameNode節(jié)點分為MetaDataNode節(jié)點和MonitorNode節(jié)點,以分解原HDFS架構(gòu)中只有單一 NameNode節(jié)點的壓力,提高了 HDFS的工作效率。
[0009]實現(xiàn)本發(fā)明目的采用的技術方案是:一種HDFS架構(gòu),包括一臺NameNode節(jié)點和多臺DataNode節(jié)點,所述NameNode節(jié)點包括:
[0010]MetaDataNode節(jié)點,用于Hadoop分布式文件系統(tǒng)中元數(shù)據(jù)的管理;以及
[0011 ] MonitorNode節(jié)點,與所述MetaDataNode節(jié)點之間進行數(shù)據(jù)通信連接,用于Hadoop分布式文件系統(tǒng)的監(jiān)測、元數(shù)據(jù)的備份、與所述MetaDataNode節(jié)點之間的數(shù)據(jù)交互。
[0012]此外,本發(fā)明還提供一種基于上述HDFS架構(gòu)的NameNode節(jié)點的壓力分解方法,包括:
[0013]將HDFS架構(gòu)中NameNode節(jié)點分為MetaDataNode節(jié)點和MonitorNode節(jié)點,所述MetaDataNode節(jié)點與所述MonitorNode節(jié)點之間進行數(shù)據(jù)通信;
[0014]所述MetaDataNode節(jié)點用于Hadoop分布式文件系統(tǒng)中元數(shù)據(jù)的管理,所述MonitorNode監(jiān)測Hadoop分布式文件系統(tǒng)、備份元數(shù)據(jù)、與所述MetaDataNode節(jié)點之間交互數(shù)據(jù)。
[0015]相比現(xiàn)有技術HDFS架構(gòu)中只有一臺NameNode節(jié)點,本發(fā)明HDFS架構(gòu)中NameNode節(jié)點分為MetaDataNode節(jié)點和MonitorNode節(jié)點,即將原HDFS架構(gòu)中NameNode的職責分解到兩個節(jié)點上,能夠有效的減輕現(xiàn)有HDFS架構(gòu)中主控節(jié)點的壓力。
【專利附圖】
【附圖說明】
[0016]圖1為本發(fā)明HDFS架構(gòu)的結(jié)構(gòu)框圖。
[0017]圖2為本發(fā)明HDFS文件系統(tǒng)啟動及工作流程圖。
【具體實施方式】
[0018]下面結(jié)合附圖和具體實施例對本發(fā)明作進一步的詳細說明。
[0019]如圖1所示,本發(fā)明HDFS架構(gòu)包括一臺NameNode(名稱節(jié)點)節(jié)點和多臺DataNode(數(shù)據(jù)節(jié)點)節(jié)點,所述NameNode節(jié)點包括MetaDataNode (元數(shù)據(jù)節(jié)點)節(jié)點和MonitorNode(監(jiān)控節(jié)點)節(jié)點,MetaDataNode節(jié)點主要負責整個HDFS的元數(shù)據(jù)管理,而MonitorNode節(jié)點主要負責一些額外的工作,包括監(jiān)控和存儲塊的復制等。此外,MetaDataNode節(jié)點和MonitorNode節(jié)點之間的重要信息進行相互備份或檢測,保證了系統(tǒng)的可靠性。本發(fā)明HDFS構(gòu)架將原NameNode節(jié)點的職責分解到兩個節(jié)點上,有效的減輕原始架構(gòu)主控節(jié)點的壓力。
[0020]在現(xiàn)有HDFS的架構(gòu)中,雖然主控節(jié)點NameNode并沒有直接的數(shù)據(jù)流接觸,但其擔當了整個架構(gòu)的大腦的作用,Client (用戶)每一次的請求都會經(jīng)過NameNode的許可與分配,并且NameNode還具有很重要的管理職責。所以,一旦NameNode發(fā)生故障,則整個HDFS集群也會處于癱瘓狀態(tài),雖然可以通過設置Secondary NameNode的備份節(jié)點進行NameNode的修復,但從根本上處理,需要盡可能的降低NameNode發(fā)生故障的概率。而NameNode的職責所帶來的巨大壓力,是其可能發(fā)生故障的原因之一。
[0021]NameNode的職責眾多,但其中的元數(shù)據(jù)管理相對比較獨立,并且元數(shù)據(jù)管理的日志文件較大,而且更新極為頻繁,通過獲知元數(shù)據(jù)信息而進行的操作要占到整個系統(tǒng)處理的50%以上。本發(fā)明HDFS的架構(gòu)就是將元數(shù)據(jù)管理分離出來,由另一個NameNode節(jié)點專門進行管理,則可以減輕NameNode節(jié)點的壓力,降低故障發(fā)生的概率。
[0022]由于元數(shù)據(jù)信息的更新相當頻繁,并且過程相對獨立,為了減輕單一 NameNode節(jié)點的訪問壓力,本發(fā)明HDFS構(gòu)架新增另一個節(jié)點專門處理狀態(tài)的監(jiān)控和調(diào)度,行成了一種二元管理機制的文件系統(tǒng)。即本發(fā)明將主控節(jié)點分割為MetaDataNode節(jié)點和MonitorNode節(jié)點,各司其職,同時為相互之間進行一種備份機制,不僅減輕了主控節(jié)點的壓力,而且在任意一個節(jié)點出現(xiàn)故障時,也更易于迅速恢復。使整個文件系統(tǒng)的可靠性和可擴展性進一步增強。
[0023]Client在進行文件的讀寫操作時,MetaDataNode節(jié)點會需要進行元數(shù)據(jù)信息的查看。與元數(shù)據(jù)信息相關的操作,都直接與MetaDataNode進行交互。另一個節(jié)點MonitorNode主要負責狀態(tài)的監(jiān)控,當需要元數(shù)據(jù)信息時(比如需要進行文件塊的復制),也會向MetaDataNode節(jié)點發(fā)送請求,這種操作并不是非常頻繁,所以整個系統(tǒng)可以降低節(jié)點的受壓情況,付出的代價是MetaDataNode節(jié)點和新的MonitorNode節(jié)點之間的通信,本發(fā)明將MetaDataNode節(jié)點和MonitorNode節(jié)點放在同一個機架中,距離非常近,所以其之間的通信成本非常的小,其相互之間還可以作為備份節(jié)點,增強了整個系統(tǒng)的可靠性。
[0024]下面結(jié)合圖2說明本發(fā)明HDFS架構(gòu)的啟動及工作過程。
[0025]I)在HDFS啟動時,MetaDataNode節(jié)點和MonitorNode節(jié)點會同時啟動。
[0026]2)MetaDataNode節(jié)點負責元數(shù)據(jù)信息的處理,判斷FsImage文件和EditLog文件是否存在,如果出現(xiàn)問題,則從MonitorNode節(jié)點進行備份元數(shù)據(jù)的復制;如果沒有問題,則把元數(shù)據(jù)信息讀入內(nèi)存;
[0027]3)查看EditLog文件,確保元數(shù)據(jù)信息得到及時的更新;
[0028]4)日志信息得到更新后,寫回保存元數(shù)據(jù)信息的磁盤,然后往MonitorNode節(jié)點進行備份更新;
[0029]5) MetaDataNode節(jié)點和MonitorNode節(jié)點啟動后,DataNode節(jié)點將處于活躍狀態(tài),有元數(shù)據(jù)信息的更新,會及時的向MetaNodeNode節(jié)點進行反饋,并且會頻繁的發(fā)送心跳消息給MonitorNode節(jié)點,告訴其自己處于活躍狀態(tài)。
[0030]從MetaDataNode節(jié)點和MonitorNode節(jié)點開始啟動到元數(shù)據(jù)的備份和管理,直到DataNode節(jié)點處于活躍狀態(tài)的流程。MetaDataNode還是作為元數(shù)據(jù)節(jié)點,進行核心的元數(shù)據(jù)管理,其中的元數(shù)據(jù)信息同時會在MonitorNode節(jié)點中進行備份,以防止元數(shù)據(jù)信息文件丟失而造成的影響。
[0031]下面在HDFS系統(tǒng)處于活躍狀態(tài)時,計算現(xiàn)有HDFS架構(gòu)中NameNode節(jié)點的單位壓力值,以及本發(fā)明HDFS架構(gòu)中MonitorNode節(jié)點和MetaDataNode節(jié)點的單位壓力值,從而說明本發(fā)明HDFS構(gòu)架在壓力分解方面的效果。[0032]為了保證結(jié)果的準確性,兩種計算方法需在同一網(wǎng)絡環(huán)境和資源環(huán)境下,此外還需考慮Client的單位請求數(shù)以及DataNode的連接數(shù)。所以,在現(xiàn)有HDFS架構(gòu)中,NameNode節(jié)點的負載壓力主要來自于Client的請求操作導致的元數(shù)據(jù)信息更新,以及DataNode節(jié)點的心跳監(jiān)測,而本發(fā)明HDFS中MetaDataNode節(jié)點的負載壓力主要是元數(shù)據(jù)信息的更新,其中,MonitorNode節(jié)點的壓力主要是DataNode節(jié)點的心跳監(jiān)測,此外,MetaDataNode節(jié)點和MonitorNode節(jié)點間還具有交互通信,也會耗費一定的資源,造成一定的負載壓力。所以按照設計過程,最后本發(fā)明HDFS構(gòu)架中的二元節(jié)點的總負載應該超過現(xiàn)有HDFS架構(gòu)中的主控節(jié)點負載,但也應該要遠遠小于兩倍的現(xiàn)有HDFS架構(gòu)中主控節(jié)點負載。本發(fā)明將現(xiàn)有HDFS架構(gòu)中一個節(jié)點的負載壓力分解到兩個節(jié)點后,會使系統(tǒng)更加的穩(wěn)定,主控節(jié)點不再成為性能瓶頸,并且降低了系統(tǒng)故障發(fā)生的概率。在兩個系統(tǒng)完成相同的任務時,要保證完成的時間不會有太大的偏差。 [0033]節(jié)點的負載壓力轉(zhuǎn)化的是節(jié)點需要消耗的CPU和內(nèi)存資源,所以,在計算節(jié)點的負載壓力時,表示成節(jié)點所消耗的資源,同時統(tǒng)計訪問節(jié)點的次數(shù)。令現(xiàn)有HDFS構(gòu)架中NameNode節(jié)點的消耗的資源為Rnn,本發(fā)明HDFS構(gòu)架中MonitorNode節(jié)點的壓力值為Rmn,MetaDataNode節(jié)點的壓力值為Rmdn,本實施例計算以下參數(shù):
[0034]R^b表示原始NameNode節(jié)點在管理j個DataNode節(jié)點時的壓力值;
[0035]表示MonitorNode節(jié)點在管理j個DataNode節(jié)點時的壓力值;
[0036]Rid,,表示MetaDataNode節(jié)點在管理j個DataNode節(jié)點時的壓力值;
[0037]T表示Client發(fā)送的請求數(shù),可以當做是任務集;
[0038]Ravai表示節(jié)點所在的機器剩余可用資源;
[0039]M表示DataNode節(jié)點的數(shù)目;
[0040]VN_n表示訪問NameNode節(jié)點的次數(shù);
[0041 ]VN_md表示訪問MetaDataNode節(jié)點的次數(shù);
[0042]VN_m表示訪問MonitorNode節(jié)點的次數(shù)。
[0043]元數(shù)據(jù)更新發(fā)送給NameNode節(jié)點的請求數(shù)m, j個DataNode節(jié)點的心跳信息。
[0044]對于現(xiàn)有HDFS架構(gòu)中,定義一個三元組<n, R, vn>表示Client發(fā)出一次任務請求tn, NameNode節(jié)點所消耗的資源R,以及訪問節(jié)點的次數(shù)vn。HDFS主控節(jié)點NameNode節(jié)點的壓力負載統(tǒng)計方式為:
[0045](I)系統(tǒng)啟動,元數(shù)據(jù)節(jié)點成功加載到內(nèi)存
[0046](2)初始化三元組〈0,0,0>,直接確定DataNode的節(jié)點數(shù)j,初始化Rnn為0,VN_n為0,記錄當前時間
[0047](3 ) do unt i I任務集T中所有任務完成
[0048](4) for任務集T中每一個任務\
[0049](5)統(tǒng)計 R,統(tǒng)計 vn
[0050](6) if R〈Ravai
[0051](7)修改三元組 <i,Ri, vn>
[0052](8) end if
[0053](9) Ri 累加到 Rm,vn 累加到 VN_n[0054](10) end for
[0055](11) end do
[0056](12) 記錄當前時間
[0057](13) 用(12)的時間減去(2)的時間
[0058]這樣得到NameNode節(jié)點總的消耗資源值和訪問次數(shù)VN_n,得到完成所有任務所花費的時間。
[0059]對于本發(fā)明HDFS架構(gòu),要計算MetaDataNode節(jié)點和MonitorNode節(jié)點的負載壓力。定義一個三元組<n, R, vn_md>表示Client發(fā)出一次任務請求tn,MetaDataNode節(jié)點所消耗的資源R,以及訪問節(jié)點的次數(shù)vn_md。定義一個二元組<R, vn_m, >,表示MonitorNode節(jié)點所消耗的資源,以及訪問節(jié)點的次數(shù)vn_m,則二元節(jié)點的壓力負載統(tǒng)計方式為:
[0060](I)系統(tǒng)啟動,元數(shù)據(jù)節(jié)點成功加載到內(nèi)存
[0061](2)初始化三元組〈0,0, 0>,初始化二元組〈0,0>,直接確定DataNode的節(jié)點數(shù)j,初始化Rmn為0,初始化Rmdn為0,VN_md為0,VN_m為0,記錄當前時間
[0062](3 ) do unt i I任務集T中所有任務完成
[0063](4) for任務集T中每一個任務&
[0064](5)統(tǒng)計 R,統(tǒng)計 vn
[0065](6) if R〈Ravai
[0066](7)修改三元組 <i, Ri, vn_md>,修改二元組 <R, vn_m>
[0067](8) end if
[0068](9) 三元組Ri累加到Rmn,vn_md累加到VN_md, 二元組R累加到Rmdn, vn_m累加至Ij VN_m
[0069](10) end for
[0070](11) end do
[0071](12) 記錄當前時間
[0072](13) 用(12)的時間減去(2)的時間
[0073]通過上述步驟計算得到了 MetaDataNode節(jié)點和MonitorNode節(jié)點的消耗資源值Rl和以及訪問次數(shù),然后與現(xiàn)有HDFS架構(gòu)中主控節(jié)點進行對比,可以確定在不影響整個系統(tǒng)運行性能的前提下,能夠有效的減少現(xiàn)有HDFS架構(gòu)中主控節(jié)點的負載壓力。
【權(quán)利要求】
1.一種HDFS架構(gòu),包括一臺NameNode節(jié)點和多臺DataNode節(jié)點,其特征在于,所述NameNode節(jié)點包括: MetaDataNode節(jié)點,用于Hadoop分布式文件系統(tǒng)中元數(shù)據(jù)的管理;以及MonitorNode節(jié)點,與所述MetaDataNode節(jié)點之間進行數(shù)據(jù)通信連接,用于Hadoop分布式文件系統(tǒng)的監(jiān)測、元數(shù)據(jù)的備份、與所述MetaDataNode節(jié)點之間的數(shù)據(jù)交互。
2.—種HDFS架構(gòu)中NameNode節(jié)點的壓力分解方法,其特征在于,包括: 將HDFS架構(gòu)中NameNode節(jié)點分為MetaDataNode節(jié)點和MonitorNode節(jié)點,所述MetaDataNode節(jié)點與所述MonitorNode節(jié)點之間進行數(shù)據(jù)通信; 所述MetaDataNode節(jié)點用于Hadoop分布式文件系統(tǒng)中元數(shù)據(jù)的管理,所述MonitorNode監(jiān)測Hadoop分布式文件系統(tǒng)、備份元數(shù)據(jù)、與所述MetaDataNode節(jié)點之間交互數(shù)據(jù)。
3.根據(jù)權(quán)利要求2所述HDFS架構(gòu)中NameNode節(jié)點的壓力分解方法,其特征在于,包括: 1)在Hadoop分布式文件系統(tǒng)啟動時,MetaDataNode節(jié)點和MonitorNode節(jié)點會同時啟動; 2)首先由MetaDataNode節(jié)點負責元數(shù)據(jù)信息的處理,判斷FsImage文件和EditLog文件是否存在,如果存在,則從MonitorNode節(jié)點進行備份元數(shù)據(jù)的復制;如果不存在,則把元數(shù)據(jù)信息讀入內(nèi)存; 3)查看EditLog文件,確保元數(shù)據(jù)信息得到及時的更新; 4)日志信息得到更新后,寫回保存元數(shù)據(jù)信息的磁盤,然后往MonitorNode節(jié)點進行備份更新; 5)MetaDataNode節(jié)點和MonitorNode節(jié)點啟動后,DataNode節(jié)點處于活躍狀態(tài),有元數(shù)據(jù)信息的更新,及時的向MetaNodeNode節(jié)點進行反饋,并且會頻繁的發(fā)送心跳消息給MonitorNode節(jié)點,告訴其自己處于活躍狀態(tài)。
【文檔編號】H04L29/08GK103581332SQ201310574038
【公開日】2014年2月12日 申請日期:2013年11月15日 優(yōu)先權(quán)日:2013年11月15日
【發(fā)明者】李春林, 吳艦 申請人:武漢理工大學