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

一種分布式文件系統(tǒng)HDFS的管理方法、裝置及系統(tǒng)與流程

文檔序號(hào):11250888閱讀:408來(lái)源:國(guó)知局
一種分布式文件系統(tǒng)HDFS的管理方法、裝置及系統(tǒng)與流程

本發(fā)明涉及通信領(lǐng)域,具體涉及一種分布式文件系統(tǒng)(hdfs,hadoopdistributedfilesystem)的管理方法及裝置。



背景技術(shù):

名稱(chēng)節(jié)點(diǎn)(以下稱(chēng)為namenode)是hdfs(hadoopdistributedfilesystem,分布式文件系統(tǒng))的元數(shù)據(jù)服務(wù)器,管理并協(xié)調(diào)數(shù)據(jù)節(jié)點(diǎn)(datanode)的工作,其內(nèi)存中保存整個(gè)分布式文件系統(tǒng)的兩類(lèi)元數(shù)據(jù):

(1)文件系統(tǒng)的名字空間,即系統(tǒng)目錄樹(shù);

(2)數(shù)據(jù)塊副本與datanode的映射,即副本的位置。

第(1)類(lèi)元數(shù)據(jù)在namenode上定期持久化,保存為鏡像文件。數(shù)據(jù)塊副本的位置信息沒(méi)有實(shí)現(xiàn)持久化,而是在namenode啟動(dòng)時(shí),通過(guò)接收datanode的塊報(bào)告(blockreport)獲得。namenode的磁盤(pán)上保存操作日志??蛻?hù)端對(duì)數(shù)據(jù)或元數(shù)據(jù)的讀寫(xiě)操作被分解為一條或多條日志存入操作日志中。

namenode啟動(dòng)時(shí),會(huì)將鏡像文件和操作日志讀取到內(nèi)存中,把日志應(yīng)用到名字空間中,使得namenode中的名字空間恢復(fù)到宕機(jī)之前的狀態(tài)。在hadoop集群中一旦namenode宕機(jī),則整個(gè)集群不能再對(duì)外提供服務(wù)。

hadoop社區(qū)對(duì)namenode采用的備份機(jī)制存在各種缺陷,從名稱(chēng)節(jié)點(diǎn)(secondarynamenode)機(jī)制和備用節(jié)點(diǎn)(backupnode)機(jī)制,切換時(shí)間都過(guò)長(zhǎng)且有數(shù)據(jù)丟失的風(fēng)險(xiǎn),且不支持自動(dòng)切換,是冷備/溫備機(jī)制。

hadoop2.0提出的共享存儲(chǔ)(sharedstorage)機(jī)制解決高可用(ha,highavailability)問(wèn)題,在活動(dòng)(active)namenode和備用(standby)namenode之間要有個(gè)共享的存儲(chǔ)日志的地方,activenamenode把editlog文件寫(xiě)到這個(gè)共享的存儲(chǔ)日志的地方,standbynamenode去讀取日志然后執(zhí)行,這樣active和standbynamenode內(nèi)存中的hdfs元數(shù)據(jù)保持著同步。這種方式解決考慮腦裂(brain-split)由于切換不徹底或其他原因,導(dǎo)致客戶(hù)端誤以為出現(xiàn)兩個(gè)活動(dòng)狀態(tài)的主節(jié)點(diǎn)(activemaster),最終使得整個(gè)集群處于混亂狀態(tài),尤其是共享存儲(chǔ)隔離(fencing),要確保只有一個(gè)主nameode向共享存儲(chǔ)中寫(xiě)數(shù)據(jù)。這種解決方式流程復(fù)雜,配置復(fù)雜,對(duì)運(yùn)維要求高。另外,主流的qjm(quorumjournalmanager,集群仲裁管理機(jī)制)ha模式,當(dāng)部署的qjm存儲(chǔ)段進(jìn)程journalnode損壞超過(guò)一半節(jié)點(diǎn)時(shí)會(huì)造成整個(gè)hadoop集群功能不可用。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明提供一種分布式文件系統(tǒng)(hdfs)的數(shù)據(jù)處理方法、裝置及系統(tǒng),能夠提高數(shù)據(jù)同步的速度。

為解決上述技術(shù)問(wèn)題,本發(fā)明提供一種分布式文件系統(tǒng)hdfs的數(shù)據(jù)處理方法,所述方法包括:

名稱(chēng)節(jié)點(diǎn)根據(jù)所述名稱(chēng)節(jié)點(diǎn)對(duì)應(yīng)的切換控制器與集群協(xié)調(diào)服務(wù)器的交互結(jié)果確定所述名稱(chēng)節(jié)點(diǎn)的當(dāng)前狀態(tài);

當(dāng)所述名稱(chēng)節(jié)點(diǎn)的當(dāng)前狀態(tài)為活動(dòng)狀態(tài)時(shí),所述名稱(chēng)節(jié)點(diǎn)通過(guò)實(shí)時(shí)數(shù)據(jù)流通道將數(shù)據(jù)同步給至少一個(gè)備用狀態(tài)的名稱(chēng)節(jié)點(diǎn)。

可選地,

所述名稱(chēng)節(jié)點(diǎn)根據(jù)所述名稱(chēng)節(jié)點(diǎn)對(duì)應(yīng)的切換控制器與集群協(xié)調(diào)服務(wù)器的交互結(jié)果確定所述名稱(chēng)節(jié)點(diǎn)的當(dāng)前狀態(tài)包括:

如果所述名稱(chēng)節(jié)點(diǎn)對(duì)應(yīng)的切換控制器與集群協(xié)調(diào)服務(wù)器交互后獲取到全局鎖,則所述名稱(chēng)節(jié)點(diǎn)根據(jù)所述切換控制器的通知進(jìn)入活動(dòng)狀態(tài);

如果所述名稱(chēng)節(jié)點(diǎn)對(duì)應(yīng)的切換控制器與集群協(xié)調(diào)服務(wù)器交互后未獲取到全局鎖,則所述名稱(chēng)節(jié)點(diǎn)根據(jù)所述切換控制器的通知進(jìn)入備用狀態(tài);

其中,所述全局鎖的個(gè)數(shù)為一個(gè)。

可選地,

當(dāng)所述名稱(chēng)節(jié)點(diǎn)的當(dāng)前狀態(tài)為活動(dòng)狀態(tài)時(shí),所述名稱(chēng)節(jié)點(diǎn)通過(guò)實(shí)時(shí)數(shù)據(jù)流通道將數(shù)據(jù)同步給至少一個(gè)備用狀態(tài)的名稱(chēng)節(jié)點(diǎn)前,還包括:

所述活動(dòng)狀態(tài)的名稱(chēng)節(jié)點(diǎn)與至少一個(gè)備用狀態(tài)的名稱(chēng)節(jié)點(diǎn)之間建立相應(yīng)的實(shí)時(shí)數(shù)據(jù)流通道。

可選地,

所述活動(dòng)狀態(tài)的名稱(chēng)節(jié)點(diǎn)與至少一個(gè)備用狀態(tài)的名稱(chēng)節(jié)點(diǎn)之間建立相應(yīng)的實(shí)時(shí)數(shù)據(jù)流通道包括:

所述活動(dòng)狀態(tài)的名稱(chēng)節(jié)點(diǎn)與備用狀態(tài)的名稱(chēng)節(jié)點(diǎn)握手成功后,接收備用狀態(tài)的名稱(chēng)節(jié)點(diǎn)發(fā)送的注冊(cè)請(qǐng)求;

所述活動(dòng)狀態(tài)的名稱(chēng)節(jié)點(diǎn)向發(fā)送注冊(cè)請(qǐng)求的備用狀態(tài)的名稱(chēng)節(jié)點(diǎn)返回注冊(cè)響應(yīng)后,所述活動(dòng)狀態(tài)的名稱(chēng)節(jié)點(diǎn)與接收到注冊(cè)響應(yīng)的備用狀態(tài)的名稱(chēng)節(jié)點(diǎn)之間建立相應(yīng)的實(shí)時(shí)數(shù)據(jù)流通道。

可選地,

當(dāng)所述名稱(chēng)節(jié)點(diǎn)的當(dāng)前狀態(tài)為活動(dòng)狀態(tài)時(shí),所述名稱(chēng)節(jié)點(diǎn)通過(guò)實(shí)時(shí)數(shù)據(jù)流通道將數(shù)據(jù)同步給至少一個(gè)備用狀態(tài)的名稱(chēng)節(jié)點(diǎn)包括:

所述活動(dòng)狀態(tài)的名稱(chēng)節(jié)點(diǎn)將更新的數(shù)據(jù)緩沖到所述實(shí)時(shí)數(shù)據(jù)流通道;

當(dāng)所述實(shí)時(shí)數(shù)據(jù)流通道的緩沖值達(dá)到預(yù)定的系統(tǒng)閾值時(shí),通過(guò)所述實(shí)時(shí)數(shù)據(jù)流通道將緩沖的數(shù)據(jù)發(fā)送給相應(yīng)的備用狀態(tài)的名稱(chēng)節(jié)點(diǎn)。

可選地,所述方法還包括:

當(dāng)所述名稱(chēng)節(jié)點(diǎn)的當(dāng)前狀態(tài)為備用狀態(tài)時(shí),所述名稱(chēng)節(jié)點(diǎn)對(duì)活動(dòng)狀態(tài)的名稱(chēng)節(jié)點(diǎn)執(zhí)行檢查點(diǎn)操作。

可選地,所述方法還包括:

在所述名稱(chēng)節(jié)點(diǎn)的當(dāng)前狀態(tài)為活動(dòng)狀態(tài)時(shí),如果所述名稱(chēng)節(jié)點(diǎn)出現(xiàn)異常情況,則所述名稱(chēng)節(jié)點(diǎn)將當(dāng)前狀態(tài)從活動(dòng)狀態(tài)切換為備用狀態(tài)。

本發(fā)明還提供一種分布式文件系統(tǒng)hdfs的數(shù)據(jù)處理裝置,設(shè)置于名稱(chēng)節(jié)點(diǎn),所述裝置包括:

確定模塊,用于根據(jù)所述名稱(chēng)節(jié)點(diǎn)對(duì)應(yīng)的切換控制器與集群協(xié)調(diào)服務(wù)器的交互結(jié)果確定所述名稱(chēng)節(jié)點(diǎn)的當(dāng)前狀態(tài);

處理模塊,用于當(dāng)所述確定模塊確定所述名稱(chēng)節(jié)點(diǎn)的當(dāng)前狀態(tài)為活動(dòng)狀態(tài)時(shí),通過(guò)實(shí)時(shí)數(shù)據(jù)流通道將數(shù)據(jù)同步給至少一個(gè)備用狀態(tài)的名稱(chēng)節(jié)點(diǎn)。

可選地,

所述確定模塊用于根據(jù)所述名稱(chēng)節(jié)點(diǎn)對(duì)應(yīng)的切換控制器與集群協(xié)調(diào)服務(wù)器的交互結(jié)果確定所述名稱(chēng)節(jié)點(diǎn)的當(dāng)前狀態(tài)具體是指:

如果所述名稱(chēng)節(jié)點(diǎn)對(duì)應(yīng)的切換控制器與集群協(xié)調(diào)服務(wù)器交互后獲取到全局鎖,則所述名稱(chēng)節(jié)點(diǎn)根據(jù)所述切換控制器的通知進(jìn)入活動(dòng)狀態(tài);

如果所述名稱(chēng)節(jié)點(diǎn)對(duì)應(yīng)的切換控制器與集群協(xié)調(diào)服務(wù)器交互后未獲取到全局鎖,則所述名稱(chēng)節(jié)點(diǎn)根據(jù)所述切換控制器的通知進(jìn)入備用狀態(tài);

其中,所述全局鎖的個(gè)數(shù)為一個(gè)。

可選地,所述裝置還包括:

通道建立模塊,用于當(dāng)所述確定模塊確定所述名稱(chēng)節(jié)點(diǎn)的當(dāng)前狀態(tài)為活動(dòng)狀態(tài)時(shí),與至少一個(gè)備用狀態(tài)的名稱(chēng)節(jié)點(diǎn)之間建立相應(yīng)的實(shí)時(shí)數(shù)據(jù)流通道。

可選地,

所述通道建立模塊,用于當(dāng)所述確定模塊確定所述名稱(chēng)節(jié)點(diǎn)的當(dāng)前狀態(tài)為活動(dòng)狀態(tài)時(shí),與至少一個(gè)備用狀態(tài)的名稱(chēng)節(jié)點(diǎn)之間建立相應(yīng)的實(shí)時(shí)數(shù)據(jù)流通道,具體是指:

所述活動(dòng)狀態(tài)的名稱(chēng)節(jié)點(diǎn)與備用狀態(tài)的名稱(chēng)節(jié)點(diǎn)握手成功后,接收備用狀態(tài)的名稱(chēng)節(jié)點(diǎn)發(fā)送的注冊(cè)請(qǐng)求;

向發(fā)送注冊(cè)請(qǐng)求的備用狀態(tài)的名稱(chēng)節(jié)點(diǎn)返回注冊(cè)響應(yīng)后,與接收到注冊(cè)響應(yīng)的備用狀態(tài)的名稱(chēng)節(jié)點(diǎn)之間建立相應(yīng)的實(shí)時(shí)數(shù)據(jù)流通道。

可選地,

所述處理模塊用于當(dāng)所述確定模塊確定所述名稱(chēng)節(jié)點(diǎn)當(dāng)前為活動(dòng)狀態(tài)時(shí),通過(guò)實(shí)時(shí)數(shù)據(jù)流通道將數(shù)據(jù)同步給至少一個(gè)備用狀態(tài)的名稱(chēng)節(jié)點(diǎn),具體是指:

將更新的數(shù)據(jù)緩沖到所述實(shí)時(shí)數(shù)據(jù)流通道;

當(dāng)所述實(shí)時(shí)數(shù)據(jù)流通道的緩沖值達(dá)到預(yù)定的系統(tǒng)閾值時(shí),通過(guò)所述實(shí)時(shí)數(shù)據(jù)流通道將緩沖的數(shù)據(jù)發(fā)送給相應(yīng)的備用狀態(tài)的名稱(chēng)節(jié)點(diǎn)。

可選地,所述裝置還包括:

檢查點(diǎn)處理模塊,用于當(dāng)所述確定模塊確定所述名稱(chēng)節(jié)點(diǎn)的當(dāng)前狀態(tài)為備用狀態(tài)時(shí),對(duì)活動(dòng)狀態(tài)的名稱(chēng)節(jié)點(diǎn)執(zhí)行檢查點(diǎn)操作。

可選地,所述裝置還包括:

切換模塊,用于在所述名稱(chēng)節(jié)點(diǎn)的當(dāng)前狀態(tài)為活動(dòng)狀態(tài)時(shí),當(dāng)所述名稱(chēng)節(jié)點(diǎn)出現(xiàn)異常情況時(shí),將所述名稱(chēng)節(jié)點(diǎn)的當(dāng)前狀態(tài)從活動(dòng)狀態(tài)切換為備用狀態(tài)。

本發(fā)明還提供一種分布式文件系統(tǒng)hdfs的數(shù)據(jù)處理系統(tǒng),所述系統(tǒng)包括:至少兩個(gè)名稱(chēng)節(jié)點(diǎn)、每個(gè)名稱(chēng)節(jié)點(diǎn)對(duì)應(yīng)的切換控制器、集群協(xié)調(diào)服務(wù)器;

其中,所述名稱(chēng)節(jié)點(diǎn)包括如權(quán)利要求8至14任一所述的分布式文件系統(tǒng)hdfs的數(shù)據(jù)處理裝置;

所述切換控制器用于當(dāng)與所述集群協(xié)調(diào)服務(wù)器交互后獲取到全局鎖后,通知對(duì)應(yīng)的名稱(chēng)節(jié)點(diǎn)進(jìn)入活動(dòng)狀態(tài);還用于當(dāng)與所述集群協(xié)調(diào)服務(wù)器交互后未獲取到全局鎖后,通知對(duì)應(yīng)的名稱(chēng)節(jié)點(diǎn)進(jìn)入備用狀態(tài);以及還用于檢測(cè)對(duì)應(yīng)的名稱(chēng)節(jié)點(diǎn)的運(yùn)行情況,根據(jù)檢測(cè)結(jié)果通知所述對(duì)應(yīng)的名稱(chēng)節(jié)點(diǎn)進(jìn)行狀態(tài)切換;

所述集群協(xié)調(diào)服務(wù)器用于管理當(dāng)前狀態(tài)為活動(dòng)狀態(tài)的名稱(chēng)節(jié)點(diǎn)。

上述技術(shù)方案提高了數(shù)據(jù)同步速度,也提高了主備namenode的切換速度,減少了軟硬件配置,同時(shí)簡(jiǎn)化了運(yùn)維成本。

附圖說(shuō)明

圖1為實(shí)施例一中的分布式文件系統(tǒng)hdfs的數(shù)據(jù)處理方法的流程圖;

圖2為實(shí)施例二中的分布式文件系統(tǒng)hdfs的數(shù)據(jù)處理方法的流程圖;

圖3為實(shí)施例三中的分布式文件系統(tǒng)hdfs的數(shù)據(jù)處理裝置的結(jié)構(gòu)示意圖;

圖4為實(shí)施例四中的分布式文件系統(tǒng)hdfs的數(shù)據(jù)處理系統(tǒng)的結(jié)構(gòu)示意圖;

圖5為實(shí)施例四中的分布式文件系統(tǒng)hdfs的組件示意圖。

具體實(shí)施方式

為使本申請(qǐng)的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,下文中將結(jié)合附圖對(duì)本申請(qǐng)的實(shí)施例進(jìn)行詳細(xì)說(shuō)明。需要說(shuō)明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互任意組合。

下面先對(duì)本發(fā)明實(shí)施例中涉及的namenode、切換控制器以及zookeeper集群做詳細(xì)的介紹。

本發(fā)明實(shí)施例中至少包括兩個(gè)nameode,一個(gè)活動(dòng)狀態(tài)的namenode(以以下稱(chēng)為activenamenode)以及至少一個(gè)備用狀態(tài)的namenode(以下稱(chēng)為standbynamenode),本發(fā)明實(shí)施例中的nameode狀態(tài)可以進(jìn)行切換,對(duì)于任一個(gè)namenode,只要對(duì)應(yīng)的切換控制器獲取到唯一的全局鎖,該namenode就可以進(jìn)入active狀態(tài)。例如,對(duì)于namenodea和namenodeb,假設(shè)當(dāng)前時(shí)刻namenodea為activenamenode,namenodeb為standbynamenode,到了下一時(shí)刻namenodea可能由于異常情況切換為standbynamenode,而namenodeb由于對(duì)應(yīng)的切換控制器獲取到全局鎖從而切換為activenamenode。

activenamenode處于工作態(tài),standbynamenode是activenamenode的熱備份。activenamenode與每個(gè)standbynamenode之間分別直接建立一條實(shí)時(shí)數(shù)據(jù)流通道,可以避免共享存儲(chǔ)會(huì)遇到的“隔離(fencing)”問(wèn)題。

activenamenode的客戶(hù)端對(duì)產(chǎn)生的每一條操作日志首先寫(xiě)一份到本地edits日志文件,同時(shí)會(huì)向standbynamenode的實(shí)時(shí)數(shù)據(jù)流通道中寫(xiě)一份。當(dāng)實(shí)時(shí)數(shù)據(jù)流通道的流緩沖達(dá)到閾值時(shí),將會(huì)同步到standbynamenode節(jié)點(diǎn)上,standbynamenode收到后就會(huì)根據(jù)日志內(nèi)容進(jìn)行操作,這樣來(lái)完成低延遲的操作日志復(fù)制功能,保證activenamenode與standbynamenode的元數(shù)據(jù)的一致性。當(dāng)切換控制器監(jiān)控到activenamenode宕機(jī)后,standbynamenode中任一個(gè)可以實(shí)時(shí)切換到active狀態(tài)。

本發(fā)明實(shí)施中的切換控制器可以是基于zookeeper實(shí)現(xiàn)的切換控制器,主要由兩個(gè)核心組件構(gòu)成:活動(dòng)namenode選舉組件和心跳檢測(cè)組件。

活動(dòng)namenode選舉組件負(fù)責(zé)與集群協(xié)調(diào)服務(wù)器交互,嘗試獲取全局鎖,根據(jù)獲取全局鎖的結(jié)果判斷通知所管理的namenode進(jìn)入active狀態(tài)還是standby狀態(tài)。心跳檢測(cè)組件負(fù)責(zé)檢測(cè)對(duì)應(yīng)的namenode的狀態(tài),以根據(jù)它的狀態(tài)進(jìn)行狀態(tài)切換通知。

本發(fā)明實(shí)施例中的集群協(xié)調(diào)服務(wù)器可以是zookeeper集群協(xié)調(diào)服務(wù)器,zookeeper集群協(xié)調(diào)服務(wù)器提供了集群管理功能,利用zookeeper組件的特性可以實(shí)現(xiàn)namenode高可用功能。本發(fā)明實(shí)施例依靠zookeeper集群的全局鎖機(jī)制來(lái)確保任何時(shí)候只有唯一的acitvenamenode。例如,假設(shè)有三個(gè)namenode,那么其中一個(gè)是activenamenode,其余兩個(gè)是standbynamenode,并且這三個(gè)namenode中的任何一個(gè)都有可能成為activenamenode,這取決于每個(gè)namenode對(duì)應(yīng)的切換控制器是否能獲取到全局鎖。

每個(gè)namenode在zookeeper集群中創(chuàng)建一個(gè)臨時(shí)節(jié)點(diǎn)(以下稱(chēng)為ephemeralnode),一旦namenode異常,不能對(duì)外提供服務(wù),該namenode失效,此時(shí),zookeeper集群將會(huì)在設(shè)定的超時(shí)(timeout)時(shí)間內(nèi)刪除該ephemeralnode,同時(shí)將當(dāng)前的activenamenode的信息寫(xiě)入zookeeper集群。這樣可以實(shí)時(shí)檢測(cè)namenode的當(dāng)前狀態(tài),同時(shí)其它的任何節(jié)點(diǎn)可以籍此獲取當(dāng)前的activenamenode的信息。

實(shí)施例一

如圖1所示,本實(shí)施例提供一種分布式文件系統(tǒng)(hdfs)的數(shù)據(jù)處理方法,所述方法包括:

步驟s11:namenode根據(jù)所述namenode對(duì)應(yīng)的切換控制器與集群協(xié)調(diào)服務(wù)器的交互結(jié)果確定所述namenode的當(dāng)前狀態(tài);

步驟s12:當(dāng)所述namenode的當(dāng)前狀態(tài)為活動(dòng)狀態(tài)時(shí),所述namenode通過(guò)實(shí)時(shí)數(shù)據(jù)流通道將數(shù)據(jù)同步給至少一個(gè)備用狀態(tài)的namenode。

上述技術(shù)方案實(shí)現(xiàn)了namenode間數(shù)據(jù)的實(shí)時(shí)同步,提高了數(shù)據(jù)同步的速度,保證了主備元數(shù)據(jù)的一致性。

可選地,namenode根據(jù)namenode對(duì)應(yīng)的切換控制器與集群的交互結(jié)果確定namenode的當(dāng)前狀態(tài)包括:

如果所述namenode對(duì)應(yīng)的切換控制器與集群協(xié)調(diào)服務(wù)器交互后獲取到全局鎖,則所述namenode根據(jù)所述切換控制器的通知進(jìn)入活動(dòng)狀態(tài);如果所述namenode對(duì)應(yīng)的切換控制器與集群協(xié)調(diào)服務(wù)器交互后未獲取到全局鎖,則所述namenode根據(jù)所述切換控制器通知進(jìn)入備用狀態(tài);其中,所述全局鎖的個(gè)數(shù)為一個(gè)。

可選地,步驟s12之前,所述方法還包括:所述活動(dòng)狀態(tài)的namenode與至少一個(gè)備用狀態(tài)的namenode之間建立相應(yīng)的實(shí)時(shí)數(shù)據(jù)流通道。

其中,可以通過(guò)以下方式建立相應(yīng)的實(shí)時(shí)數(shù)據(jù)流通道:

所述活動(dòng)狀態(tài)的namenode與至少一個(gè)備用狀態(tài)的namenode之間建立相應(yīng)的實(shí)時(shí)數(shù)據(jù)流通道包括:所述活動(dòng)狀態(tài)的namenode與備用狀態(tài)的namenode握手成功后,接收備用狀態(tài)的namenode發(fā)送的注冊(cè)請(qǐng)求;所述活動(dòng)狀態(tài)的namenode向發(fā)送注冊(cè)請(qǐng)求的備用狀態(tài)的namenode返回注冊(cè)響應(yīng)后,所述活動(dòng)狀態(tài)的namenode與接收到注冊(cè)響應(yīng)的備用狀態(tài)的namenode之間建立相應(yīng)的實(shí)時(shí)傳輸流通道。

可選地,所述活動(dòng)狀態(tài)的namenode通過(guò)實(shí)時(shí)數(shù)據(jù)流通道將數(shù)據(jù)同步給至少一個(gè)備用狀態(tài)的namenode包括:

所述活動(dòng)狀態(tài)的namenode將更新的數(shù)據(jù)緩沖到所述實(shí)時(shí)傳輸流通道;

當(dāng)所述實(shí)時(shí)傳輸流通道的緩沖值達(dá)到預(yù)定的系統(tǒng)閾值時(shí),通過(guò)所述實(shí)時(shí)傳輸流通道將緩沖的數(shù)據(jù)發(fā)送給相應(yīng)的備用狀態(tài)的namenode。

可選地,所述方法還包括:

當(dāng)所述namenode的當(dāng)前狀態(tài)為備用狀態(tài)時(shí),所述namenode對(duì)所述活動(dòng)狀態(tài)的namenode執(zhí)行檢查點(diǎn)操作;

可選地,所述方法還包括:

在所述namenode的當(dāng)前狀態(tài)為活動(dòng)狀態(tài)時(shí),如果所述namenode出現(xiàn)異常情況,則所述namenode將當(dāng)前狀態(tài)從活動(dòng)狀態(tài)切換為備用狀態(tài)。

上述技術(shù)方案提高了數(shù)據(jù)同步速度,也提高了主備namenode的切換速度,減少了軟硬件配置,同時(shí)簡(jiǎn)化運(yùn)維成本。

于實(shí)際應(yīng)用中,在銀行、證券等行業(yè)硬件平臺(tái)的配置可靠性很高,這些行業(yè)不需要再使用共享存儲(chǔ)再保存元數(shù)據(jù)信息,本發(fā)明實(shí)施例提供的方案可以為此類(lèi)用戶(hù)提供一種輕量型的namenode解決方案,使得namenode間實(shí)時(shí)同步操作日志,不再通過(guò)共享存儲(chǔ)方式實(shí)現(xiàn)namenode的高可用功能,而且,支持namenode手動(dòng)/自動(dòng)切換,減少了宕機(jī)切換時(shí)間,減少了軟硬件配置,簡(jiǎn)化了運(yùn)維。

實(shí)施例二

本實(shí)施例描述實(shí)施例一提供的方案在zookeeper集群的應(yīng)用。

如圖2所示,本實(shí)施例提供的一種分布式文件系統(tǒng)(hdfs)的數(shù)據(jù)處理方法包括以下步驟:

步驟s201:配置至少兩個(gè)namenode,其中一個(gè)namenode確定為activenamenode,另外至少一個(gè)為standbynamenode,分布式系統(tǒng)只使用activenamenode提供服務(wù),activenamenode可以作為主namenode,standbynamenode作為備namenode;

步驟s202:每個(gè)namenode都讀取本地配置,上電啟動(dòng)后進(jìn)入standby狀態(tài);

步驟s203:當(dāng)任一namenode上電初始化之后,每個(gè)namenode對(duì)應(yīng)的切換控制器分別與zookeeper集群交互,根據(jù)獲取全局鎖的結(jié)果判斷通知所管理的namenode進(jìn)入active狀態(tài)還是standby狀態(tài);

當(dāng)任一namenode進(jìn)入active狀態(tài)后就可以對(duì)外提供服務(wù),其它namenode則進(jìn)入standby狀態(tài),時(shí)刻準(zhǔn)備接管服務(wù)。

步驟s204:如果切換控制器獲取到全局鎖,則對(duì)應(yīng)的namenode進(jìn)入active狀態(tài);如果未獲取到全局鎖,則對(duì)應(yīng)的namenode進(jìn)入standby狀態(tài);

步驟s205:activenamenode通過(guò)rpc(remoteprocedurecall,遠(yuǎn)程過(guò)程調(diào)用)調(diào)用與standbynamenode握手,通知standbynamenode該namenode已經(jīng)是active狀態(tài),請(qǐng)standbynamenode來(lái)注冊(cè);

步驟s206:standbynamenode向activenamenode發(fā)起注冊(cè)rpc調(diào)用請(qǐng)求消息;

步驟s207:activenamenode向standbynamenode發(fā)起注冊(cè)rpc調(diào)用響應(yīng)消息;

步驟s208:standbynamenode收到注冊(cè)rpc調(diào)用響應(yīng)消息后,啟動(dòng)檢查點(diǎn)(checkpointer)線(xiàn)程;

步驟s209:activenamenode所有寫(xiě)操作都會(huì)實(shí)時(shí)更新本地日志log(edits文件數(shù)據(jù)),同時(shí)向?qū)崟r(shí)數(shù)據(jù)流通道寫(xiě)一份;

步驟s210:當(dāng)實(shí)時(shí)數(shù)據(jù)流通道的流緩沖達(dá)到預(yù)定的系統(tǒng)閾值時(shí),通過(guò)實(shí)時(shí)數(shù)據(jù)流通道將數(shù)據(jù)發(fā)送給standbynamenode,standbynamenode根據(jù)該數(shù)據(jù)更新本機(jī)fsimage和edits文件,并在內(nèi)存中維護(hù)和activenamenode一樣的元數(shù)據(jù)。當(dāng)所有的日志同步到standbynamenode內(nèi)存以及本地文件成功后,activenamenode向客戶(hù)端返回操作成功響應(yīng)。在activenamenode宕機(jī)之后,standbynamenode擁有了與activenamenod基本一致的元數(shù)據(jù)。

activenamenode接受客戶(hù)端操作請(qǐng)求,實(shí)時(shí)將請(qǐng)求的editlog信息發(fā)送到standbynamenode,實(shí)現(xiàn)了主備元數(shù)據(jù)的一致性。

當(dāng)activenamenode故障異常退出時(shí),對(duì)應(yīng)的切換控制器判定activenamenode無(wú)法提供服務(wù),就將全局鎖釋放出來(lái),其它standbynamenode的切換控制器一旦獲取到全局鎖就通知對(duì)應(yīng)的standbynamenode進(jìn)入active狀態(tài),接管對(duì)外服務(wù)。

步驟s211:standbynamenode的checkpoint觸發(fā)后,standbynamenode執(zhí)行檢查點(diǎn)流程,檢查點(diǎn)流程是將standbynamenode內(nèi)存的image與editlog進(jìn)行合并,生成fsimage文件,同時(shí)將fsimage文件傳輸給acitvenamenode;

其中,image是元數(shù)據(jù)在內(nèi)存中的存儲(chǔ)結(jié)構(gòu),editlog是一條條的操作日志記錄,檢查點(diǎn)操作也就是將所有的editlog的操作日志在standbynamenode中重新操作一次,并更新到image中,從而保持主備一致。

步驟s212:當(dāng)activenamenode發(fā)現(xiàn)standbynamenode宕機(jī)時(shí),activenamenode記錄同步數(shù)據(jù)操作事務(wù)id,當(dāng)standbynamenode恢復(fù)后繼續(xù)同步。

步驟s213:datanode的塊報(bào)告(blockreport)等rpc操作會(huì)發(fā)向其它所有namenode,使得每個(gè)namenode的塊位置映射(blocklocationsmap)都是最新的,這樣可以做到切換主備namenode后,原來(lái)的備namenode(也即是切換后新的主namenode)不再需要blockreport的時(shí)間??蛻?hù)端(client)通過(guò)rpc的代理(proxy)與namenode交互。在client會(huì)有多個(gè)代理同時(shí)存在(代理的數(shù)量可以與namenode的總數(shù)量相同),分別代表與active和standby的namenode的連接。當(dāng)client與activenamenode正常通信的clientproxy收到rpc返回的特殊standby異常時(shí),說(shuō)明這個(gè)activenamenode已經(jīng)變成了standby模式,所以觸發(fā)故障切換,此后的rpc都是發(fā)往另外一個(gè)namenode,也就是namenode發(fā)生了主備切換。

上述技術(shù)方案提高了數(shù)據(jù)同步速度,也提高了主備namenode的切換速度,減少了軟硬件配置,同時(shí)簡(jiǎn)化運(yùn)維成本。

下面以hdfs聯(lián)邦(federation)機(jī)制為例進(jìn)一步說(shuō)明本發(fā)明實(shí)施例中的的分布式文件系統(tǒng)hdfs的數(shù)據(jù)處理方法。

federation是由多個(gè)ns(namespace,命名空間)組成的,每個(gè)ns又是由一個(gè)或多個(gè)namenode組成,因此可以實(shí)現(xiàn)高可用ha。多個(gè)namenode之間是聯(lián)合的,共同為同一個(gè)federation服務(wù),同時(shí)每個(gè)namenode有自己的作用域和存儲(chǔ)空間,彼此相互獨(dú)立且不需要互相協(xié)調(diào),每個(gè)namenode各自分工,管理自己的區(qū)域。

每個(gè)ns的namenode都可以采用前述實(shí)施例中的技術(shù)方案進(jìn)行數(shù)據(jù)實(shí)時(shí)同步和主備切換,從而實(shí)現(xiàn)ns的ha。

實(shí)施例三

如圖3所示,本實(shí)施例提供一種分布式文件系統(tǒng)hdfs的數(shù)據(jù)處理裝置,設(shè)置于名稱(chēng)節(jié)點(diǎn)namenode,所述裝置包括:

確定模塊101,用于根據(jù)所述namenode對(duì)應(yīng)的切換控制器與集群協(xié)調(diào)服務(wù)器的交互結(jié)果確定所述namenode的當(dāng)前狀態(tài);

處理模塊102,用于當(dāng)所述確定模塊確定所述namenode當(dāng)前為活動(dòng)狀態(tài)時(shí),通過(guò)實(shí)時(shí)數(shù)據(jù)流通道將數(shù)據(jù)同步給至少一個(gè)備用狀態(tài)的namenode。

可選地,

所述確定模塊用于根據(jù)所述namenode對(duì)應(yīng)的切換控制器與集群的交互結(jié)果確定所述namenode的當(dāng)前狀態(tài)具體是指:

如果所述namenode對(duì)應(yīng)的切換控制器與集群協(xié)調(diào)服務(wù)器交互后獲取到全局鎖,則所述namenode根據(jù)所述切換控制器的通知進(jìn)入活動(dòng)狀態(tài);

如果所述namenode對(duì)應(yīng)的切換控制器與集群協(xié)調(diào)服務(wù)器交互后未獲取到全局鎖,則所述namenode根據(jù)所述切換控制器的通知進(jìn)入備用狀態(tài);

其中,所述全局鎖的個(gè)數(shù)為一個(gè)。

可選地,所述裝置還包括:

通道建立模塊103,用于當(dāng)所述確定模塊確定所述namenode當(dāng)前為活動(dòng)狀態(tài)時(shí)與至少一個(gè)備用狀態(tài)的namenode之間建立相應(yīng)的實(shí)時(shí)數(shù)據(jù)流通道。

可選地,

所述通道建立模塊103用于當(dāng)所述確定模塊確定所述namenode當(dāng)前為活動(dòng)狀態(tài)時(shí)與至少一個(gè)備用狀態(tài)的namenode之間建立相應(yīng)的實(shí)時(shí)數(shù)據(jù)流通道具體是指:

所述活動(dòng)狀態(tài)的namenode與備用狀態(tài)的namenode握手成功后,接收備用狀態(tài)的namenode發(fā)送的注冊(cè)請(qǐng)求;

向發(fā)送注冊(cè)請(qǐng)求的備用狀態(tài)的namenode返回注冊(cè)響應(yīng)后,與接收到注冊(cè)響應(yīng)的備用狀態(tài)的namenode之間建立相應(yīng)的實(shí)時(shí)傳輸流通道。

可選地,

所述處理模塊102用于當(dāng)所述確定模塊確定所述namenode當(dāng)前為活動(dòng)狀態(tài)時(shí),通過(guò)實(shí)時(shí)數(shù)據(jù)流通道將數(shù)據(jù)同步給至少一個(gè)備用狀態(tài)的namenode具體是指:

將更新的數(shù)據(jù)緩沖到所述實(shí)時(shí)傳輸流通道;

當(dāng)所述實(shí)時(shí)傳輸流通道的緩沖值達(dá)到預(yù)定的系統(tǒng)閾值時(shí),通過(guò)所述實(shí)時(shí)傳輸流通道將緩沖的數(shù)據(jù)發(fā)送給相應(yīng)的備用狀態(tài)的namenode。

可選地,所述裝置還包括:

檢查點(diǎn)處理模塊104,用于當(dāng)所述確定模塊確定所述namenode當(dāng)前狀態(tài)為備用狀態(tài)時(shí),對(duì)活動(dòng)狀態(tài)的namenode執(zhí)行檢查點(diǎn)操作。

可選地,所述裝置還包括:

切換模塊105,用于當(dāng)所述活動(dòng)狀態(tài)的namenode故障異常時(shí),將所述namenode的當(dāng)前狀態(tài)切換為備用狀態(tài)。

實(shí)施例四

如圖4所示,一種分布式文件系統(tǒng)hdfs的數(shù)據(jù)處理系統(tǒng),包括:namenode10、切換控制器20、集群協(xié)調(diào)服務(wù)器30;

其中,所述namenode包括如權(quán)利要求8至14任一所述的分布式文件系統(tǒng)hdfs的數(shù)據(jù)處理裝置;

所述切換控制器20用于當(dāng)與所述集群協(xié)調(diào)服務(wù)器交互后獲取到全局鎖后,通知對(duì)應(yīng)的namenode進(jìn)入活動(dòng)狀態(tài);還用于當(dāng)與所述集群協(xié)調(diào)服務(wù)器交互后未獲取到全局鎖后,通知對(duì)應(yīng)的namenode進(jìn)入備用狀態(tài);以及還用于檢測(cè)對(duì)應(yīng)的namenode的運(yùn)行情況,根據(jù)檢測(cè)結(jié)果對(duì)所述對(duì)應(yīng)的namenode進(jìn)行狀態(tài)切換;

所述集群協(xié)調(diào)服務(wù)器30用于對(duì)當(dāng)前狀態(tài)為活動(dòng)狀態(tài)的namenode的管理。

如圖5所示,為本發(fā)明實(shí)施例中的分布式文件系統(tǒng)hdfs的數(shù)據(jù)處理系統(tǒng)的一個(gè)具體實(shí)例。本實(shí)例中集群協(xié)調(diào)服務(wù)器是zookeeper集群協(xié)調(diào)服務(wù)器,切換控制器包括活動(dòng)namenode選舉組件和心跳檢測(cè)組件。

以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。本領(lǐng)域普通技術(shù)人員可以理解上述方法中的全部或部分步驟可通過(guò)程序來(lái)指令相關(guān)硬件完成,所述程序可以存儲(chǔ)于計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,如只讀存儲(chǔ)器、磁盤(pán)或光盤(pán)等??蛇x地,上述實(shí)施例的全部或部分步驟也可以使用一個(gè)或多個(gè)集成電路來(lái)實(shí)現(xiàn),相應(yīng)地,上述實(shí)施例中的各模塊/模塊可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的形式實(shí)現(xiàn)。本申請(qǐng)不限制于任何特定形式的硬件和軟件的結(jié)合。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
威信县| 巴东县| 莱州市| 东乌| 安顺市| 汾西县| 天水市| 财经| 图片| 正阳县| 房产| 石棉县| 普宁市| 綦江县| 黄平县| 公安县| 崇礼县| 平南县| 洪湖市| 麻栗坡县| 建宁县| 玉溪市| 安徽省| 南京市| 建瓯市| 威海市| 贡觉县| 宁明县| 鲁山县| 滨海县| 和龙市| 桃园县| 崇文区| 璧山县| 望奎县| 宜都市| 建德市| 宁津县| 武宁县| 宜春市| 崇仁县|