本發(fā)明涉及數(shù)據(jù)業(yè)務(wù)技術(shù),尤其涉及一種文件處理方法和裝置。
背景技術(shù):
:隨著互聯(lián)網(wǎng)技術(shù)的高速發(fā)展以及數(shù)字化信息的不斷增加,信息的存儲(chǔ)問題已經(jīng)成為當(dāng)下最為關(guān)注的焦點(diǎn)之一;目前對(duì)于這類文件數(shù)據(jù)的存儲(chǔ)主要是通過部署分布式文件系統(tǒng)來進(jìn)行管理,國(guó)內(nèi)外有多款分布式文件系統(tǒng),例如googlefilesystem(gfs)、hadoopdistributedfilesystem(hdfs)、lustre、fastdistributedfilesystem(fdfs)等。其中,hdfs是hadoop中最為重要的組件之一,hdfs作為分布式文件系統(tǒng),其發(fā)展速度和應(yīng)用領(lǐng)域越發(fā)受到關(guān)注。文件存儲(chǔ)于hdfs必然會(huì)產(chǎn)生相應(yīng)的元數(shù)據(jù),現(xiàn)有技術(shù)方案均是將元數(shù)據(jù)存儲(chǔ)于namenode節(jié)點(diǎn),當(dāng)需要訪問儲(chǔ)存的文件時(shí)namenode需讀取所有的元數(shù)據(jù)并選出訪問文件的元數(shù)據(jù)信息,從而訪問相應(yīng)文件。如此,訪問儲(chǔ)存的文件時(shí),namenode需讀取所有的元數(shù)據(jù)并選出訪問文件的元數(shù)據(jù)信息,namenode節(jié)點(diǎn)的內(nèi)存訪問壓力大,判斷小文件是否存在時(shí)需掃描namenode節(jié)點(diǎn)的所有元數(shù)據(jù),耗時(shí)較長(zhǎng),文件讀取效率不高。技術(shù)實(shí)現(xiàn)要素:為解決上述技術(shù)問題,本發(fā)明實(shí)施例期望提供一種文件處理方法和裝置,使得在訪問儲(chǔ)存的文件時(shí),緩解namenode節(jié)點(diǎn)的工作壓力,同時(shí)提高了小文件的處理速度以及存取效率。本發(fā)明實(shí)施例提供了一種文件處理方法,該方法包括:獲取至少兩個(gè)文件;將滿足文件合并條件的各個(gè)文件進(jìn)行合并,得出合并文件;將合并文件以bloommapfile形式進(jìn)行存儲(chǔ)。上述方案中,所述將滿足文件合并條件的各個(gè)文件進(jìn)行合并,得出合并文件,包括:對(duì)獲取的各個(gè)文件進(jìn)行分類;在每個(gè)類別的文件中,將容量小于容量閾值的文件標(biāo)記為對(duì)應(yīng)類別的待合并文件;任意一個(gè)類別的各個(gè)待合并文件的容量之和達(dá)到容量閾值時(shí),利用bloomfilter將對(duì)應(yīng)類別的各個(gè)待合并文件合并,得出合并文件。上述方案中,所述利用bloomfilter實(shí)現(xiàn)各個(gè)待合并文件的合并,包括:?jiǎn)?dòng)mapreduce任務(wù)將對(duì)應(yīng)類別的各個(gè)待合并文件合并。上述方案中,在將合并文件以bloommapfile形式進(jìn)行存儲(chǔ)之后,所述方法還包括:接收文件讀取請(qǐng)求;確定所述文件讀取請(qǐng)求對(duì)應(yīng)的文件存在時(shí),基于所述文件讀取請(qǐng)求讀取文件。上述方案中,確定所述文件讀取請(qǐng)求對(duì)應(yīng)的文件不存在時(shí),所述方法還包括:返回讀取文件不存在的指示信息。上述方案中,所述利用bloomfilter將對(duì)應(yīng)類別的各個(gè)待合并文件合并,得出合并文件,還包括:獲取每個(gè)待合并文件的位數(shù)組;建立一級(jí)索引(key,value),其中,key表示每個(gè)待合并文件的位數(shù)組,value表示每個(gè)待合并文件的內(nèi)容;在利用bloomfilter將對(duì)應(yīng)類別的各個(gè)待合并文件合并,得出合并文件之后,所述方法還包括:建立二級(jí)索引(new_key,(key,value)),new_key表示對(duì)應(yīng)類別的合并文件的位數(shù)組,對(duì)應(yīng)類別的合并文件為對(duì)應(yīng)類別的各個(gè)待合并文件合并后形成的文件;在接收文件讀取請(qǐng)求之后,所述方法還包括:獲取文件讀取請(qǐng)求對(duì)應(yīng)的位數(shù)組信息,在一級(jí)索引中存在匹配所獲取的位數(shù)組信息的key值時(shí),確定所述文件讀取請(qǐng)求對(duì)應(yīng)的文件存在;所述基于所述文件讀取請(qǐng)求讀取文件,包括:在二級(jí)索引中,查找出所獲取的位數(shù)組信息對(duì)應(yīng)的new_key值,基于查找出的new_key值,讀取出對(duì)應(yīng)的合并文件;基于文件讀取請(qǐng)求,從讀取出的合并文件中,讀取對(duì)應(yīng)的文件。上述方案中,所述獲取每個(gè)待合并文件的位數(shù)組,包括:基于對(duì)應(yīng)待合并文件的文件名生成至少兩個(gè)哈希函數(shù),將生成的各個(gè)哈希函數(shù)映射至預(yù)設(shè)的位數(shù)組中,得出新的位數(shù)組,將得出的新的位數(shù)組的位數(shù)組序列確定為對(duì)應(yīng)待合并文件的位數(shù)組。上述方案中,在得出合并文件之后,所述方法還包括:生成所述合并文件的元數(shù)據(jù),將生成的合并文件的元數(shù)據(jù)存儲(chǔ)在第一節(jié)點(diǎn)中;第一節(jié)點(diǎn)將存儲(chǔ)的合并文件的元數(shù)據(jù)發(fā)送至第二節(jié)點(diǎn);所述基于所述文件讀取請(qǐng)求讀取文件,包括:第二節(jié)點(diǎn)基于所述文件讀取請(qǐng)求以及與所述文件讀取請(qǐng)求對(duì)應(yīng)的合并文件的元數(shù)據(jù)讀取文件。本發(fā)明實(shí)施例還提供了一種文件處理裝置,所述裝置包括:獲取模塊、得出模塊和存儲(chǔ)模塊;其中,獲取模塊,用于獲取至少兩個(gè)文件;得出模塊,用于將滿足文件合并條件的各個(gè)文件進(jìn)行合并,得出合并文件;存儲(chǔ)模塊,用于將合并文件以bloommapfile形式進(jìn)行存儲(chǔ)。上述方案中,所述得出模塊,具體用于對(duì)獲取的各個(gè)文件進(jìn)行分類;在每個(gè)類別的文件中,將容量小于容量閾值的文件標(biāo)記為對(duì)應(yīng)類別的待合并文件;任意一個(gè)類別的各個(gè)待合并文件的容量之和達(dá)到容量閾值時(shí),利用bloomfilter將對(duì)應(yīng)類別的各個(gè)待合并文件合并,得出合并文件。上述方案中,所述得出模塊,具體用于啟動(dòng)mapreduce任務(wù)將對(duì)應(yīng)類別的各個(gè)待合并文件合并。上述方案中,所述得出模塊還包括接收模塊和讀取模塊;其中,接收模塊,用于接收文件讀取請(qǐng)求;讀取模塊,用于確定所述文件讀取請(qǐng)求對(duì)應(yīng)的文件存在時(shí),基于所述文件讀取請(qǐng)求讀取文件。上述方案中,所述讀取模塊,還用于在確定所述文件讀取請(qǐng)求對(duì)應(yīng)的文件不存在時(shí),返回讀取文件不存在的指示信息。上述方案中,所述得出模塊還包括索引建立單元;索引建立單元用于獲取每個(gè)待合并文件的位數(shù)組,建立一級(jí)索引(key,value),其中,key表示每個(gè)待合并文件的位數(shù)組,value表示每個(gè)待合并文件的內(nèi)容;所述索引建立單元,還用于建立二級(jí)索引(new_key,(key,value)),new_key表示對(duì)應(yīng)類別的合并文件的位數(shù)組,對(duì)應(yīng)類別的合并文件為對(duì)應(yīng)類別的各個(gè)待合并文件合并后形成的文件;所述讀取模塊,還用于在接收文件讀取請(qǐng)求之后,獲取文件讀取請(qǐng)求對(duì)應(yīng)的位數(shù)組信息,在一級(jí)索引中存在匹配所獲取的位數(shù)組信息的key值時(shí),確定所述文件讀取請(qǐng)求對(duì)應(yīng)的文件存在;所述讀取模塊,具體用于在二級(jí)索引中,查找出所獲取的位數(shù)組信息對(duì)應(yīng)的new_key值,基于查找出的new_key值,讀取出對(duì)應(yīng)的合并文件;基于文件讀取請(qǐng)求,從讀取出的合并文件中,讀取對(duì)應(yīng)的文件。上述方案中,所述索引建立單元,具體用于基于對(duì)應(yīng)待合并文件的文件名生成至少兩個(gè)哈希函數(shù),將生成的各個(gè)哈希函數(shù)映射至預(yù)設(shè)的位數(shù)組中,得出新的位數(shù)組,將得出的新的位數(shù)組的位數(shù)組序列確定為對(duì)應(yīng)待合并文件的位數(shù)組。上述方案中,所述存儲(chǔ)模塊位于第一節(jié)點(diǎn)中,所述讀取模塊位于第二節(jié)點(diǎn)中;所述存儲(chǔ)模塊,具體用于將生成的合并文件的元數(shù)據(jù)進(jìn)行存儲(chǔ),并將存儲(chǔ)的合并文件的元數(shù)據(jù)發(fā)送至所述讀取模塊;所述讀取模塊,具體用于基于所述文件讀取請(qǐng)求以及與所述文件讀取請(qǐng)求對(duì)應(yīng)的合并文件的元數(shù)據(jù)讀取文件。本發(fā)明實(shí)施例提供的一種文件處理方法和裝置,獲取至少兩個(gè)文件;在獲取的文件滿足文件合并條件時(shí),將滿足文件合并條件的各個(gè)文件進(jìn)行合并,得出合并文件;將合并文件以bloommapfile形式進(jìn)行存儲(chǔ);如此,緩解了namenode節(jié)點(diǎn)的工作壓力,同時(shí)提高了小文件的處理速度以及存取效率。附圖說明圖1為本發(fā)明文件處理方法的第一實(shí)施例的第一流程圖;圖2為本發(fā)明文件處理方法的第一實(shí)施例的第二流程圖;圖3為本發(fā)明實(shí)施例中利用bloom文件判定規(guī)則判斷文件是否存在的示意圖;圖4為本發(fā)明實(shí)施例中文件處理裝置的組成結(jié)構(gòu)示意圖。具體實(shí)施方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述。本發(fā)明實(shí)施例提供了一種文件處理方法,使得在訪問儲(chǔ)存的文件時(shí),緩解namenode節(jié)點(diǎn)的工作壓力,同時(shí)提高了小文件的處理速度以及存取效率。第一實(shí)施例參見圖1,其出示了本發(fā)明文件處理方法的第一實(shí)施例的第一流程圖,該流程可以包括:步驟100:獲取至少兩個(gè)文件。這里,可以利用hadoop集群的namenode節(jié)點(diǎn)獲取文件,例如,hadoop集群的namenode節(jié)點(diǎn)通過ftp下載方式獲取文件,此時(shí),將獲取的文件存儲(chǔ)在hadoop集群本地存儲(chǔ)目錄。本步驟中,并不對(duì)所獲取的文件的來源進(jìn)行限制,例如,可以從接口機(jī)獲取文件。步驟101:將滿足文件合并條件的各個(gè)文件進(jìn)行合并,得出合并文件。具體地說,對(duì)獲取的各個(gè)文件進(jìn)行分類;在每個(gè)類別的文件中,將容量小于容量閾值的文件標(biāo)記為對(duì)應(yīng)類別的待合并文件;任意一個(gè)類別的各個(gè)待合并文件的容量之和達(dá)到容量閾值時(shí),利用bloomfilter將對(duì)應(yīng)類別的各個(gè)待合并文件合并,得出合并文件;其中,在利用bloomfilter實(shí)現(xiàn)各個(gè)待合并文件的合并過程時(shí),通過啟動(dòng)mapreduce任務(wù)將對(duì)應(yīng)類別的各個(gè)待合并文件合并。這里,bloomfilter是一種空間效率很高的隨機(jī)數(shù)據(jù)結(jié)構(gòu),它利用位數(shù)組很簡(jiǎn)潔地表示一個(gè)集合;bloomfilter會(huì)使用m位的位數(shù)組以及k個(gè)相互獨(dú)立的哈希函數(shù),這里,m大于1,位數(shù)組中每位的初始數(shù)值均為0,k大于1;可以理解的是,同一個(gè)輸入值經(jīng)過k個(gè)相互獨(dú)立的哈希函數(shù)進(jìn)行計(jì)算后,能夠得出互不相同的k個(gè)哈希計(jì)算結(jié)果;在k個(gè)相互獨(dú)立的哈希函數(shù)中,第i個(gè)哈希函數(shù)表示為h(i,文件名),0≤i≤k-1;在應(yīng)用bloomfilter時(shí),使用h(i,文件名)映射至位數(shù)組中,被映射到的位置為1,使用位數(shù)組序列作為文件的key值??梢钥闯?,在上述過程中生成的序列個(gè)數(shù)可表示為c(k,m),若m=80,k=18,則c(k,m)=355214207837288770,通過c(k,m)的計(jì)算結(jié)果看出:在選取適合的m和k時(shí),可以在保證序列結(jié)果唯一準(zhǔn)確的同時(shí)能夠表示很多的文件。具體地,在對(duì)獲取的各個(gè)文件進(jìn)行分類時(shí),可以根據(jù)文件內(nèi)容類型進(jìn)行分類,這里,可以通過namenode節(jié)點(diǎn)判斷文件內(nèi)容類型,獲取的文件可以是信令類文件或圖片類文件;在判斷文件內(nèi)容類型之后,對(duì)不同內(nèi)容類型的文件分別進(jìn)行處理;判斷分類后的每個(gè)文件是否達(dá)到設(shè)置的文件大小閾值,如果達(dá)到,將對(duì)應(yīng)的文件直接保存于hdfs;如果未達(dá)到,將對(duì)應(yīng)文件標(biāo)記為對(duì)應(yīng)類別的待合并文件;這里,設(shè)置的文件大小閾值可以是32m、64m等。這里,利用bloomfilter將對(duì)應(yīng)類別的各個(gè)待合并文件合并,得出合并文件,還包括:獲取每個(gè)待合并文件的位數(shù)組;建立一級(jí)索引(key,value),其中,key表示每個(gè)待合并文件的位數(shù)組,value表示每個(gè)待合并文件的內(nèi)容。對(duì)于各個(gè)待合并文件合并的合并過程,示例性地,諸如a口信令文件、gn口信令文件、fcdr信令文件等,可通過啟動(dòng)mapreduce任務(wù)實(shí)現(xiàn)文件內(nèi)容合并,主要包括內(nèi)容去重、排序等操作;如此,經(jīng)過mapreduce合并后的有序文件替換原始文件保存于hdfs相應(yīng)目錄下,可實(shí)現(xiàn)用戶使用查詢語句直接讀取文件內(nèi)容。在利用bloomfilter將對(duì)應(yīng)類別的各個(gè)待合并文件合并,得出合并文件之后,所述方法還包括:建立二級(jí)索引(new_key,(key,value)),new_key表示對(duì)應(yīng)類別的合并文件的位數(shù)組,對(duì)應(yīng)類別的合并文件為對(duì)應(yīng)類別的各個(gè)待合并文件合并后形成的文件。具體地,上述一級(jí)索引以及二級(jí)索引的建立的過程具體為:步驟101a:初始化位數(shù)組。初始化m位的位數(shù)組,例如,m為32,并置位數(shù)組各位為0。下面通過表1說明一個(gè)32位的位數(shù)組的結(jié)構(gòu)。表100000000000000000000000000000000步驟101b:哈希映射。計(jì)算選擇的相互獨(dú)立的k個(gè)哈希函數(shù),第i個(gè)哈希函數(shù)為h(i,文件名),0≤i≤k-1,k為大于1的自然數(shù);將各個(gè)哈希函數(shù)映射至位數(shù)組,得出新的位數(shù)組。具體地,得出各個(gè)哈希函數(shù)對(duì)應(yīng)的哈希結(jié)果,獲取哈希結(jié)果中的第j個(gè)數(shù)值pj,將原位數(shù)組中第pj+1個(gè)位置的數(shù)值變?yōu)?,得出新的位數(shù)組,這里,j取1至k;例如k=10,10個(gè)哈希函數(shù)對(duì)應(yīng)的哈希結(jié)果為{2,4,7,8,10,14,15,17,27,30},則新的位數(shù)組如表2所示。表200101001101000110100000000010010步驟101c:得出key值。將上述新的位數(shù)組的位數(shù)組序列確定為key值,即,將上述新的位數(shù)組的各個(gè)數(shù)值排列后形成的數(shù)值確定為key值。例如,根據(jù)步驟101b的映射結(jié)果得出的key值為00101001101000110100000000010010。這里,本步驟得出的key值為對(duì)應(yīng)的待合并文件的位數(shù)組;也就是說,對(duì)于任意一個(gè)待合并文件,根據(jù)其文件名得出相應(yīng)的各個(gè)哈希函數(shù),再基于步驟101b和101c,對(duì)得出各個(gè)哈希函數(shù)進(jìn)行處理,便可得出對(duì)應(yīng)的待合并文件的位數(shù)組。步驟101d:生成一級(jí)索引。建立一級(jí)索引(key,value),其中,key為步驟101c中得出的key值,value為對(duì)應(yīng)文件的內(nèi)容。步驟101e:生成二級(jí)索引。經(jīng)過內(nèi)容類型合并的信令類文件,建立二級(jí)索引(new_key,(key,value)),new_key表示對(duì)應(yīng)類別的合并文件的位數(shù)組。步驟102:將合并文件以bloommapfile形式進(jìn)行存儲(chǔ)。這里,獲得合并文件之后,可以采用多種現(xiàn)有的實(shí)現(xiàn)方式將合并文件以bloommapfile形式進(jìn)行存儲(chǔ),這里不再贅述。進(jìn)一步地,本發(fā)明第一實(shí)施例的文件處理方法還包括文件讀取方法。參見圖2,其出示了本發(fā)明文件處理方法的第一實(shí)施例的第二流程圖,該流程可以包括:步驟103:接收文件讀取請(qǐng)求。示例性地,客戶端發(fā)送讀取文件請(qǐng)求至接收節(jié)點(diǎn),利用接收節(jié)點(diǎn)接收客戶端發(fā)起的文件讀取請(qǐng)求。這里,接收節(jié)點(diǎn)包括但不限于namenode節(jié)點(diǎn),可以理解的是,namenode節(jié)點(diǎn)位于hadoop集群中。下面以接收節(jié)點(diǎn)是namenode節(jié)點(diǎn)為例進(jìn)行說明。這里,接收文件讀取請(qǐng)求的namenode節(jié)點(diǎn)與步驟100中獲取文件的namenode節(jié)點(diǎn)可以是不同的節(jié)點(diǎn),具體地說,在步驟100中,所述的namenode節(jié)點(diǎn)為第一namenode節(jié)點(diǎn),第一namenode節(jié)點(diǎn)在得到合并文件之后,生成合并文件的元數(shù)據(jù),并發(fā)送合并文件的元數(shù)據(jù)到第二namenode節(jié)點(diǎn);在本步驟中,所述的接收節(jié)點(diǎn)為第二namenode節(jié)點(diǎn),第二namenode節(jié)點(diǎn)主要負(fù)責(zé)文件的讀取。本發(fā)明第一實(shí)施例中,第一namenode節(jié)點(diǎn)與第二namenode節(jié)點(diǎn)分工協(xié)作,同時(shí)工作。第一namenode節(jié)點(diǎn)用以實(shí)現(xiàn)文件合并,產(chǎn)生元數(shù)據(jù)信息,并發(fā)送合并文件的元數(shù)據(jù)到第二namenode節(jié)點(diǎn);第二namenode節(jié)點(diǎn)利用合并文件的元數(shù)據(jù)實(shí)現(xiàn)文件讀取。此種工作模式可以極大減輕單一namenode節(jié)點(diǎn)工作的壓力,加快處理速度,同時(shí)第二namenode節(jié)點(diǎn)具有與第一namenode節(jié)點(diǎn)相同的元數(shù)據(jù)信息,在第一namenode節(jié)點(diǎn)出現(xiàn)故障時(shí),第二namenode節(jié)點(diǎn)可立即接手其工作,從而保障文件存儲(chǔ)與文件讀取的正常運(yùn)行。本步驟中,發(fā)起讀取某個(gè)文件至第二namenode節(jié)點(diǎn),第二namenode節(jié)點(diǎn)接收客戶端發(fā)起的文件讀取請(qǐng)求。步驟104:確定所述文件讀取請(qǐng)求對(duì)應(yīng)的文件存在時(shí),基于所述文件讀取請(qǐng)求讀取文件。本步驟中,獲取文件讀取請(qǐng)求對(duì)應(yīng)的位數(shù)組信息,在一級(jí)索引中存在匹配所獲取的位數(shù)組信息的key值時(shí),確定所述文件讀取請(qǐng)求對(duì)應(yīng)的文件存在;在一級(jí)索引中不存在匹配所獲取的位數(shù)組信息的key值時(shí),確定所述文件讀取請(qǐng)求對(duì)應(yīng)的文件不存在;在確定所述文件讀取請(qǐng)求對(duì)應(yīng)的文件不存在時(shí),返回讀取文件不存在的指示信息。確定所述文件讀取請(qǐng)求對(duì)應(yīng)的文件存在時(shí),獲取文件讀取請(qǐng)求對(duì)應(yīng)的位數(shù)組信息,在二級(jí)索引中,查找出所獲取的位數(shù)組信息對(duì)應(yīng)的new_key值,基于查找出的new_key值,讀取出對(duì)應(yīng)的合并文件;基于文件讀取請(qǐng)求,從讀取出的合并文件中,根據(jù)所獲取的位數(shù)組信息的key值,讀取對(duì)應(yīng)的文件??梢岳斫獾氖牵谧x取出對(duì)應(yīng)的合并文件,還需要利用所述文件讀取請(qǐng)求對(duì)應(yīng)的合并文件的元數(shù)據(jù)。這里,在從hdfs中讀取出相應(yīng)的合并文件之后,可以通過計(jì)算得出的key值將讀取的對(duì)應(yīng)的文件下載至客戶端。本步驟中,在獲取文件讀取請(qǐng)求對(duì)應(yīng)的位數(shù)組信息,可以基于bloom文件判定規(guī)則快速判別在一級(jí)索引中是否存在匹配所獲取的位數(shù)組信息的key值,進(jìn)而判別讀取文件是否存在,如附圖3所示。假設(shè)位數(shù)組的位數(shù)m=32,哈希函數(shù)個(gè)數(shù)k=10,客戶端需要讀取兩個(gè)文件時(shí);第二namenode節(jié)點(diǎn)判斷所讀取的兩個(gè)文件是否存在時(shí),獲取相應(yīng)兩個(gè)文件讀取請(qǐng)求;根據(jù)這兩個(gè)文件讀取請(qǐng)求,獲取相應(yīng)的兩個(gè)key值,這兩個(gè)key值是通過哈希函數(shù)得出的,結(jié)果分別為a1和a2,其中a1為{2,4,7,8,10,14,15,16,20,22},a2為{7,8,9,13,14,15,19,21,28,30}。從表中可以看出a1對(duì)應(yīng)的位數(shù)組各位均為1,而a2對(duì)應(yīng)的部分位數(shù)組位為0,根據(jù)bloom文件判定規(guī)則,文件映射結(jié)果位不全為1時(shí)此文件不存在,反之則可能存在,可以看出,在一級(jí)索引中存在a1對(duì)應(yīng)的key值,不存在a2對(duì)應(yīng)的key值,也就是說a1對(duì)應(yīng)的待讀取文件可能存在,需讀取元數(shù)據(jù)獲取文件存儲(chǔ)信息,而a2對(duì)應(yīng)的待讀取文件是不存在的,無需讀取元數(shù)據(jù)至內(nèi)存??梢钥闯觯静襟E中,基于查詢文件名并通過k個(gè)哈希函數(shù)計(jì)算得出key值,之后,可在基于bloom文件判定規(guī)則快速識(shí)別文件是否存在,若不存在則直接返回所查文件不存在信息給客戶端,若存在則通過計(jì)算得到的key值讀出文件。此種判斷方式,不僅可以快速判斷出查詢的文件是否存在,同時(shí)加快了文件的檢索速度,更重要的是判斷文件是否存在時(shí)無需將全部元數(shù)據(jù)讀取至內(nèi)存中,極大的加快了節(jié)點(diǎn)的運(yùn)行速度。步驟105:將讀取的文件發(fā)送至至客戶端。具體地說,第二namenode節(jié)點(diǎn)將讀取的文件發(fā)送至發(fā)起文件讀取請(qǐng)求的客戶端,此時(shí),文件讀取過程完畢。應(yīng)用本發(fā)明第一實(shí)施例的文件處理方法,利用第一namenode節(jié)點(diǎn)與第二namenode節(jié)點(diǎn)分工協(xié)作,同時(shí)工作??梢詷O大減輕單一namenode節(jié)點(diǎn)工作的壓力,加快處理速度,同時(shí)第二namenode節(jié)點(diǎn)具有與第一namenode節(jié)點(diǎn)相同的元數(shù)據(jù)信息,在第一namenode節(jié)點(diǎn)出現(xiàn)故障時(shí),第二namenode節(jié)點(diǎn)可立即接手其工作,從而保障系統(tǒng)正常運(yùn)行;另外,使用bloomfilter實(shí)現(xiàn)文件合并,并將合并文件以bloommapfiles形式保存,便于實(shí)現(xiàn)文件的快速查詢,如此,緩解了namenode節(jié)點(diǎn)的工作壓力,同時(shí)提高了小文件的存儲(chǔ)和讀取速度。第二實(shí)施例參見圖4,其出示了本發(fā)明實(shí)施例中文件處理裝置的組成結(jié)構(gòu)示意圖,該裝置包括:獲取模塊200、得出模塊201和存儲(chǔ)模塊202;獲取模塊200,用于獲取至少兩個(gè)文件。得出模塊201,用于將滿足文件合并條件的各個(gè)文件進(jìn)行合并,得出合并文件。存儲(chǔ)模塊202,用于將合并文件以bloommapfile形式進(jìn)行存儲(chǔ)。具體地,所述得出模塊201,用于對(duì)獲取的各個(gè)文件進(jìn)行分類;在每個(gè)類別的文件中,將容量小于容量閾值的文件標(biāo)記為對(duì)應(yīng)類別的待合并文件;在任意一個(gè)類別的各個(gè)待合并文件的容量之和達(dá)到容量閾值時(shí),利用bloomfilter將對(duì)應(yīng)類別的各個(gè)待合并文件合并,得出合并文件。這里,所述得出模塊201,用于啟動(dòng)mapreduce任務(wù)將對(duì)應(yīng)類別的各個(gè)待合并文件合并。進(jìn)一步地,得出模塊201包括索引建立單元2011;這里,索引建立單元2011,用于獲取每個(gè)待合并文件的位數(shù)組,建立一級(jí)索引(key,value),其中,key表示每個(gè)待合并文件的位數(shù)組,value表示每個(gè)待合并文件的內(nèi)容;所述索引建立單元2011,還用于建立二級(jí)索引(new_key,(key,value)),new_key表示對(duì)應(yīng)類別的合并文件的位數(shù)組,對(duì)應(yīng)類別的合并文件為對(duì)應(yīng)類別的各個(gè)待合并文件合并后形成的文件;進(jìn)一步地,所述文件處理裝置還包括:接收模塊203和讀取模塊204;接收模塊203,用于接收文件讀取請(qǐng)求。讀取模塊204,用于確定所述文件讀取請(qǐng)求對(duì)應(yīng)的文件存在時(shí),基于所述文件讀取請(qǐng)求讀取文件;還用于在確定所述文件讀取請(qǐng)求對(duì)應(yīng)的文件不存在時(shí),返回讀取文件不存在的指示信息。具體地,讀取模塊204,還用于在接收文件讀取請(qǐng)求之后,獲取文件讀取請(qǐng)求對(duì)應(yīng)的位數(shù)組信息,在一級(jí)索引中存在匹配所獲取的位數(shù)組信息的key值時(shí),確定所述文件讀取請(qǐng)求對(duì)應(yīng)的文件存在。進(jìn)一步地,讀取模塊204,還用于在二級(jí)索引中,查找出所獲取的位數(shù)組信息對(duì)應(yīng)的new_key值,基于查找出的new_key值,讀取出對(duì)應(yīng)的合并文件;基于文件讀取請(qǐng)求,從讀取出的合并文件中,讀取對(duì)應(yīng)的文件。存儲(chǔ)模塊202位于第一節(jié)點(diǎn)中,讀取模塊204位于第二節(jié)點(diǎn)中。具體地,存儲(chǔ)模塊202用于將生成的合并文件的元數(shù)據(jù)進(jìn)行存儲(chǔ),并將存儲(chǔ)的合并文件的元數(shù)據(jù)發(fā)送至所述讀取模塊;讀取模塊204,用于基于所述文件讀取請(qǐng)求以及與所述文件讀取請(qǐng)求對(duì)應(yīng)的合并文件的元數(shù)據(jù)讀取文件。在實(shí)際應(yīng)用中,所述獲取模塊200、得出模塊201、存儲(chǔ)模塊202、接收模塊203和讀取模塊204均可由位于hadoop集群中的中央處理器(centralprocessingunit,cpu)、微處理器(microprocessorunit,mpu)、數(shù)字信號(hào)處理器(digitalsignalprocessor,dsp)、或現(xiàn)場(chǎng)可編程門陣列(fieldprogrammablegatearray,fpga)等實(shí)現(xiàn)。本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用硬件實(shí)施例、軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器和光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。當(dāng)前第1頁12