本發(fā)明涉及數(shù)據計算,特別涉及一種基于高性能網絡架構的數(shù)據計算方法。
背景技術:
云計算技術擁有分布式計算,超大規(guī)模,虛擬化,高可靠性,高彈性,可擴展,按需服務等特點,能夠為大數(shù)據處理提供更為高效的分析以及更好的計算能力。針對大數(shù)據處理中的數(shù)以億計的小文件處理,需要分布式存儲系統(tǒng)和索引系統(tǒng)來為網頁和郵件等文件提供存儲支持。隨著大量小文本文件處理的應用需求,不同信息系統(tǒng)中存在著大量異構數(shù)據源;數(shù)據缺乏統(tǒng)一的規(guī)范化組織方法;在某些領域,大量小文本文件難以有效分析和高效存儲與檢索。
技術實現(xiàn)要素:
為解決上述現(xiàn)有技術所存在的問題,本發(fā)明提出了一種基于高性能網絡架構的數(shù)據計算方法,包括:
利用mapreduce對小文本文件進行分類;
基于上述分類將多個小文件合并成大文件。
優(yōu)選地,所述對小文本文件進行分類,進一步包括:
利用mapreduce描述k近鄰分類過程,同時在k近鄰中加入特征向量比較,順序重新構造兩個特征詞相同的特征向量。
優(yōu)選地,所述利用mapreduce描述k近鄰分類過程的步驟之前,還包括:
基于xml和多值對mapreduce模型進行改進;通過xml標記數(shù)據的內容,坐標,操作信息,進行數(shù)據處理;通過xml標記及map過程中的多值處理,實現(xiàn)數(shù)據處理的操作。
優(yōu)選地,所述利用mapreduce描述k近鄰分類過程,進一步包括:首先按文檔格式進行初次分類;對于分類后的文本文檔,根據基于mapreduce和特征向量減少的改進k近鄰分類方法進行分類;然后合并統(tǒng)一類別的小文本文件,生成大文件;將小文本文件按照時間順序寫入大文件,然后將大文件的名字、副本、位置信息寫入名字節(jié)點,將內容寫入datanode。
優(yōu)選地,所述在k近鄰中加入特征向量比較,順序重新構造兩個特征詞相同的特征向量,進一步包括:
在k近鄰算法中先找出兩個原始特征向量之間相同的詞及其權重,按照相同特征詞的順序重新構造兩個特征詞都相同的特征向量,再利用特征詞對應的權重向量來計算這兩個特征向量之間的相似度。
本發(fā)明相比現(xiàn)有技術,具有以下優(yōu)點:
本發(fā)明提出了一種基于高性能網絡架構的數(shù)據計算方法,基于改進的分布式處理架構將來自不同異構源的多種小文件進行統(tǒng)一規(guī)范組織,便于高效存儲、分析與檢索。
附圖說明
圖1是根據本發(fā)明實施例的基于高性能網絡架構的數(shù)據計算方法的流程圖。
具體實施方式
下文與圖示本發(fā)明原理的附圖一起提供對本發(fā)明一個或者多個實施例的詳細描述。結合這樣的實施例描述本發(fā)明,但是本發(fā)明不限于任何實施例。本發(fā)明的范圍僅由權利要求書限定,并且本發(fā)明涵蓋諸多替代、修改和等同物。在下文描述中闡述諸多具體細節(jié)以便提供對本發(fā)明的透徹理解。出于示例的目的而提供這些細節(jié),并且無這些具體細節(jié)中的一些或者所有細節(jié)也可以根據權利要求書實現(xiàn)本發(fā)明。
本發(fā)明的一方面提供了一種基于高性能網絡架構的數(shù)據計算方法。圖1是根據本發(fā)明實施例的基于高性能網絡架構的數(shù)據計算方法流程圖。
本發(fā)明通過文件分類,建立索引結構,并基于權值相似度文件合并成大文件以在云計算環(huán)境下處理。在對小文本文件進行分類時,利用mapreduce描述k近鄰分類過程,同時,在k近鄰中加入特征向量比較,順序重新構造兩個特征詞相同的特征向量。針對文檔檢索過程中的復雜處理及內容映射關系,基于xml和多值的改進mapreduce模型。通過xml標記數(shù)據的內容,坐標,操作等信息,進行數(shù)據復雜處理。數(shù)據的內容一般具有映射關系,通過xml標記及map過程中的多值處理,實現(xiàn)數(shù)據處理的操作。
首先,按文檔格式進行初次分類。對于分類后的文本文檔,根據基于mapreduce和特征向量減少的改進k近鄰分類方法進行分類。然后合并統(tǒng)一類別的小文本文件,生成大文件。。將小文本文件按照時間順序寫入大文件,然后將大文件的名字、副本、位置信息寫入名字節(jié)點,將內容寫入datanode。
在k近鄰算法中加入傳統(tǒng)的特征向量的比較方法,先找出兩個原始特征向量之間相同的詞及其權重,按照相同特征詞的順序重新構造兩個特征詞都相同的特征向量,再利用特征詞對應的權重向量來計算這兩個特征向量之間的相似度。
方法描述如下:對訓練集中的所有文本進行預處理,生成鍵值對形式的特征向量;
步驟1.歸一化輸入的文本的特征向量t和訓練樣本的特征向量集et;并計算出t、et中相同的特征詞;
步驟2.把相同的特征詞和對應的權值提取出來組成新的向量nt、net;
步驟3.應用mapreduce進行相似度計算。計算兩個特征向量的權值組成的一元向量之間的相似度sim(t,x);
步驟4.mapreduce對計算的文本的相似度計算結果進行排序;
步驟5.取出相似度最高的k個文本;把這k個文本的相似度按類別累加;
步驟6.取相似度最大值si以及對應的類別ci;
步驟7.若si大于預定義相似度閾值,則標識該文本屬于ci類。
在索引結構方面,以k維空間數(shù)據集劃分的樹構建整個樹形結構的主干,判斷k維樹是否為空,若為空則直接作為根節(jié)點。否則比較該點與k維樹根節(jié)點相應維的值的大小關系,進入其左、右子樹進行下一步操作;若該點小于根節(jié)點相應維的值,則進入左子樹進行查找操作直至某個節(jié)點的左子樹或右子樹為空。則將該點插入作為其葉子節(jié)點;若該點大于根節(jié)點相應維的值,則進入右子樹進行插入操作。然后,在該k維樹的葉子節(jié)點上加載位置敏感散列結構,即將剩余的點放置入位置敏感散列中。將數(shù)據集x轉化為空間中的二進制串;預先選取參數(shù)r>0,c>1,隨機選取k個散列函數(shù);利用這些散列函數(shù)將數(shù)據點存入相應的散列表中。
以上述文件索引規(guī)則為基礎,對小文本文件進行了合并,設有多個文件a1,a2…an,其中ai=ai1,ai2,…,aik…,且aik為文件名的第k個字符。具體步驟為:
步驟1,對輸入的字符串ai(i=l,2,...n),找到aik=‘.’,截取aik后面的所有字符。統(tǒng)計這個塊中具有此類文件的個數(shù),記為mij。依次計算同一節(jié)點中每一塊所包含的此類文件的個數(shù),得到序列mi1,mi2,...min,求mi=∑mij(j=0,1,…,n)表示這個節(jié)點中包含的擴展名的類別。
步驟2.計算這個節(jié)點中存放的所有小文本文件的數(shù)目m,獲取小文本文件在分類過程中設置的權值。
步驟3.求解每個類型文件所占的比例mi/m,按比例從大到小排序。形成的擴展名列表在datanode中維護。
步驟4.統(tǒng)計這個節(jié)點上的mi中的根節(jié)點,形成根節(jié)點列表。在每個擴展名中都有一個根節(jié)點列表。此列表在datanode中維護。
步驟5.根據待放置的塊所在的reduce任務,得到此塊的擴展名。
步驟6.讀取待放置的塊的根節(jié)點。設置根節(jié)點列表,按照權值相似度最大原則對根進行排序。
步驟7.選擇此塊中排在第一位的根。
步驟8.在集群中找到擴展名所占比例最大的節(jié)點。在其中查找此根,如果存在,放置此塊。
步驟9.將此節(jié)點從候選列表中排除,然后判斷列表是否為空。不為空,轉步驟8。
步驟10.將此根從根的列表中排除,判斷根的列表是否為空。不為空,轉步驟7;為空,隨機存放在有此擴展名的節(jié)點上。
針對文檔檢索過程中的復雜處理及內容映射關系,在原有的mapreduce模型增加多個預處理負載節(jié)點,這些負載節(jié)點它們執(zhí)行的任務是由主節(jié)點在執(zhí)行map任務以前所派發(fā)的任務中的子任務,然后把用戶約束關系進行預處理。用戶將具有約束關系的處理請求提交給主節(jié)點,主節(jié)點根據任務請求動態(tài)生成描述該約束關系的xml文件,任務分割后,讀取xml文件中的多值映射關系,當單個map任務開始時,分析輸入的文件并產生一對多關系的鍵值對,用戶對鍵值對進行任意的操作。完成后則重新收集自定義的鍵值對,將數(shù)據處理的約束關系處理完畢,然后再開始mapreduce調度的map過程和reduce過程。
為進一步實現(xiàn)云存儲負載均衡,用cdata={1,2,...m}表示云存儲中所有存儲數(shù)據塊的集合。k∈cdata表示第k組存儲數(shù)據,m為需分配的云存儲中存儲數(shù)據的總組數(shù)。記云存儲平臺中第i個存儲節(jié)點獲得組存儲資源的存儲效率為l(u(i),i);將云存儲資源優(yōu)化分配問題表達為求解
(1)初始化過程中,將cdata中的數(shù)據按照一致性散列分布策略,分為m組數(shù)據,存儲節(jié)點虛擬化為n個存儲節(jié)點,初始化存儲節(jié)點的存儲效率值e和負載能力c。設置階段計數(shù)器i。
(2)根據虛擬化的存儲節(jié)點個數(shù),把此資源分配過程分為n個階段。確定狀態(tài)變量x(i+1),表示分配1至i個存儲節(jié)點后剩余的數(shù)據;
(3)x(i)以一定的步長遍歷其取值區(qū)間[u(i)min,u(i)max],計算將剩余資源x(i)分配給第i個存儲節(jié)點之后的n-i個存儲節(jié)點的最大存儲效率v(x(i),i),同時將相關數(shù)據記錄在數(shù)據集合notedata[i]{x(i),u(i),v(x(i),i)}中。
(4)當i=n時,根據第n個存儲節(jié)點的負載能力c和存儲效率e進行數(shù)據分配,u(n)<=cn。
利用狀態(tài)轉移方程:x(i+1)=x(i)-u(i)
和動態(tài)規(guī)劃方程v(x(i),i)=maxu(i)∈u(x(i)){l(u(i),i),+v(x(i+1),i+1)},i=n-1,2,…,1
v(x(n),n)=l(x(n),n)
推出各個階段的最優(yōu)值,分配過程中根據每個階段的存儲節(jié)點的負載能力ci確定決策變量u(i)的邊界值。
(5)遞歸計算求得最優(yōu)決策序列notedata(u(1),u(2),...,u(n)),若
基于上述改進的mapreduce框架,在多檢索并發(fā)環(huán)境下,本發(fā)明設置共享檢索架構并采用兩級共享,第一級共享使用公共樣本管理機制實現(xiàn)共享采樣,減少冗余i/o開銷;第二級共享將在線聚集的計算共享抽象成特殊的acq優(yōu)化問題。本發(fā)明從子任務層面實現(xiàn)多檢索作業(yè)的合并,即根據各個檢索作業(yè)子任務的相關性實現(xiàn)任務級合并,并將合并的共享任務發(fā)往各個計算節(jié)點完成進一步處理?;趆adoop的共享檢索系統(tǒng)架構的流程可包括:檢索采集器負責收集一組檢索請求,并通過對各檢索作業(yè)map子任務的分析實現(xiàn)任務級合并操作,形成一系列共享map任務;共享map任務被分配到各個計算節(jié)點進行相應處理,包括從hdfs采集樣本數(shù)據以及計算相關統(tǒng)計量;根據統(tǒng)計量相關信息由reduce任務完成近似估計和精度判斷,若符合用戶精度需求則返回,否則重復執(zhí)行上述操作。
給定兩個檢索q1和q2,其相應的map子任務集合為m1={m1,1,m1,2…,m1,m}和m2={m2,1,m2,2…,m2,n},則本發(fā)明的共享方案為:若兩個map子任務mi,1∈m1,mj,2∈m2具有相同的輸入數(shù)據即數(shù)據塊bi=bj,則將這兩個map子任務合并為共享map任務進而實現(xiàn)兩個獨立i/o管道的合并,通過對數(shù)據塊bi的統(tǒng)一訪問完成采樣共享;若兩個map子任務mi,1∈m1,mj,2∈m2除了具有相同數(shù)據塊以外,還具有相同的檢索謂詞和聚集類型語句,包括sum,count,avg時,共享map任務實現(xiàn)對兩個map任務統(tǒng)計量計算的合并,通過計算和復用中間統(tǒng)計量完成統(tǒng)計量計算的共享;若兩個map子任務不具有相同輸入數(shù)據即bi≠bj時,則無法合并生成共享map任務。
針對上述不同的共享方式以及共享方案,本發(fā)明采用以下共享策略:針對每個數(shù)據塊bi.構建統(tǒng)一的i/o管道用于樣本采集,并將獲取的隨機樣本保存于內存中的樣本緩沖區(qū),為后續(xù)共享采樣提供數(shù)據支持;針對第一級共享,根據共享map任務中各個參與合并的map任務在每一輪精度估計所需樣本的需求量,從緩沖區(qū)中讀取相應大小的樣本集并分配給中滿足共享采樣條件的map任務以完成計算任務;若共享map任務中需要進行統(tǒng)計量計算共享,則在第二級共享中從第一級共享結果獲取相應樣本集,并對其按照底層map任務共享組進行中間統(tǒng)計量的分類計算,各個共享組通過對中間統(tǒng)計量的復用得到各自統(tǒng)計量,從而完成計算任務。
所述統(tǒng)計量的分類計算,具體可由兩階段完成:劃分階段和調整階段。輸入一組樣本集合k={k1i,k2i,…kni},對樣本集合k進行升序排序,劃分階段利用貪心策略確定初始共享分組方案;而調整階段的任務是對相鄰共享分組內的map任務進行局部調整。
劃分階段采用一組樣本量的方差值作為度量其差異大小的標準,通過對方差較大的共享分組進行劃分實現(xiàn)差異樣本量的分離。首先,計算當前共享分組方案的整體共享開銷并記為cmin,其次,從共享分組方案中選取具有最大方差的共享分組作為劃分操作的候選共享分組,并根據共享分組內樣本量的均值將其劃分成兩個新的共享分組,隨后,計算新產生的共享分組方案'的整體共享開銷并記為ccur,若cmin≤ccur則保留該新共享分組方案并重復上述劃分執(zhí)行流程,反之則返回原共享分組方案。
在調整階段,定義共享分組方案的第i個共享分組sgr表示樣本量的遷出分組,而第i-1個共享分組sgl;表示樣本量的遷入分組,選取小于分組內樣本量均值的樣本量形成初始的候選遷移樣本量集合cand;對cand中的元素進行進一步優(yōu)先級判定,選取較優(yōu)的樣本量進行遷移。針對中的每個元素cand[j],分別統(tǒng)計sgr內剩余樣本量中與其具有公共邊界的樣本量個數(shù)egr以及sgl內所有樣本量中與其具有公共邊界的樣本量個數(shù)egl。定義兩個變量cer和cel分別對cand[j]所對應的egr和egl進行排序,在cer中采用升序排列,而在cel中采用降序排列,針對任一cand[j],采用其在cer和cel中的索引位置rind和lind作為優(yōu)先級歸一化參數(shù),并引入權重系數(shù)win和wout以調節(jié)egr和egl對優(yōu)先級的影響。綜合考慮egr和egl影響的樣本量遷移優(yōu)先級按如下公式計算:
rank=winrind+woutlind
其中權重系數(shù)win+wout=1;為每個計算得到其對應的遷移優(yōu)先級并選取具有最高優(yōu)先級的樣本量進行相鄰共享分組間的遷移以獲取新的共享分組方案,并通過共享代價的計算和比較可以判定上述遷移實例是否有效,直至共享代價不再降低,并返回最終共享分組方案。
給定一個多表檢索,其map函數(shù)根據不同的共享需求對相應的map任務或者共享分組進行分別處理,實現(xiàn)輸入數(shù)據的讀取并對樣本集進行統(tǒng)計量計算,將每一輪統(tǒng)計計算結果作為reduce函數(shù)的輸入數(shù)據。首先,map函數(shù)加載全局變量以支持后續(xù)統(tǒng)計量計算,并從變量中讀取采樣共享map任務集合以及統(tǒng)計量計算共享分組。其次,針對每一個到達的鍵值對,首先由公共樣本緩沖區(qū)進行緩存,并根據不同的共享需求對其進行讀取和使用。針對采樣共享,當中保存了足量樣本時,獲取每個所需的樣本量并更新進而根據變量中的檢索類型對:進行統(tǒng)計量計算,并將計算結果以當前檢索id為鍵值以統(tǒng)計量和當前map任務id為組合鍵值形成鍵值對作為后續(xù)reduce函數(shù)的輸入數(shù)據。
綜上所述,本發(fā)明提出了一種基于高性能網絡架構的數(shù)據計算方法,基于改進的分布式處理架構將來自不同異構源的多種小文件進行統(tǒng)一規(guī)范組織,便于高效存儲、分析與檢索。
顯然,本領域的技術人員應該理解,上述的本發(fā)明的各模塊或各步驟可以用通用的計算系統(tǒng)來實現(xiàn),它們可以集中在單個的計算系統(tǒng)上,或者分布在多個計算系統(tǒng)所組成的網絡上,可選地,它們可以用計算系統(tǒng)可執(zhí)行的程序代碼來實現(xiàn),從而,可以將它們存儲在存儲系統(tǒng)中由計算系統(tǒng)來執(zhí)行。這樣,本發(fā)明不限制于任何特定的硬件和軟件結合。
應當理解的是,本發(fā)明的上述具體實施方式僅僅用于示例性說明或解釋本發(fā)明的原理,而不構成對本發(fā)明的限制。因此,在不偏離本發(fā)明的精神和范圍的情況下所做的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。此外,本發(fā)明所附權利要求旨在涵蓋落入所附權利要求范圍和邊界、或者這種范圍和邊界的等同形式內的全部變化和修改例。