基于分布式存儲(chǔ)系統(tǒng)的NameNode切換方法和切換裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,具體而言,涉及一種基于分布式存儲(chǔ)系統(tǒng)的NameNode切換方法和一種基于分布式存儲(chǔ)系統(tǒng)的NameNode切換裝置。
【背景技術(shù)】
[0002]目前,繼云計(jì)算后,大數(shù)據(jù)成為當(dāng)前科技領(lǐng)域備受關(guān)注的新動(dòng)向,大數(shù)據(jù)需要有效地處理大量的容忍經(jīng)過(guò)時(shí)間內(nèi)的數(shù)據(jù),其中,該數(shù)據(jù)包括:大規(guī)模并行處理(M a s s i V eParallel Processor,MPP)數(shù)據(jù)庫(kù)、數(shù)據(jù)挖掘電網(wǎng)、分布式文件系統(tǒng)、分布式數(shù)據(jù)庫(kù)、云計(jì)算平臺(tái)、互聯(lián)網(wǎng)和可擴(kuò)展的存儲(chǔ)系統(tǒng)。Apache Hadoop作為一個(gè)開(kāi)源分布式系統(tǒng)基礎(chǔ)架構(gòu),由Apache基金會(huì)開(kāi)發(fā),用戶可以在不了解分布式底層細(xì)節(jié)的情況下在Hadoop基礎(chǔ)上開(kāi)發(fā)分布式程序,進(jìn)行數(shù)據(jù)分布式存儲(chǔ),從而可以充分利用集群的威力實(shí)現(xiàn)高速運(yùn)算和存儲(chǔ)。但是,在Hadoop大數(shù)據(jù)存儲(chǔ)過(guò)程中,由于Hadoop架構(gòu)的設(shè)計(jì)存在缺陷,雖然Hadoop為分布式存儲(chǔ),但是由于NameNode(管理文件系統(tǒng)的命名空間)為單節(jié)點(diǎn),NameNode本身就不可避免地具有單點(diǎn)失效的風(fēng)險(xiǎn),如果NameNode存在故障,則需重啟NameNode,使整個(gè)Hadoop文件系統(tǒng)HDFS(Hadoop Distributed File System,分布式文件系統(tǒng))無(wú)可用性,同時(shí),關(guān)閉了NameNode后的數(shù)據(jù)恢復(fù)時(shí)間與文件系統(tǒng)大小成正比的關(guān)系。
[0003]在相關(guān)技術(shù)中,元數(shù)據(jù)備份方案利用了Hadoop自身的Failover(失效轉(zhuǎn)移)措施,NameNode可以將元數(shù)據(jù)信息保存到多個(gè)目錄。一般的做法是,選擇一個(gè)本地目錄和一個(gè)遠(yuǎn)程目錄(通過(guò)NFS(Network File System,網(wǎng)絡(luò)文件系統(tǒng))進(jìn)行共享),當(dāng)NameNode發(fā)生故障時(shí),可以啟動(dòng)備用機(jī)器的NameNode,加載遠(yuǎn)程目錄中的元數(shù)據(jù)信息,提供服務(wù)。當(dāng)將元數(shù)據(jù)做了備份且NameNode出現(xiàn)故障恢復(fù)服務(wù)時(shí),需要重新啟動(dòng)NameNode并手動(dòng)恢復(fù)元數(shù)據(jù),且NameNode的恢復(fù)時(shí)間與文件系統(tǒng)規(guī)模成正比。
[0004]因此,在NameNode出現(xiàn)故障時(shí),如何縮短N(yùn)ameNode服務(wù)恢復(fù)時(shí)間,使NameNode可以實(shí)時(shí)提供服務(wù),進(jìn)而提高基于Hadoop的分布式存儲(chǔ)系統(tǒng)的穩(wěn)定性,成為亟待解決的問(wèn)題。
【發(fā)明內(nèi)容】
[0005]本發(fā)明正是基于上述問(wèn)題,提出了一種新的技術(shù)方案,一方面,可以有效地消除現(xiàn)有的基于Hadoop的分布式存儲(chǔ)系統(tǒng)的單點(diǎn)故障,提高了系統(tǒng)的可用性;另一方面,當(dāng)主NameNode出現(xiàn)故障時(shí),可以迅速地切換至備份的NameNode,有效地縮短N(yùn)ameNode服務(wù)恢復(fù)的時(shí)間,使NameNode可以實(shí)時(shí)提供服務(wù),進(jìn)而提高分布式存儲(chǔ)系統(tǒng)的穩(wěn)定性。
[0006]有鑒于此,本發(fā)明提出了一種基于分布式存儲(chǔ)系統(tǒng)的NameNode切換方法,包括:將主NameNode中的存儲(chǔ)數(shù)據(jù)通過(guò)預(yù)設(shè)數(shù)據(jù)備份方式備份至從NameNode中,以完成數(shù)據(jù)同步存儲(chǔ)過(guò)程;通過(guò)所述從NameNode檢測(cè)所述主NameNode是否停止提供數(shù)據(jù)服務(wù);根據(jù)檢測(cè)結(jié)果確定是否將與所述主NameNode連接的虛擬IP地址切換連接至所述從NameNode。
[0007]在該技術(shù)方案中,通過(guò)在基于分布式存儲(chǔ)系統(tǒng)中配置兩個(gè)NameNode,任選其中的一個(gè)NameNode為主NameNode,則另一個(gè)NameNode為從NameNode,且配置主NameNode和從NameNode共用一個(gè)虛擬IP(Internet Protocol,網(wǎng)絡(luò)之間互連的協(xié)議)地址,進(jìn)而首先將主NameNode中的存儲(chǔ)數(shù)據(jù)通過(guò)預(yù)設(shè)數(shù)據(jù)備份方式同步備份存儲(chǔ)至從NameNode中,使兩者中的存儲(chǔ)數(shù)據(jù)完全相同,然后通過(guò)從NameNode來(lái)檢測(cè)主NameNode是否在正常提供數(shù)據(jù)服務(wù),以根據(jù)檢測(cè)結(jié)果確定是否將與主NameNode連接的虛擬IP地址切換連接至從NameNode,S卩先將主NameNode連接至唯一的虛擬IP地址由該主NameNode提供數(shù)據(jù)服務(wù),如此,一方面,可以有效地消除現(xiàn)有的基于Hadoop的分布式存儲(chǔ)系統(tǒng)的單點(diǎn)故障,提高了系統(tǒng)的可用性;另一方面,當(dāng)主NameNode出現(xiàn)故障時(shí),可以迅速地切換至備份的NameNode,有效地縮短N(yùn)ameNode服務(wù)恢復(fù)的時(shí)間,使NameNode可以實(shí)時(shí)提供服務(wù),進(jìn)而提高分布式存儲(chǔ)系統(tǒng)的穩(wěn)定性。
[0008]在上述技術(shù)方案中,優(yōu)選地,所述根據(jù)檢測(cè)結(jié)果確定是否將與所述主NameNode連接的虛擬IP地址切換連接至所述從NameNode具體包括:在所述檢測(cè)結(jié)果為是時(shí),將與所述主NameNode連接的所述虛擬IP地址切換連接至所述從NameNode,以由所述從NameNode提供數(shù)據(jù)服務(wù);在所述檢測(cè)結(jié)果為否時(shí),保持所述主NameNode與所述虛擬IP地址的連接狀態(tài)。
[0009]在該技術(shù)方案中,當(dāng)通過(guò)從NameNode檢測(cè)到主NameNode已停止提供數(shù)據(jù)服務(wù)時(shí),則立即將與主NameNode連接的唯一的虛擬IP地址切換連接至從NameNode,以由備份有與主NameNode完全相同的存儲(chǔ)數(shù)據(jù)的從NameNode提供數(shù)據(jù)服務(wù),否則,繼續(xù)保持主NameNode與該虛擬IP地址的連接由主NameNode提供數(shù)據(jù)服務(wù),并繼續(xù)通過(guò)從NameNode檢測(cè)主NameNode的狀態(tài),如此,當(dāng)主NameNode出現(xiàn)故障時(shí),可以迅速地切換至備份的NameNode,有效地縮短N(yùn)ameNode服務(wù)恢復(fù)的時(shí)間,使NameNode可以實(shí)時(shí)提供服務(wù),進(jìn)而提高分布式存儲(chǔ)系統(tǒng)的穩(wěn)定性。
[0010]在上述任一技術(shù)方案中,優(yōu)選地,所述通過(guò)所述從NameNode檢測(cè)所述主NameNode是否停止提供數(shù)據(jù)服務(wù)具體包括:判斷所述從NameNode連續(xù)向所述主NameNode發(fā)送通訊包后未接收到來(lái)自所述主NameNode的響應(yīng)通訊包的累計(jì)次數(shù)是否大于或等于預(yù)設(shè)次數(shù);在判定所述累計(jì)次數(shù)大于或等于所述預(yù)設(shè)次數(shù)時(shí),確定所述主NameNode已經(jīng)停止提供數(shù)據(jù)服務(wù),否則確定所述主NameNode未停止提供數(shù)據(jù)服務(wù),其中,所述預(yù)設(shè)次數(shù)為大于或等于3的整數(shù)。
[0011]在該技術(shù)方案中,當(dāng)通過(guò)從NameNode檢測(cè)主NameNode是否停止提供數(shù)據(jù)服務(wù)時(shí),具體地,由從NameNode向主NameNode連續(xù)發(fā)送通訊包并接收主NameNode根據(jù)接收到的通訊包反饋的響應(yīng)通訊包,若未接收到響應(yīng)通訊包則累計(jì)次數(shù)增加一次,并判斷統(tǒng)計(jì)的累計(jì)次數(shù)是否已達(dá)到或超過(guò)預(yù)設(shè)次數(shù),在判斷結(jié)果為是時(shí),可以判定主NameNode出現(xiàn)故障無(wú)法正常提供數(shù)據(jù)服務(wù),則可以將虛擬IP地址切換連接至從NameNode,進(jìn)而使該系統(tǒng)快速地恢復(fù)正常的工作,達(dá)到了使NameNode能夠?qū)崟r(shí)提供服務(wù)的目的,其中,預(yù)設(shè)次數(shù)的取值至少為3,以避免誤判。
[0012]在上述任一技術(shù)方案中,優(yōu)選地,在所述通過(guò)所述從NameNode檢測(cè)所述主NameNode是否停止提供數(shù)據(jù)服務(wù)之前,還包括:通過(guò)Heartbeat建立所述主NameNode和所述從NameNode之間的通信連接,以使所述從NameNode向所述主NameNode發(fā)送所述通訊包并接收來(lái)自所述主NameNode的所述響應(yīng)通訊包。
[0013]在該技術(shù)方案中,為了實(shí)現(xiàn)由從NameNode順利檢測(cè)主NameNode的狀態(tài),貝Ij需要預(yù)先建立主NameNode和從NameNode之間的通信連接,以實(shí)現(xiàn)二者之間的通訊包的傳輸,具體地可以通過(guò)Heartbeat(心跳服務(wù))建立二者之間的通信連接,以實(shí)時(shí)獲取對(duì)方的狀態(tài),進(jìn)而通過(guò)從NameNode可以及時(shí)獲知主NameNode是否仍在繼續(xù)提供數(shù)據(jù)服務(wù)。
[0014]在上述任一技術(shù)方案中,優(yōu)選地,所述預(yù)設(shè)數(shù)據(jù)備份方式包括:DRBD數(shù)據(jù)備份方式。
[0015]在該技術(shù)方案中,優(yōu)選地通過(guò)DRBD(DistributedReplicated Block Device,是一個(gè)用軟件實(shí)現(xiàn)的、無(wú)共享的、服務(wù)器之間鏡像塊設(shè)備內(nèi)容的存儲(chǔ)復(fù)制解決方案)數(shù)據(jù)備份方式將主NameNode中的存儲(chǔ)數(shù)據(jù)同步備份至從NameNode中,進(jìn)而確保主NameNode無(wú)法提供數(shù)據(jù)服務(wù)時(shí)可以快速切換至從NameNode提供同樣的數(shù)據(jù)服務(wù)。
[0016]根據(jù)本發(fā)明的另一方面,提出了一種基于分布式存儲(chǔ)系統(tǒng)的NameNode切換裝置,包括:備份模塊,用于將主NameNode中的存儲(chǔ)數(shù)據(jù)通過(guò)預(yù)設(shè)數(shù)據(jù)備份方式備份至從NameNode中,以完成數(shù)據(jù)同步存儲(chǔ)過(guò)程;檢測(cè)模塊,用于通過(guò)所述從NameNode檢測(cè)所述主NameNode是否停止提供數(shù)據(jù)服務(wù);切換模塊,用于根據(jù)檢測(cè)結(jié)果確定是否將與所述主NameNode連接的虛擬IP地址切換連接至所述從NameNode。
當(dāng)前第1頁(yè)
1 
2 
3 
4