一種基于nfs文件服務(wù)器的文本文件多機(jī)并行上傳到hdfs方法
【專利摘要】本發(fā)明提供一種基于NFS文件服務(wù)器的文本文件多機(jī)并行上傳到HDFS方法,是選取HDFS集群中N個(gè)主機(jī),然后選擇任一節(jié)點(diǎn)作為主節(jié)點(diǎn),其他N-1個(gè)節(jié)點(diǎn)作為從節(jié)點(diǎn),在主節(jié)點(diǎn)上,獲取要上傳的NFS文件服務(wù)器要上傳目錄下文件,對(duì)于每一個(gè)文件,采用并行上傳方法,即集群中所有機(jī)器都參與上傳,集群中每一臺(tái)主機(jī)負(fù)責(zé)上傳每一個(gè)文件1/N大小的連續(xù)的數(shù)據(jù)塊,達(dá)到并行上傳的目的,從而提高上傳速度。
【專利說(shuō)明】一種基于NFS文件服務(wù)器的文本文件多機(jī)并行上傳到HDFS方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及大數(shù)據(jù)存儲(chǔ)【技術(shù)領(lǐng)域】,具體地說(shuō)是一種基于NFS文件服務(wù)器的文本文件多機(jī)并行上傳到HDFS方法。
【背景技術(shù)】
[0002]伴隨著計(jì)算機(jī)網(wǎng)絡(luò)的發(fā)展,海量數(shù)據(jù)的時(shí)代已經(jīng)到來(lái)?;ヂ?lián)網(wǎng)數(shù)據(jù)中心預(yù)測(cè)全球的數(shù)據(jù)使用量到2020年將會(huì)增長(zhǎng)44倍,達(dá)到35.2ZB。
[0003]對(duì)于如此大數(shù)據(jù)集的存儲(chǔ)、分析、管理和挖掘,傳統(tǒng)技術(shù)(包括傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù))是無(wú)法勝任的,如何最快最好的分析和理解這些數(shù)據(jù)是擺在大家面前的當(dāng)務(wù)之急。而在現(xiàn)在已擁有的技術(shù)和工具中,最成熟也最成功的一套大數(shù)據(jù)解決方案為Hadoop文件存儲(chǔ)計(jì)算框架及構(gòu)架于其上的相關(guān)組件。對(duì)于每天生成的大量文本文件,如果快速的上傳到HDFS用于后續(xù)的處理,是當(dāng)前面臨的一個(gè)問(wèn)題。為解決文本文件快速上傳的問(wèn)題,本文提出了一種基于基于NFS文件服務(wù)器的文本文件多機(jī)并行上傳到HDFS方法。
[0004]HDFS默認(rèn)采用三副本機(jī)制,對(duì)于HDFS的客戶端來(lái)說(shuō),當(dāng)某一個(gè)用戶正在用一個(gè)客戶端來(lái)向HDFS中寫數(shù)據(jù),如果該客戶端上有DataNode節(jié)點(diǎn),NameNode最優(yōu)先考慮把正在寫入的數(shù)據(jù)的一個(gè)副本保存在這個(gè)客戶端的DataNode節(jié)點(diǎn)上,另外兩個(gè)副本保存到集群其他DataNode節(jié)點(diǎn)上,這樣在整個(gè)集群中,如果僅有一個(gè)客戶端寫入操作的話,集群中只有3個(gè)DataNode節(jié)點(diǎn)工作,其他DataNode節(jié)點(diǎn)是空閑的,不能發(fā)揮整個(gè)集群的性能。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的是提供一種基于NFS文件服務(wù)器的文本文件多機(jī)并行上傳到HDFS方法。
[0006]本發(fā)明的目的是按以下方式實(shí)現(xiàn)的,選取HDFS集群中N個(gè)主機(jī),然后選擇任一節(jié)點(diǎn)作為主節(jié)點(diǎn),其他N-1個(gè)節(jié)點(diǎn)作為從節(jié)點(diǎn),在主節(jié)點(diǎn)上,獲取要上傳的NFS文件服務(wù)器要上傳目錄下文件,對(duì)于每一個(gè)文件,采用并行上傳方法,即集群中所有機(jī)器都參與上傳,集群中每一臺(tái)主機(jī)負(fù)責(zé)上傳每一個(gè)文件1/N大小的連續(xù)的數(shù)據(jù)塊,達(dá)到并行上傳的目的,從而提高上傳速度,具體步驟流程為:
O主節(jié)點(diǎn)上MainPut程序計(jì)算N個(gè)節(jié)點(diǎn)每個(gè)節(jié)點(diǎn)待上傳數(shù)據(jù)塊起止字節(jié)流,并啟動(dòng)N個(gè)節(jié)點(diǎn)上BlockPut程序并行上傳;如果第一次運(yùn)行,會(huì)在每一個(gè)節(jié)點(diǎn)上安裝一個(gè)可執(zhí)行程序BlockPut,用于上傳本節(jié)點(diǎn)所負(fù)責(zé)上傳的數(shù)據(jù)塊,然后向每一個(gè)從節(jié)點(diǎn)發(fā)起命令啟動(dòng)BlockPut 程序;
2)每個(gè)節(jié)點(diǎn)上BlockPut程序負(fù)責(zé)將待上傳數(shù)據(jù)塊上傳到HDFS,BlockPut打開一個(gè)待上傳文件輸入流InputStream, InputStream定位到起始字節(jié)流,后在HDFS上創(chuàng)建一個(gè)獨(dú)立文件,將起止字節(jié)流寫入到HDFS獨(dú)立文件中。
[0007]將待上傳目錄掛載到N個(gè)節(jié)點(diǎn)的默認(rèn)統(tǒng)一目錄。
[0008]N不大于NFS文件服務(wù)器并行讀時(shí)可達(dá)最大帶寬時(shí)的客戶端數(shù),
本發(fā)明的目的有益效果是:本分明選取了集群中N個(gè)節(jié)點(diǎn)作為客戶端,將一個(gè)文件分成N個(gè)數(shù)據(jù)塊同時(shí)上傳,每個(gè)客戶端負(fù)責(zé)一塊,每個(gè)分塊在HDFS上保存為一個(gè)獨(dú)立的文件,能最大限度的利用整個(gè)集群的性能。將一個(gè)文本文件分塊并行上傳,最大限度的發(fā)揮集群的性能,提高上傳效率。
【專利附圖】
【附圖說(shuō)明】
[0009]圖1是基于多機(jī)并行上傳處理框架圖。
【具體實(shí)施方式】
[0010]參照說(shuō)明書附圖對(duì)本發(fā)明的方法作以下詳細(xì)地說(shuō)明。
[0011]選取HDFS集群中N個(gè)主機(jī),然后選擇任一節(jié)點(diǎn)作為主節(jié)點(diǎn),其他N-1個(gè)節(jié)點(diǎn)作為從節(jié)點(diǎn),在主節(jié)點(diǎn)上,獲取要上傳的NFS文件服務(wù)器要上傳目錄下文件,對(duì)于每一個(gè)文件,采用并行上傳方法,即集群中所有機(jī)器都參與上傳,集群中每一臺(tái)主機(jī)負(fù)責(zé)上傳每一個(gè)文件1/N大小的連續(xù)的數(shù)據(jù)塊,達(dá)到并行上傳的目的,從而提高上傳速度,本發(fā)明的一種基于NFS文件服務(wù)器的文本文件多機(jī)并行上傳到HDFS方法,整個(gè)流程為:
1)主節(jié)點(diǎn)上MainPut程序計(jì)算N個(gè)節(jié)點(diǎn)每個(gè)節(jié)點(diǎn)待上傳數(shù)據(jù)塊起止字節(jié)流,,并啟動(dòng)N個(gè)節(jié)點(diǎn)上BlockPut程序并行上傳;如果第一次運(yùn)行,會(huì)在每一個(gè)節(jié)點(diǎn)上安裝一個(gè)可執(zhí)行程序BlockPut,用于上傳本節(jié)點(diǎn)所負(fù)責(zé)上傳的數(shù)據(jù)塊,然后向每一個(gè)從節(jié)點(diǎn)發(fā)起命令啟動(dòng)BlockPut 程序;
2)每個(gè)節(jié)點(diǎn)上BlockPut程序負(fù)責(zé)將待上傳數(shù)據(jù)塊上傳到HDFS,BlockPut打開一個(gè)待上傳文件輸入流InputStream, InputStream定位到起始字節(jié)流,后在HDFS上創(chuàng)建一個(gè)獨(dú)立文件,將起止字節(jié)流寫入到HDFS獨(dú)立文件中。
[0012]除說(shuō)明書所述的技術(shù)特征外,均為本專業(yè)技術(shù)人員的已知技術(shù)。
【權(quán)利要求】
1.一種基于NFS文件服務(wù)器的文本文件多機(jī)并行上傳到HDFS方法,其特征在于,選取HDFS集群中N個(gè)主機(jī),然后選擇任一節(jié)點(diǎn)作為主節(jié)點(diǎn),其他N-1個(gè)節(jié)點(diǎn)作為從節(jié)點(diǎn),在主節(jié)點(diǎn)上,獲取要上傳的NFS文件服務(wù)器要上傳目錄下文件,對(duì)于每一個(gè)文件,采用并行上傳方法,即集群中所有機(jī)器都參與上傳,集群中每一臺(tái)主機(jī)負(fù)責(zé)上傳每一個(gè)文件1/N大小的連續(xù)的數(shù)據(jù)塊,達(dá)到并行上傳的目的,從而提高上傳速度,具體步驟流程為: 主節(jié)點(diǎn)上MainPut程序計(jì)算N個(gè)節(jié)點(diǎn)每個(gè)節(jié)點(diǎn)待上傳數(shù)據(jù)塊起止字節(jié)流,并啟動(dòng)N個(gè)節(jié)點(diǎn)上BlockPut程序并行上傳;如果第一次運(yùn)行,會(huì)在每一個(gè)節(jié)點(diǎn)上安裝一個(gè)可執(zhí)行程序BlockPut,用于上傳本節(jié)點(diǎn)所負(fù)責(zé)上傳的數(shù)據(jù)塊,然后向每一個(gè)從節(jié)點(diǎn)發(fā)起命令啟動(dòng)BlockPut 程序; 2)每個(gè)節(jié)點(diǎn)上BlockPut程序負(fù)責(zé)將待上傳數(shù)據(jù)塊上傳到HDFS,BlockPut打開一個(gè)待上傳文件輸入流InputStream, InputStream定位到起始字節(jié)流,后在HDFS上創(chuàng)建一個(gè)獨(dú)立文件,將起止字節(jié)流寫入到HDFS獨(dú)立文件中。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于將待上傳目錄掛載到N個(gè)節(jié)點(diǎn)的默認(rèn)統(tǒng)一目錄。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,N不大于NFS文件服務(wù)器并行讀時(shí)可達(dá)最大帶寬時(shí)的客戶端數(shù)。
【文檔編號(hào)】G06F17/30GK104408047SQ201410584207
【公開日】2015年3月11日 申請(qǐng)日期:2014年10月28日 優(yōu)先權(quán)日:2014年10月28日
【發(fā)明者】房體盈, 辛國(guó)茂 申請(qǐng)人:浪潮電子信息產(chǎn)業(yè)股份有限公司