Hdfs寫入方法及裝置的制造方法
【專利摘要】本發(fā)明實(shí)施例提供一種HDFS寫入方法及裝置。第一服務(wù)器發(fā)起數(shù)據(jù)寫入請求,將所述數(shù)據(jù)的第一個(gè)副本寫入所述第一服務(wù)器;讀取所述第一服務(wù)器的預(yù)設(shè)分組標(biāo)簽,并根據(jù)所述分組標(biāo)簽判斷所述第一服務(wù)器所屬的分組;將所述數(shù)據(jù)的第二個(gè)副本寫入第二服務(wù)器上,將所述數(shù)據(jù)的第三個(gè)副本寫入第三服務(wù)器上;其中,第二服務(wù)器與所述第一服務(wù)器為跨接入交換機(jī)的同一分組服務(wù)器,所述第三服務(wù)器與所述第二服務(wù)器為接入同一個(gè)接入交換機(jī)的同一分組服務(wù)器;將所述第二個(gè)副本或所述第三個(gè)副本中的任意一個(gè)遷移至第四服務(wù)器,其中所述第四服務(wù)器與所述第一服務(wù)器為不同分組服務(wù)器。實(shí)現(xiàn)了高效率、低代價(jià)的HDFS數(shù)據(jù)寫入。
【專利說明】
HDFS寫入方法及裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明實(shí)施例涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其涉及一種HDFS寫入方法及裝置。
【背景技術(shù)】
[0002]基于HDFS(HadoopDistributed File System,Hadoop分布式文件系統(tǒng))的大數(shù)據(jù)分布式存儲(chǔ)集群,服務(wù)器連接接入交換機(jī),接入交換機(jī)連接核心交換機(jī)。接入交換機(jī)有48個(gè)下行端口,最多可以連接48臺(tái)服務(wù)器,帶寬為lOGbits/s。接入交換機(jī)有2個(gè)上行端口,分別連接兩個(gè)核心交換機(jī),以防止單個(gè)核心交換機(jī)故障導(dǎo)致整個(gè)集群不可用,每個(gè)上行端口帶寬為40Gbits/s,共80Gbits/s。核心交換機(jī)有48個(gè)下行口。這樣一套核心交換機(jī)下最多有48*48 = 2304臺(tái)服務(wù)器。這一套包含兩臺(tái)核心交換機(jī)的流量最大為3840Gbits/s。
[0003]Hadoop的默認(rèn)的架構(gòu)中,數(shù)據(jù)打到Hadoop集群上時(shí),默認(rèn)在第一個(gè)交換機(jī)下選擇一臺(tái)服務(wù)器進(jìn)行數(shù)據(jù)的存儲(chǔ),在第二個(gè)交換機(jī)上選擇兩臺(tái)服務(wù)器進(jìn)行數(shù)據(jù)的存儲(chǔ)。其目的在于,平衡數(shù)據(jù)的安全性和效率。如果數(shù)據(jù)寫入線程所在的服務(wù)器是一臺(tái)數(shù)據(jù)節(jié)點(diǎn),并且數(shù)據(jù)副本數(shù)為3,基于安全和效率的考慮如下:
[0004]如果數(shù)據(jù)只存儲(chǔ)在一臺(tái)服務(wù)器的3塊硬盤上,不產(chǎn)生網(wǎng)絡(luò)流量,這樣效率最高,但是如果這臺(tái)服務(wù)器發(fā)生故障,那么數(shù)據(jù)不能讀出。
[0005]如果數(shù)據(jù)存儲(chǔ)在同一交換機(jī)下的3臺(tái)服務(wù)器上,那么只有接入交換機(jī)產(chǎn)生流量,不會(huì)產(chǎn)生跨交換機(jī)流量。這樣效率也較高,能容忍任何2臺(tái)服務(wù)器故障,但是如果接入交換機(jī)發(fā)生故障,數(shù)據(jù)還是不能讀出。
[0006]數(shù)據(jù)存儲(chǔ)在3個(gè)交換機(jī)下的3臺(tái)服務(wù)器上,能夠容忍任何2臺(tái)接入交換機(jī)故障,安全性最高。但是產(chǎn)生的跨交換機(jī)流量是存儲(chǔ)數(shù)據(jù)量的2倍,效率較低。
[0007]數(shù)據(jù)存儲(chǔ)在2個(gè)交換機(jī)下的3臺(tái)服務(wù)器上,第一個(gè)交換機(jī)下的服務(wù)器存儲(chǔ)第一個(gè)副本,第二個(gè)交換機(jī)下的2臺(tái)服務(wù)器存儲(chǔ)第2和第3個(gè)副本。這樣能夠容忍任何兩臺(tái)服務(wù)器故障,或者任意I臺(tái)接入交換機(jī)故障,產(chǎn)生的跨交換機(jī)流量是存儲(chǔ)數(shù)據(jù)量的I倍,效率和安全性達(dá)到平衡。這一方案是現(xiàn)有技術(shù)中,Hadoop的默認(rèn)實(shí)現(xiàn)方式。
[0008]然而,對(duì)于遠(yuǎn)遠(yuǎn)超過2304臺(tái)的超大規(guī)模的HDFS集群,肯定存在超過兩套核心交換機(jī)。按照現(xiàn)有的Hadoop的默認(rèn)實(shí)現(xiàn)方式中,數(shù)據(jù)存儲(chǔ)在2個(gè)交換機(jī)下的3臺(tái)服務(wù)器上,第一個(gè)交換機(jī)下的服務(wù)器存儲(chǔ)第一個(gè)副本,第二個(gè)交換機(jī)下的2臺(tái)服務(wù)器存儲(chǔ)第2和第3個(gè)副本,則第二個(gè)副本和第三個(gè)副本有很大的可能性是保存在跨核心交換機(jī)的接入交換機(jī)下的,即第一個(gè)交換機(jī)和第二個(gè)交換機(jī)之間可能是跨核心交換機(jī)的,這種跨核心交換機(jī)的概率取決于兩臺(tái)核心交換機(jī)下接入交換機(jī)的數(shù)量,若兩臺(tái)核心交換機(jī)下的接入交換機(jī)數(shù)量相同,則這種跨核心交換機(jī)的概率可能是50%。而跨核心交換機(jī)的網(wǎng)絡(luò)帶寬遠(yuǎn)低于3840Gbits/s,因此數(shù)據(jù)存儲(chǔ)時(shí)因跨核心交換機(jī)概率的存在而可能導(dǎo)致數(shù)據(jù)寫入效率低,因此,上述方式中將數(shù)據(jù)存儲(chǔ)在2個(gè)接入交換機(jī)下的3臺(tái)服務(wù)器上并不適用于超大規(guī)模的HDFS集群。
【發(fā)明內(nèi)容】
[0009]本發(fā)明實(shí)施例提供一種HDFS寫入方法及裝置,用以解決現(xiàn)有技術(shù)中HDFS集群包含多個(gè)核心交換機(jī)時(shí),數(shù)據(jù)的寫入存在一定概率寫入跨核心交換機(jī)服務(wù)器的低效率缺陷,實(shí)現(xiàn)高效率、低代價(jià)的HDFS數(shù)據(jù)寫入。
[0010]本發(fā)明實(shí)施例提供一種HDFS寫入方法,包括:
[0011 ]第一服務(wù)器發(fā)起數(shù)據(jù)寫入請求,將所述數(shù)據(jù)的第一個(gè)副本寫入所述第一服務(wù)器;
[0012]讀取所述第一服務(wù)器的預(yù)設(shè)分組標(biāo)簽,并根據(jù)所述分組標(biāo)簽判斷所述第一服務(wù)器所屬的分組;
[0013]將所述數(shù)據(jù)的第二個(gè)副本寫入第二服務(wù)器上,將所述數(shù)據(jù)的第三個(gè)副本寫入第三服務(wù)器上;其中,第二服務(wù)器與所述第一服務(wù)器為跨接入交換機(jī)的同一分組服務(wù)器,所述第三服務(wù)器與所述第二服務(wù)器為接入同一個(gè)接入交換機(jī)的同一分組服務(wù)器;
[0014]將所述第二個(gè)副本或所述第三個(gè)副本中的任意一個(gè)迀移至第四服務(wù)器,其中所述第四服務(wù)器與所述第一服務(wù)器為不同分組服務(wù)器。本發(fā)明實(shí)施例提供一種HDFS寫入方法裝置,包括:
[0015]寫數(shù)據(jù)模塊,用于當(dāng)?shù)谝环?wù)器發(fā)起數(shù)據(jù)寫入請求,將所述數(shù)據(jù)的第一個(gè)副本寫入所述第一服務(wù)器;
[0016]分組判斷模塊,用于讀取所述第一服務(wù)器的預(yù)設(shè)分組標(biāo)簽,并根據(jù)所述分組標(biāo)簽判斷所述第一服務(wù)器所屬的分組;
[0017]寫數(shù)據(jù)模塊,用于將所述數(shù)據(jù)的第二個(gè)副本寫入第二服務(wù)器上,將所述數(shù)據(jù)的第三個(gè)副本寫入第三服務(wù)器上;其中,第二服務(wù)器與所述第一服務(wù)器為跨接入交換機(jī)的同一分組服務(wù)器,所述第三服務(wù)器與所述第二服務(wù)器為接入同一個(gè)接入交換機(jī)的同一分組服務(wù)器;
[0018]迀移模塊,用于將所述第二個(gè)副本或所述第三個(gè)副本中的任意一個(gè)迀移至第四服務(wù)器,其中所述第四服務(wù)器與所述第一服務(wù)器為不同分組服務(wù)器。
[0019]本發(fā)明實(shí)施例提供的HDFS寫入方法及裝置,在HDFS集群中包含至少兩臺(tái)核心交換機(jī)時(shí),通過將數(shù)據(jù)存儲(chǔ)在同一核心交換機(jī)的2個(gè)接入交換機(jī)下的3臺(tái)服務(wù)器,并在數(shù)據(jù)存儲(chǔ)完成后啟動(dòng)線程將存儲(chǔ)于同一接入交換機(jī)下的兩個(gè)數(shù)據(jù)副本之一迀移到跨核心交換機(jī)的另一服務(wù)器,改變了現(xiàn)有技術(shù)中,進(jìn)行HDFS寫入時(shí)有可能將數(shù)據(jù)寫入跨核心交換機(jī)的三臺(tái)服務(wù)器的低效率,實(shí)現(xiàn)了高效率、低代價(jià)的HDFS數(shù)據(jù)寫入。
【附圖說明】
[0020]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0021]圖1為本申請實(shí)施例一的技術(shù)流程圖;
[0022]圖2為本申請實(shí)施例二的技術(shù)流程圖;
[0023]圖3為本申請實(shí)施例三的裝置結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0024]為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0025]圖1是本申請實(shí)施例一的技術(shù)流程圖,結(jié)合圖1,本申請實(shí)施例一種HDFS寫入方法,可由如下的步驟實(shí)現(xiàn):
[0026]步驟S110:第一服務(wù)器發(fā)起數(shù)據(jù)寫入請求,將所述數(shù)據(jù)的第一個(gè)副本寫入所述第一服務(wù)器;
[0027]步驟S120:讀取所述第一服務(wù)器預(yù)設(shè)分組標(biāo)簽,并根據(jù)所述分組標(biāo)簽判斷所述第一服務(wù)器所屬的分組;
[0028]步驟S130:將所述數(shù)據(jù)的第二個(gè)副本寫入第二服務(wù)器上,將所述數(shù)據(jù)的第三個(gè)副本寫入第三服務(wù)器上;
[0029]步驟S140:將所述第二個(gè)副本或所述第三個(gè)副本中的任意一個(gè)迀移至第四服務(wù)器,其中所述第四服務(wù)器與所述第一服務(wù)器為不同分組服務(wù)器。
[0030]本申請實(shí)施例的技術(shù)方案尤其適用于以下場景,即數(shù)據(jù)寫入線程所在的服務(wù)器是一臺(tái)數(shù)據(jù)節(jié)點(diǎn)服務(wù)器(datanode),且數(shù)據(jù)的副本數(shù)量為3。
[0031]需要說明的是,HDFS是一個(gè)主從結(jié)構(gòu),一個(gè)HDFS集群包含一個(gè)名字節(jié)點(diǎn)(namenode),它是一個(gè)管理文件命名空間和調(diào)節(jié)客戶端訪問文件的主服務(wù)器,當(dāng)然還有一些數(shù)據(jù)節(jié)點(diǎn)(datanode),通常是一個(gè)節(jié)點(diǎn)一個(gè)機(jī)器,它來管理對(duì)應(yīng)節(jié)點(diǎn)的存儲(chǔ)。HDFS對(duì)外開放文件命名空間并允許用戶數(shù)據(jù)以文件形式存儲(chǔ)。
[0032]HDFS集群的內(nèi)部機(jī)制是將一個(gè)文件分割成一個(gè)或多個(gè)塊,這些塊被存儲(chǔ)在一組數(shù)據(jù)節(jié)點(diǎn)中。名字節(jié)點(diǎn)用來操作文件命名空間的文件或目錄操作,如打開,關(guān)閉,重命名等等。它同時(shí)確定塊與數(shù)據(jù)節(jié)點(diǎn)的映射。數(shù)據(jù)節(jié)點(diǎn)負(fù)責(zé)來自文件系統(tǒng)客戶的讀寫請求以及執(zhí)行塊的創(chuàng)建,刪除,和來自名字節(jié)點(diǎn)的塊復(fù)制指令。
[0033]具體的,在步驟SllO中,當(dāng)檢測到HDFS集群中的任意一個(gè)服務(wù)器發(fā)起數(shù)據(jù)寫入請求時(shí),首先將這一數(shù)據(jù)請求的第一個(gè)副本寫入發(fā)起請求的服務(wù)器本身。
[0034]在步驟S120中,所述預(yù)設(shè)分組標(biāo)簽是預(yù)先根據(jù)HDFS集群的結(jié)構(gòu)進(jìn)行分組然后標(biāo)簽化處理得到的分組標(biāo)簽。具體分組規(guī)則是,按照每一服務(wù)器接入的核心交換機(jī)對(duì)HDFS集群中的每一所述服務(wù)器進(jìn)行分組,并按照所述分組的結(jié)果對(duì)每一所述服務(wù)器進(jìn)行分組標(biāo)簽化處理。
[0035]例如,某一機(jī)房中,包含有兩套核心交換機(jī),每套核心交換機(jī)下分別接入一定數(shù)量的接入交換機(jī)以及服務(wù)器,則按照核心交換機(jī)的數(shù)量以及接入關(guān)系,可以將所有的服務(wù)器分為兩個(gè)分組,即接入第一套核心交換機(jī)的服務(wù)器為一個(gè)分組,接入第二套核心交換的服務(wù)器為另一個(gè)分組。本申請實(shí)施例中,分別為每一個(gè)分組中的服務(wù)器進(jìn)行標(biāo)簽化處理,例如,一個(gè)分組中,將每一服務(wù)器的分組標(biāo)簽設(shè)為LabelA,另一分組中,將每一服務(wù)器的分組標(biāo)簽設(shè)為Labe IB。
[0036]當(dāng)HDFS集群中,任意一個(gè)服務(wù)器發(fā)起數(shù)據(jù)寫入請求時(shí),首先讀取發(fā)起數(shù)據(jù)寫入請求的服務(wù)器所帶有的分組標(biāo)簽,根據(jù)這一服務(wù)器所屬的分組確定其所接入的核心交換機(jī)是哪一個(gè)。
[0037]具體的,在步驟S130中,第二服務(wù)器與所述第一服務(wù)器為跨接入交換機(jī)的同一分組服務(wù)器,所述第三服務(wù)器與所述第二服務(wù)器為接入同一個(gè)接入交換機(jī)的同一分組服務(wù)器。
[0038]所述第一服務(wù)器、所述第二服務(wù)器以及所述第三服務(wù)器具有相同的分組標(biāo)簽,即所述第一服務(wù)器、所述第二服務(wù)器以及所述第三服務(wù)器接入在同一套核心交換機(jī)下。所述第一服務(wù)器、所述第二服務(wù)器以及所述第三服務(wù)器中都存有所述數(shù)據(jù)的一個(gè)副本,在不跨核心交換機(jī)的情況下節(jié)省了數(shù)據(jù)傳輸流量。
[0039]承接步驟S120中的例子,假設(shè)發(fā)起數(shù)據(jù)寫入請求的第一服務(wù)器的分組標(biāo)簽為LabelA,且其接入在接入交換機(jī)A下,則將所述第二個(gè)副本寫入分組標(biāo)簽為LabelA,且沒有接入在所述接入交換機(jī)A下的任意一個(gè)服務(wù)器,此處假設(shè)本實(shí)施例中,第二個(gè)副本寫入所述接入交換機(jī)B的任意一臺(tái)服務(wù)器中,此服務(wù)器作為第二服務(wù)器,將所述第三個(gè)副本寫入所述接入交換機(jī)B的任意一臺(tái)服務(wù)器中,此服務(wù)器作為第三服務(wù)器。這樣數(shù)據(jù)寫入時(shí),不會(huì)產(chǎn)生跨核心交換機(jī)流量,寫入效率高,同時(shí)也能容忍傳統(tǒng)方式的任何一臺(tái)接入交換機(jī)出現(xiàn)故障。
[0040]在步驟S140中,將第三個(gè)副本或者第四個(gè)副本中的任意一個(gè)迀移至第四服務(wù)器,具體實(shí)現(xiàn)過程如下:
[0041]啟動(dòng)線程從預(yù)先建立的異步隊(duì)列里讀取數(shù)據(jù)塊,并查詢所述數(shù)據(jù)塊的第二個(gè)副本或第三個(gè)副本對(duì)應(yīng)的服務(wù)器以及所述服務(wù)器對(duì)應(yīng)的接入交換機(jī);
[0042]將所述接入交換機(jī)下的存有的所述第二個(gè)副本或所述第三個(gè)副本中的任意一個(gè)轉(zhuǎn)移至另一分組的所述第四服務(wù)器。
[0043]其中,所述預(yù)先建立的異步隊(duì)列中,根據(jù)名字節(jié)點(diǎn)將所述數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)塊以及所述第一個(gè)副本的存儲(chǔ)地址、所述第二個(gè)副本的存儲(chǔ)地址、所述第三個(gè)副本的存儲(chǔ)地址存入所述預(yù)先建立的異步隊(duì)列。
[0044]所述第四服務(wù)器和所述第一服務(wù)器、第二服務(wù)器、第三服務(wù)器具有不同的分組標(biāo)簽,即所述第四服務(wù)器屬于另一套核心交換機(jī),承接上述例子,第四服務(wù)器的分組標(biāo)簽可以是Label-B0
[0045]需要說明的是,本申請實(shí)施例中,選擇第二個(gè)副本或三個(gè)副本中的其中一個(gè)進(jìn)行迀移而不是選擇第一個(gè)副本進(jìn)行迀移,其優(yōu)勢在于,若選擇第一個(gè)副本,那么第一個(gè)副本迀移走后,剩余的第二個(gè)副本和第三個(gè)副本將存儲(chǔ)在Iabel-A標(biāo)簽的同一個(gè)接入交換機(jī)下,當(dāng)這個(gè)接入交換機(jī)發(fā)生故障,并且Iabel-A中的服務(wù)器有讀此數(shù)據(jù)塊的請求時(shí),只能夠從Iabel-B標(biāo)簽的服務(wù)器中讀取,跨核心交換機(jī)讀取數(shù)據(jù)花費(fèi)的代價(jià)非常大。
[0046]本申請實(shí)施例中,啟動(dòng)線程從預(yù)先建立的異步隊(duì)列里讀取數(shù)據(jù)塊,具體還需根據(jù)HDFS集群中的每一所述服務(wù)器的帶寬以及跨核心交換機(jī)的帶寬進(jìn)行線程數(shù)量的設(shè)置。
[0047]通常,服務(wù)器的帶寬為lOGbit/s,由于接入交換機(jī)到核心交換機(jī)的帶寬總和遠(yuǎn)遠(yuǎn)大于跨核心交換機(jī)的帶寬,所以接入交換機(jī)到核心交換機(jī)不會(huì)產(chǎn)生瓶頸。由于跨核心交換機(jī)的帶寬為160Gbit/s,所以在線程池中設(shè)置16個(gè)線程即可充分使用跨核心交換機(jī)帶寬進(jìn)行副本的迀移。
[0048]本實(shí)施例中,在HDFS集群中包含至少兩臺(tái)核心交換機(jī)時(shí),通過服務(wù)器的標(biāo)簽強(qiáng)制將數(shù)據(jù)存儲(chǔ)在同一核心交換機(jī)的2個(gè)接入交換機(jī)下的3臺(tái)服務(wù)器,并在數(shù)據(jù)存儲(chǔ)完成后啟動(dòng)線程將存儲(chǔ)于同一接入交換機(jī)下的兩個(gè)數(shù)據(jù)副本之一迀移到跨核心交換機(jī)的另一服務(wù)器,改變了現(xiàn)有技術(shù)中,進(jìn)行HDFS寫入時(shí)有可能將數(shù)據(jù)寫入跨核心交換機(jī)的三臺(tái)服務(wù)器的低效率,實(shí)現(xiàn)了高效率、低代價(jià)的HDFS數(shù)據(jù)寫入。
[0049]圖2是本申請實(shí)施例二的技術(shù)流程圖,結(jié)合圖2,本申請實(shí)施例一種HDFS寫入方法,可由如下的步驟實(shí)現(xiàn):
[0050]步驟S210:按照每一服務(wù)器接入的核心交換機(jī)對(duì)HDFS集群中的每一所述服務(wù)器進(jìn)行分組,并按照所述分組的結(jié)果對(duì)每一所述服務(wù)器進(jìn)行分組標(biāo)簽化處理;
[0051]步驟S220:第一服務(wù)器發(fā)起數(shù)據(jù)寫入請求,將所述數(shù)據(jù)的第一個(gè)副本寫入所述第一服務(wù)器;
[0052]步驟S230:讀取所述第一服務(wù)器的預(yù)設(shè)分組標(biāo)簽,并根據(jù)所述分組標(biāo)簽判斷所述第一服務(wù)器所屬的分組;
[0053]步驟S240:將所述數(shù)據(jù)的第二個(gè)副本寫入第二服務(wù)器上,將所述數(shù)據(jù)的第三個(gè)副本寫入第三服務(wù)器上;
[0054]步驟S250:啟動(dòng)線程從預(yù)先建立的異步隊(duì)列里讀取數(shù)據(jù)塊,并查詢所述數(shù)據(jù)塊的第二個(gè)副本或第三個(gè)副本對(duì)應(yīng)的服務(wù)器以及所述服務(wù)器對(duì)應(yīng)的接入交換機(jī);
[0055]步驟S260:將所述接入交換機(jī)下的存有的所述第二個(gè)副本或所述第三個(gè)副本中的任意一個(gè)轉(zhuǎn)移至另一分組的所述第四服務(wù)器,其中所述第四服務(wù)器與所述第一服務(wù)器為不同分組服務(wù)器。
[0056]本實(shí)施例中,在HDFS集群中包含至少兩臺(tái)核心交換機(jī)時(shí),通過服務(wù)器的標(biāo)簽強(qiáng)制將數(shù)據(jù)存儲(chǔ)在同一核心交換機(jī)的2個(gè)接入交換機(jī)下的3臺(tái)服務(wù)器,并在數(shù)據(jù)存儲(chǔ)完成后啟動(dòng)線程將存儲(chǔ)于同一接入交換機(jī)下的兩個(gè)數(shù)據(jù)副本之一迀移到跨核心交換機(jī)的另一服務(wù)器,改變了現(xiàn)有技術(shù)中,進(jìn)行HDFS寫入時(shí)有可能將數(shù)據(jù)寫入跨核心交換機(jī)的三臺(tái)服務(wù)器的低效率,實(shí)現(xiàn)了高效率、低代價(jià)的HDFS數(shù)據(jù)寫入。
[0057]圖3是本申請實(shí)施例三的裝置結(jié)構(gòu)示意圖,結(jié)合圖3,本申請一種HDFS寫入裝置,包括如下的模塊:
[0058]寫數(shù)據(jù)模塊310,用于當(dāng)?shù)谝环?wù)器發(fā)起數(shù)據(jù)寫入請求,將所述數(shù)據(jù)的第一個(gè)副本寫入所述第一服務(wù)器;
[0059]分組判斷模塊320,用于讀取所述第一服務(wù)器的預(yù)設(shè)分組標(biāo)簽,并根據(jù)所述分組標(biāo)簽判斷所述第一服務(wù)器所屬的分組;
[0060]寫數(shù)據(jù)模塊310,還用于將所述數(shù)據(jù)的第二個(gè)副本寫入第二服務(wù)器上,將所述數(shù)據(jù)的第三個(gè)副本寫入第三服務(wù)器上;其中,所述第二服務(wù)器與所述第一服務(wù)器為跨接入交換機(jī)的同一分組服務(wù)器,所述第三服務(wù)器與所述第二服務(wù)器為接入同一個(gè)接入交換機(jī)的同一分組服務(wù)器;
[0061]迀移模塊330,用于將所述第二個(gè)副本或所述第三個(gè)副本中的任意一個(gè)迀移至第四服務(wù)器,其中所述第四服務(wù)器與所述第一服務(wù)器為不同分組服務(wù)器。
[0062]其中,所述裝置還包括預(yù)處理模塊340,所述預(yù)處理模塊340用于:按照每一服務(wù)器接入的核心交換機(jī)對(duì)HDFS集群中的每一所述服務(wù)器進(jìn)行分組,并按照所述分組的結(jié)果對(duì)每一所述服務(wù)器進(jìn)行分組標(biāo)簽化處理。
[0063]其中,所述迀移模塊330具體用于:啟動(dòng)線程從預(yù)先建立的異步隊(duì)列里讀取數(shù)據(jù)塊,并查詢所述數(shù)據(jù)塊的第二個(gè)副本或第三個(gè)副本對(duì)應(yīng)的服務(wù)器以及所述服務(wù)器對(duì)應(yīng)的接入交換機(jī);將所述接入交換機(jī)下的存有的所述第二個(gè)副本或所述第三個(gè)副本中的任意一個(gè)轉(zhuǎn)移至另一分組的所述第四服務(wù)器。
[0064]其中,所述迀移模塊330具體用于:預(yù)先建立異步隊(duì)列,根據(jù)名字節(jié)點(diǎn)將所述數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)塊以及所述第一個(gè)副本的存儲(chǔ)地址、所述第二個(gè)副本的存儲(chǔ)地址、所述第三個(gè)副本的存儲(chǔ)地址存入所述預(yù)先建立的異步隊(duì)列。
[0065]圖3所示裝置可以執(zhí)行圖1以及圖2所示實(shí)施例的方法,實(shí)現(xiàn)原理和技術(shù)效果參考圖1或圖2所示實(shí)施例,不再贅述。
[0066]應(yīng)用實(shí)例
[0067]以下部分結(jié)合一個(gè)具體的應(yīng)用場景,以一個(gè)實(shí)際的例子對(duì)本申請實(shí)施例進(jìn)行進(jìn)一步地闡述。
[0068]在一個(gè)超大規(guī)模的HDFS集群中,存在有4608臺(tái)服務(wù)器,即存在兩套套核心交換機(jī),每一套核心交換機(jī)包含兩臺(tái)核心交換機(jī),每一套核心交換機(jī)下接入48臺(tái)接入交換機(jī),每一臺(tái)計(jì)入交換機(jī)下連接48臺(tái)臺(tái)服務(wù)器。
[0069]把所有的服務(wù)器按所在的核心交換機(jī)進(jìn)行分組,每一組的服務(wù)器打相同的標(biāo)簽,如現(xiàn)在有4608臺(tái)服務(wù)器,分布在2套核心交換機(jī)下,每套核心交換機(jī)下有2304臺(tái)服務(wù)器,兩套核心交換機(jī)之間的帶寬為160Gbit/s。第一套核心交換機(jī)下的服務(wù)器的標(biāo)簽都為Iabel-A,第二套核心交換機(jī)下的標(biāo)簽都為label-B。
[0070]假如現(xiàn)在Iabel-A的一臺(tái)服務(wù)器發(fā)出寫數(shù)據(jù)請求,則將數(shù)據(jù)的第一個(gè)副本寫在本服務(wù)器,第二個(gè)副本寫在標(biāo)簽為Iabel-A的另一臺(tái)接入交換機(jī)下面的一臺(tái)服務(wù)器上,第三個(gè)副本也在和第二個(gè)副本同一個(gè)交換機(jī)下的另一臺(tái)服務(wù)器上。這樣數(shù)據(jù)寫入時(shí),不會(huì)產(chǎn)生跨核心交換機(jī)流量,寫入效率高,同時(shí)也能容忍傳統(tǒng)方式的任何一臺(tái)交換機(jī)故障。
[0071 ]在數(shù)據(jù)塊寫入完成后,該數(shù)據(jù)塊以及它的3個(gè)副本的地址被namenode (名字節(jié)點(diǎn))放以一個(gè)異步隊(duì)列(wait_replicate_queue)里。建立線程池,啟動(dòng)線程一次從wait_replicate_queue隊(duì)列里取一個(gè)數(shù)據(jù)塊,并找到數(shù)據(jù)塊對(duì)應(yīng)的3個(gè)副本對(duì)應(yīng)的服務(wù)器,然后找出服務(wù)器對(duì)應(yīng)的交換機(jī)。把交換機(jī)下有2個(gè)副本中的一個(gè)副本移動(dòng)后Iabel-B的任意一臺(tái)服務(wù)器上,即完成了 HDFS的數(shù)據(jù)寫入。
[0072]以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性的勞動(dòng)的情況下,即可以理解并實(shí)施。
[0073]通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到各實(shí)施方式可借助軟件加必需的通用硬件平臺(tái)的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件?;谶@樣的理解,上述技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,如R0M/RAM、磁碟、光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)裝置(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)裝置等)執(zhí)行各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。
[0074]最后應(yīng)說明的是:以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。
【主權(quán)項(xiàng)】
1.一種HDFS寫入方法,其特征在于,包括如下的步驟: 第一服務(wù)器發(fā)起數(shù)據(jù)寫入請求,將所述數(shù)據(jù)的第一個(gè)副本寫入所述第一服務(wù)器; 讀取所述第一服務(wù)器的預(yù)設(shè)分組標(biāo)簽,并根據(jù)所述分組標(biāo)簽判斷所述第一服務(wù)器所屬的分組; 將所述數(shù)據(jù)的第二個(gè)副本寫入第二服務(wù)器上,將所述數(shù)據(jù)的第三個(gè)副本寫入第三服務(wù)器上;其中,所述第二服務(wù)器與所述第一服務(wù)器為跨接入交換機(jī)的同一分組服務(wù)器,所述第三服務(wù)器與所述第二服務(wù)器為接入同一個(gè)接入交換機(jī)的同一分組服務(wù)器; 將所述第二個(gè)副本或所述第三個(gè)副本中的任意一個(gè)迀移至第四服務(wù)器,其中所述第四服務(wù)器與所述第一服務(wù)器為不同分組服務(wù)器。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述預(yù)設(shè)分組標(biāo)簽包括: 按照每一服務(wù)器接入的核心交換機(jī)對(duì)HDFS集群中的每一所述服務(wù)器進(jìn)行分組,并按照所述分組的結(jié)果對(duì)每一所述服務(wù)器進(jìn)行分組標(biāo)簽化處理。3.根據(jù)權(quán)利要求1所述的方法,其特征在于,將所述第二個(gè)副本或所述第三個(gè)副本中的任意一個(gè)迀移至第四服務(wù)器,具體包括: 啟動(dòng)線程從預(yù)先建立的異步隊(duì)列里讀取數(shù)據(jù)塊,并查詢所述數(shù)據(jù)塊的第二個(gè)副本或第三個(gè)副本對(duì)應(yīng)的服務(wù)器以及所述服務(wù)器對(duì)應(yīng)的接入交換機(jī); 將所述接入交換機(jī)下的存有的所述第二個(gè)副本或所述第三個(gè)副本中的任意一個(gè)轉(zhuǎn)移至另一分組的所述第四服務(wù)器。4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述方法還包括: 預(yù)先建立異步隊(duì)列,根據(jù)名字節(jié)點(diǎn)將所述數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)塊以及所述第一個(gè)副本的存儲(chǔ)地址、所述第二個(gè)副本的存儲(chǔ)地址、所述第三個(gè)副本的存儲(chǔ)地址存入所述預(yù)先建立的異步隊(duì)列。5.根據(jù)權(quán)利要求3所述的方法,其特征在于,啟動(dòng)線程從預(yù)先建立的異步隊(duì)列里讀取數(shù)據(jù)塊,具體包括: 根據(jù)HDFS集群中的每一所述服務(wù)器的帶寬以及跨核心交換機(jī)的帶寬進(jìn)行線程數(shù)量的設(shè)置。6.一種HDFS寫入裝置,其特征在于,包括如下的模塊: 寫數(shù)據(jù)模塊,用于當(dāng)?shù)谝环?wù)器發(fā)起數(shù)據(jù)寫入請求,將所述數(shù)據(jù)的第一個(gè)副本寫入所述第一服務(wù)器; 分組判斷模塊,用于讀取所述第一服務(wù)器的預(yù)設(shè)分組標(biāo)簽,并根據(jù)所述分組標(biāo)簽判斷所述第一服務(wù)器所屬的分組; 所述寫數(shù)據(jù)模塊,還用于將所述數(shù)據(jù)的第二個(gè)副本寫入第二服務(wù)器上,將所述數(shù)據(jù)的第三個(gè)副本寫入第三服務(wù)器上;其中,所述第二服務(wù)器與所述第一服務(wù)器為跨接入交換機(jī)的同一分組服務(wù)器,所述第三服務(wù)器與所述第二服務(wù)器為接入同一個(gè)接入交換機(jī)的同一分組服務(wù)器; 迀移模塊,用于將所述第二個(gè)副本或所述第三個(gè)副本中的任意一個(gè)迀移至第四服務(wù)器,其中所述第四服務(wù)器與所述第一服務(wù)器為不同分組服務(wù)器。7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述裝置還包括預(yù)處理模塊,所述預(yù)處理模塊用于: 按照每一服務(wù)器接入的核心交換機(jī)對(duì)HDFS集群中的每一所述服務(wù)器進(jìn)行分組,并按照所述分組的結(jié)果對(duì)每一所述服務(wù)器進(jìn)行分組標(biāo)簽化處理。8.根據(jù)權(quán)利要求6所述的裝置,所述迀移模塊具體用于: 啟動(dòng)線程從預(yù)先建立的異步隊(duì)列里讀取數(shù)據(jù)塊,并查詢所述數(shù)據(jù)塊的第二個(gè)副本或第三個(gè)副本對(duì)應(yīng)的服務(wù)器以及所述服務(wù)器對(duì)應(yīng)的接入交換機(jī); 將所述接入交換機(jī)下的存有的所述第二個(gè)副本或所述第三個(gè)副本中的任意一個(gè)轉(zhuǎn)移至另一分組的所述第四服務(wù)器。9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述迀移模塊具體用于: 預(yù)先建立異步隊(duì)列,根據(jù)名字節(jié)點(diǎn)將所述數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)塊以及所述第一個(gè)副本的存儲(chǔ)地址、所述第二個(gè)副本的存儲(chǔ)地址、所述第三個(gè)副本的存儲(chǔ)地址存入所述預(yù)先建立的異步隊(duì)列。10.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述迀移模塊具體用于: 根據(jù)HDFS集群中的每一所述服務(wù)器的帶寬以及跨核心交換機(jī)的帶寬進(jìn)行線程數(shù)量的設(shè)置。
【文檔編號(hào)】H04L29/08GK105847392SQ201610262433
【公開日】2016年8月10日
【申請日】2016年4月25日
【發(fā)明人】侯志貞
【申請人】樂視控股(北京)有限公司, 樂視網(wǎng)信息技術(shù)(北京)股份有限公司