欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種hdfs高可用性方案的實現(xiàn)方法

文檔序號:9289975閱讀:560來源:國知局
一種hdfs高可用性方案的實現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及Hadoop分布式文件系統(tǒng)高可用性領(lǐng)域,關(guān)于一種引入熱備NameNode的HDFS高可用性方案的實現(xiàn)方法。
【背景技術(shù)】
[0002]Hadoop提供了一個能夠運行在商用PC機(jī)上的Hadoop分布式文件系統(tǒng)HDFS。它為應(yīng)用程序提供了很高的吞吐量,這非常適合于大規(guī)模數(shù)據(jù)的處理。HDFS在設(shè)計之初便提出了這樣一個假設(shè):將計算移動到數(shù)據(jù)端比將數(shù)據(jù)移動到計算端更加廉價。其中的核心思想便是把大量的應(yīng)用計算移動到數(shù)據(jù)所存儲的地方,然后在這些數(shù)據(jù)上面執(zhí)行這些計算,這樣便大大提高Hadoop的吞吐量。
[0003]其中HDFS (Hadoop Distributed File System, Hadoop 分布式文件系統(tǒng))是Hadoop框架的一個底層模塊,Hadoop的其它部分組件,如針對分布式計算的編程模型Map/Reduce框架、用于存儲結(jié)構(gòu)化數(shù)據(jù)的非關(guān)系型數(shù)據(jù)庫HBase等等,都是基于HDFS之上。該分布式文件系統(tǒng)具有高容錯的特點,并且設(shè)計的初衷便是用來部署在廉價的硬件之上。HDFS可以提供高吞吐量的數(shù)據(jù)訪問,這樣一來,就非常適合用于處理海量數(shù)據(jù)集上的程序應(yīng)用。
[0004]HDFS采用的是經(jīng)典的主/從Master/Slave架構(gòu),在一個搭建了 HDFS的集群中,往往是由一個NameNode節(jié)點和一定數(shù)目的DataNodes節(jié)點組成的。NameNode是HDFS系統(tǒng)的核心,它是一個元數(shù)據(jù)服務(wù)器,用來管理文件系統(tǒng)中的命名空間以及處理客戶端對文件系統(tǒng)的訪問請問。采用單一的NameNode服務(wù)器,優(yōu)點便是容易實現(xiàn),并且可以簡單有效的來管理元數(shù)據(jù)。但同時也暴露出HDFS系統(tǒng)的一個致命弱點,存在著一個SPOF(Single Point Of Failure)問題,即HDFS的中心服務(wù)器NameNode是單點的,它的崩潰,輕則使系統(tǒng)耗費數(shù)小時的時間重啟,以至文件系統(tǒng)不可訪問,重則丟失所有的文件數(shù)據(jù)。
[0005]Hadoop當(dāng)時設(shè)計的初衷便是將其部署在廉價的機(jī)器之上的,硬件錯誤被當(dāng)成一種常態(tài)而不是異常,因此由于NameNode服務(wù)器的硬件故障而導(dǎo)致整個分布式集群崩潰的可能性是存在的。除了上述不可控制的意外,在現(xiàn)實中,很多時候,節(jié)點的下線并非是這些不可控制的意外,而是一些有計劃的關(guān)機(jī)或者軟硬件的升級。對一些Hadoop實時應(yīng)用來說,集群的不間斷服務(wù)顯得尤為重要。在Hadoop中,由于NameNode是一個關(guān)鍵節(jié)點,就需要對NameNode構(gòu)建高可用方案。

【發(fā)明內(nèi)容】

[0006]本發(fā)明的目的在于:鑒于現(xiàn)有方法存在的上述問題,提出了一個高可用的HDFS解決方案,解決HDFS中NameNode單點故障問題,在Active NameNode失效后,能夠自動切換到Standby NameNode,接管Active NameNode之前的工作,對外提供服務(wù),而無需人工干預(yù)。
[0007]本發(fā)明解決其技術(shù)問題的技術(shù)方案是:
1、元數(shù)據(jù)同步: 在文件系統(tǒng)中,文件和目錄是文件系統(tǒng)的基本元素。在本發(fā)明中,將這些元素被抽象成INode,每一個文件或目錄都對應(yīng)一個唯一的INode,INode存儲了名字信息(分別對應(yīng)文件或目錄的名字),創(chuàng)建時間、修改時間、父目錄等信息,這些都是目錄和文件的一些公共屬性。有了 INode信息,就可以構(gòu)建整個文件系統(tǒng)的層次結(jié)構(gòu),并保存每個文件或目錄的屬性信息,用戶就可以對文件和目錄進(jìn)行創(chuàng)建、刪除等操作。這些儲存在內(nèi)存中的INode信息即為內(nèi)存元數(shù)據(jù)。
[0008]本發(fā)明提出一種元數(shù)據(jù)同步的機(jī)制來保持Standby NameNode與Active NameNode的名字空間的一致性。在這里,該機(jī)制分為兩個步驟:
I) Standby NameNode冗余記錄下Client發(fā)來的命令,于是在集群中也多了一份EditLog文件,提高了 EditLog的可靠性。
[0009]2) Active NameNode在它的EditLog命令數(shù)目超過一定閾值后,自動與StandbyNameNode 的 EditLog 進(jìn)行同步。
[0010]2、失效備援:
I)失效檢測
本發(fā)明采用心跳信息機(jī)制來檢測Active NameNode是否失效。每個DataNode會向Active NameNode發(fā)送心跳信息,如果Active NameNode長時間未收到該DataNode發(fā)來的心跳信息,那么Active NameNode會認(rèn)為此DataNode已經(jīng)不可用,不再將新1請求轉(zhuǎn)發(fā)到這些數(shù)據(jù)節(jié)點上,并將該DataNode標(biāo)記為不可用。如果Active NameNode收到心跳信息,那么Active NameNode會對此心跳信息做出響應(yīng)。該DataNode在收到Active NameNode發(fā)來的心跳響應(yīng)信息后,等待一段時間t后繼續(xù)發(fā)送心跳信息。如果該DataNode在超過時間t后未收到Active NameNode發(fā)來的響應(yīng)信息,那么表明該Active NameNode已經(jīng)失效,此時系統(tǒng)需要進(jìn)行切換NameNode。
[0011]2)請求 Standby NameNode
DataNode在檢測到Active NameNode失效之后,將該Active NameNode的狀態(tài)標(biāo)記為不可用。然后查詢內(nèi)存中的IpTable,找到Standby NameNode的Ip地址進(jìn)行連接。如果連接成功,則向該Standby NameNode發(fā)送服務(wù)請求,Standby NameNode在收到該請求后,響應(yīng)該服務(wù)請求。
[0012]3)接管集群
Standby NameNode在收到連接請求之后,將掃描EditLog文件,將EditLog中的所有命令操作與內(nèi)存中元數(shù)據(jù)進(jìn)行合并。導(dǎo)入完成之后,Standby NameNode便轉(zhuǎn)入Active狀態(tài),成為新的Active NameNode,為集群提供服務(wù)。
[0013]本發(fā)明的有益效果:
1、本發(fā)明能夠完全移除集群中的單點故障問題,即集群中任意一個節(jié)點失效均不影響集群的繼續(xù)運行。
[0014]2、本發(fā)明通過在HDFS運行過程中周期性地同步兩臺NameNode的元數(shù)據(jù),大大降低系統(tǒng)在切換時候所需要的時間。
[0015]3、本發(fā)明能夠自動檢測已經(jīng)失效的NameNode,并自動切換到熱備的NameNode,而無需人工切換。
【附圖說明】
[0016]圖1是本發(fā)明的總體架構(gòu)圖。
[0017]圖2是本發(fā)明的失效切換流程圖。
【具體實施方式】
[0018]下面結(jié)合附圖和具體實施應(yīng)用過程對本發(fā)明進(jìn)一步說明:
參照圖1總體架構(gòu)圖介紹本發(fā)明的實現(xiàn)細(xì)節(jié):
在本發(fā)明中,NameNode是整個集群的中心節(jié)點,存儲了整個文件系統(tǒng)的元數(shù)據(jù)。NameNode還負(fù)責(zé)維護(hù)整個名字空間,以及響應(yīng)客戶端的讀寫請求。DataNode則是一個存儲了具體應(yīng)用數(shù)據(jù)的節(jié)點。在HDFS中,系統(tǒng)將超過一定大小的文件分成一個個固定大小的數(shù)據(jù)塊存儲在DataNode上。并且通常這些數(shù)據(jù)塊都有多個備份存儲在不同的DataNode上面,以防DataNode的失效所導(dǎo)致數(shù)據(jù)塊的不可用。
[0019]在NameNode中,為了訪問性能,把所有的元數(shù)據(jù)都駐留在內(nèi)存中。所以同DataNode相比,NameNode需要更多的內(nèi)存。對文件系統(tǒng)的操作,如創(chuàng)建,讀取和寫入都是由DataNode根據(jù)NameNode所發(fā)來的指令完成。NameNode使用叫做EditLog的事務(wù)日志來記錄每一個對文件系統(tǒng)元數(shù)據(jù)的改變,如在HDFS中創(chuàng)建一個新的文件,NameNode將會在EditLog中插入一條記錄來記錄這個改變。整個文件系統(tǒng)命名空間,包括文件塊的映射表和文件系統(tǒng)的配置都存在一個叫FsImage的文件中。
[0020]在NameNode初始化過程中,NameNode將從磁盤中讀取FsImage (文件系統(tǒng)鏡像文件)文件,并應(yīng)用到內(nèi)存中,在內(nèi)存中生成元數(shù)據(jù)。然后向集群中所有DataNode廣播上線通知,表明該N
當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
赤峰市| 宽甸| 扎赉特旗| 高唐县| 河北区| 寿阳县| 玉环县| 滁州市| 金阳县| 漳浦县| 民勤县| 隆安县| 阿拉善左旗| 肥城市| 定结县| 苏州市| 临沧市| 武山县| 龙游县| 桦甸市| 临颍县| 浦江县| 新源县| 晋州市| 清徐县| 克什克腾旗| 独山县| 宣威市| 雅江县| 广丰县| 宁陕县| 泽普县| 三亚市| 洛南县| 新河县| 山阴县| 浦县| 陈巴尔虎旗| 车险| 商洛市| 盐城市|