一種分布式環(huán)境下的模式匹配處理器的制造方法
【專利摘要】本發(fā)明公開了一種分布式環(huán)境下的模式匹配處理器,結(jié)合分布式計(jì)算環(huán)境改進(jìn)WM模式匹配算法,Wu-Manber算法分為預(yù)處理階段和匹配階段,本發(fā)明將針對這兩個(gè)階段分別運(yùn)用Map-Reduce編程模型處理,使Wu-Manber算法適用于分布式環(huán)境,并且具有更強(qiáng)的可擴(kuò)展性和可并行性,從而能充分利用和更好的控制集群中的機(jī)器相互協(xié)作完成模式匹配的任務(wù)。對當(dāng)今大數(shù)據(jù)時(shí)代中過載的信息處理提供了解決方案。
【專利說明】—種分布式環(huán)境下的模式匹配處理器
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及模式匹配與云計(jì)算領(lǐng)域,利用分布式計(jì)算法的技術(shù)結(jié)合經(jīng)典的Wu-Manber模式匹配算法進(jìn)行改進(jìn),公開了一種分布式環(huán)境下的模式匹配處理器。該處理器充分利用Map-Reduce的特性,將Wu-Manber的預(yù)處理過程和匹配過程拆分成Map-Reduce作業(yè),使處理過程并發(fā)進(jìn)行。
【背景技術(shù)】
[0002]模式匹配Pattern matching (也稱串匹配String matching)是復(fù)雜性理論中研究最廣泛的問題之一,它是網(wǎng)絡(luò)安全、信息檢索與過濾、文字處理、數(shù)據(jù)庫查詢、音樂檢索、計(jì)算生物學(xué)等重要領(lǐng)域的核心問題,同時(shí)也是序列模式挖掘技術(shù)的核心與基礎(chǔ)。
[0003]模式匹配的算法很多,比較經(jīng)典的有KMP算法,Shift-And/Shift-0r算法,Boyer-Moore算法以及Wu-Manber算法等,這些算法提出的年代較為久遠(yuǎn),在此之后也有很多人提出過針對這些算法的改進(jìn)。甚至在某些特定的場合通過一定的條件約束或者使用特定的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)出特定的高效算法,但是數(shù)據(jù)量的增長已經(jīng)遠(yuǎn)遠(yuǎn)超過這些算法改進(jìn)所處理的程度。
[0004]Google發(fā)表的論文,奠定了云計(jì)算技術(shù)工業(yè)化應(yīng)用的基礎(chǔ),也成為分布式計(jì)算領(lǐng)域的事實(shí)標(biāo)準(zhǔn)。本發(fā)明也將采用Map-Reduce的編程模型,使Wu-Manber算法適用于分布式計(jì)算環(huán)境,來處理海量的Internet信息。
[0005]Map-Reduce 介紹
Map-Reduce編程模型的輸入是一批具有KEY-VALUE格式的記錄,產(chǎn)生的輸出也是KEY-VALUE格式的記錄集合。Map-Raduce編程模型的用戶通過兩個(gè)函數(shù):Mapper和Reducer來實(shí)現(xiàn)整個(gè)流程。
[0006]Maper由用戶實(shí)現(xiàn),根據(jù)每一個(gè)KEY-VALUE的輸入,產(chǎn)生一個(gè)KEY-VALUE中間結(jié)果。正如其名MAP,這個(gè)過程是一對一的映射過程。Map-Reduce的模型會將這一映射的結(jié)果以相同的KEY將結(jié)果集合排序、分組,然后再將結(jié)果傳給Reducer。
[0007]Reducer也是由用戶實(shí)現(xiàn),接收Mappper產(chǎn)生的結(jié)果集合,針對相同的key,將這個(gè)key所對應(yīng)的所有的value按照用戶定義的方法歸并起來形成一個(gè)更小的KEY-VALUE集合。通常每個(gè)Reduce調(diào)用產(chǎn)生O或者I個(gè)輸出值。同一個(gè)key對應(yīng)的多個(gè)Value值是通過一個(gè)迭代器來傳遞處理。因此即使某個(gè)key對應(yīng)的Value非常多而無法放入內(nèi)存映射時(shí),也能正確的運(yùn)行Reducer。
[0008]由于Mapper的輸入數(shù)據(jù)可能在不同的物理機(jī)器上,或者可以在任務(wù)開始的時(shí)候?qū)apper的數(shù)據(jù)分段分發(fā)到不同的物理機(jī)器上,然后在不同的物理機(jī)器上分別執(zhí)行Mapper,然后統(tǒng)一的對所有Mapper的輸出集合進(jìn)行排序、分組,再將結(jié)果集合按照KEY運(yùn)行一個(gè)或者多個(gè)Reducer。
[0009]Wu-Manber 算法介紹
Wu-Manber算法采用字符塊技術(shù),增大了主串和模式串不匹配的可能性,從而增加了直接跳躍的機(jī)會。使用散列表選擇模式串集合中的一個(gè)子集與當(dāng)前文本進(jìn)行完全匹配。使用前綴表進(jìn)一步過濾不匹配的模式串,使算法獲得了較高的運(yùn)行效率。
[0010]麗算法首先對模式串集合進(jìn)行預(yù)處理。預(yù)處理階段將建立3個(gè)表格=SHIFT表,HASH表和PREFIX表。SHIFT表用于在掃描文本串的時(shí)候,根據(jù)讀入字符串決定可以跳過的字符數(shù),如果相應(yīng)的跳躍值為0,則說明可能產(chǎn)生匹配。HASH表用來存儲尾塊字符散列值相同的模式串。PREFIX表用于存儲尾塊字符散列值相同的模式串的首塊字符散列值。
[0011]SHIFT表為每個(gè)B大小的字符塊維護(hù)一個(gè)key,每個(gè)key值對應(yīng)的value是遇到該字符塊匹配時(shí),目標(biāo)串的當(dāng)前位置需要移動的距離。
[0012]HASH表的key也是字符塊,value是指向一個(gè)鏈表的指針,這個(gè)鏈表中的元素是當(dāng)SHIFT [key]為O時(shí),后綴為key的模式串。
[0013]PREFIX 表的生成與 HASH 表相對,HASH 表中的 key 為 T而 PREFIX 表中的key為T [1...B]。有PREFIX表,就可以對HASH表項(xiàng)指向的鏈表做進(jìn)一步的過濾,即只有前綴和PREFIX的key值相等的鏈表元素才參與匹配驗(yàn)證。因?yàn)樵谀J郊现屑扔邢嗤暮缶Y又有相同前綴的情況會更少。
[0014]算法匹配的大致原理:
(I)設(shè)當(dāng)前比較的文本串X的hash值為h。如果SHIFT [h]=0,說明可能產(chǎn)生了匹配,那么需要進(jìn)一步的判斷。
[0015](2)用該h值作為索引,查HASH表找到HASH[h],它存儲的是指標(biāo),指向兩個(gè)單獨(dú)的表:一個(gè)是模式鏈表,另一個(gè)是PREFIX表。模式鏈表中存放的是后B個(gè)字符的hash值同為h的所有模式。
[0016](3)對于待比較長度為m的串,如果其長度為B的前綴與模式的前綴的hash值也相同,則再將相應(yīng)的文本串與符合的模式逐一進(jìn)行比較,最終判定是否完全匹配。
[0017]如果T[m-B+1...m]!=p[m-B+1...m],則會將T的當(dāng)前位置向后移動。如果T[m-B+1...m]沒有在匹配模式中出現(xiàn),則可以放心的移動m_B+l個(gè)字符并且繼續(xù)比較T[2m]所在的字符塊和P[m]所在的字符塊;如果T[m_B+l...m]在匹配模式中出現(xiàn)了,則找到T[m-B+1...m]在匹配模式中最后出現(xiàn)的位置是s (通過SHIFT表查到),然后將T的當(dāng)前位置向后移動m-s+1個(gè)位置。
【發(fā)明內(nèi)容】
[0018]本發(fā)明公開了一種分布式環(huán)境下的模式匹配處理器,結(jié)合分布式計(jì)算環(huán)境改進(jìn)WM模式匹配算法,使WM算法具有更強(qiáng)的可擴(kuò)展性和可并行性,從而能充分利用和更好的控制集群中的機(jī)器相互協(xié)作完成模式匹配的任務(wù)。對當(dāng)今大數(shù)據(jù)時(shí)代中過載的信息處理提供了解決方案。
[0019]本發(fā)明是采取以下技術(shù)方案實(shí)現(xiàn)的:一種分布式環(huán)境下的模式匹配處理器,采用的Wu-Manber算法分為預(yù)處理階段和匹配階段,本發(fā)明將針對這兩個(gè)階段分別運(yùn)用Map-Reduce編程模型處理,使Wu-Manber算法適用于分布式環(huán)境。
[0020]本發(fā)明的實(shí)現(xiàn)還包括以下的技術(shù)方案:
在預(yù)處理階段,針對每個(gè)匹配模式計(jì)算出該模式的SHIFT表、HASH表和PREFIX表。多個(gè)Mapper可以同時(shí)對多個(gè)要匹配的模式進(jìn)行預(yù)處理,從而提高了并發(fā)性。[0021]在匹配階段,需要利用兩次Map-Reduce來完成。第一次的map-Reduce是可選的,只有當(dāng)需要匹配的目標(biāo)串長度很長時(shí)才需要運(yùn)行第一次Map-Reduce。此次map-Reduce主要將較長的目標(biāo)串分成多段,通過多個(gè)段同時(shí)進(jìn)行匹配來提高并發(fā)性。
[0022]本發(fā)明的優(yōu)點(diǎn)和有益效果,具體體現(xiàn)在以下幾個(gè)方面:
1.使WM算法具有更強(qiáng)的可擴(kuò)展性和可并行性,從而能充分利用和更好的控制集群中的機(jī)器相互協(xié)作完成模式匹配的任務(wù)。
[0023]2.利用了分布式存儲的優(yōu)點(diǎn)和Map-Reduce編程模型的特征,完成了模式匹配的并行處理,利用多臺計(jì)算機(jī)的存儲能力和計(jì)算能力來換取時(shí)間效率上的提高。
[0024]3.對當(dāng)今大數(shù)據(jù)時(shí)代中過載的信息處理提供了解決方案。
【專利附圖】
【附圖說明】
[0025]圖1是Wu-Manber算法流程;
圖2是Map-Reduce預(yù)處理階段示意圖;
圖3是Map-Reduce匹配階段示意圖。
【具體實(shí)施方式】
[0026]一種分布式環(huán)境下的模式匹配處理器,采用的Wu-Manber算法分為預(yù)處理階段和匹配階段,本發(fā)明將針對這兩個(gè)階段分別運(yùn)用Map-Reduce編程模型處理,使Wu-Manber算法適用于分布式環(huán)境。
[0027]以下結(jié)合說明書附圖2對本發(fā)明中的Map-Reduce預(yù)處理階段做進(jìn)一步詳述:
在預(yù)處理階段,針對每個(gè)匹配模式計(jì)算出該模式的SHIFT表、HASH表和PREFIX表。說明書附圖2中多個(gè)Mapper可以同時(shí)對多個(gè)要匹配的模式進(jìn)行預(yù)處理,從而提高了并發(fā)性。
[0028]Mapper:Mapper的輸入格式為101〈匹配模式P, NULL〉,在Mapper過程中,每個(gè)匹配模式會計(jì)算SHIFT表、HASH表和PREFIX表,經(jīng)過計(jì)算以后各表的KEY為輸出的KEY,但Value中需要加一列表示來區(qū)分此列屬于SHFIT表、HASH表或是PREFIX表中的內(nèi)容。Value中另一類為表中對應(yīng)的KEY的內(nèi)容。即Mapper的輸出格式為102〈各個(gè)表中的Key,標(biāo)識為flag,表中的內(nèi)容Value〉。
[0029]Partition:此次處理的partition主要用戶根據(jù)標(biāo)識位將每一行Mapper的輸出映射到用于處理不同類型表的Reducer。Partition的輸入格式是102〈各個(gè)表中的KEY,標(biāo)識flag,表中的內(nèi)容value〉,輸出格式為103〈Key,Value〉,但是這些輸出會由不同的Reducer函數(shù)進(jìn)行后續(xù)的處理。
[0030]Reducer:Reducer函數(shù)可以通過不同的參數(shù)來處理不同類型的表中的內(nèi)容,最終將SHIFT表、HASH表和PREFIX表的內(nèi)容插入到各自應(yīng)該屬于的表中。Reducer的輸出仍以分布式文件系統(tǒng)中文件的形式保存,在與目標(biāo)串進(jìn)行模式匹配時(shí)會將這些結(jié)果分發(fā)到集群中的機(jī)器上。
[0031]以下結(jié)合說明書附圖3對本發(fā)明中的Map-Reduce匹配階段做進(jìn)一步詳述: 在匹配階段,需要利用兩次Map-Reduce來完成。
[0032]第一次的map-Reduce是可選的,只有當(dāng)需要匹配的目標(biāo)串長度很長時(shí)才需要運(yùn)行第一次Map-Reduce。此次map-Reduce主要將較長的目標(biāo)串分成多段,通過多個(gè)段同時(shí)進(jìn)行匹配來提高并發(fā)性。
[0033]Mapper:輸入格式為〈目標(biāo)串,NULL〉,按固定長度Len將目標(biāo)串分段,每一段作為一個(gè)輸出,輸出格式為〈目標(biāo)串序號,n str (η)>,其中η為段號,表不該記錄為目標(biāo)串的第η段長度為length的字符串,str (η)表示這段字符串的內(nèi)容??紤]到兩段之間可能有匹配的內(nèi)容,所以需要額外的輸出記錄第η段的后m-1個(gè)字符和第n+1段前m_l個(gè)字符組成的字符串。這些記錄的輸出格式為 < 目標(biāo)串序號,n+0.5 str [length-m+2...length]+str [I?..m_l]>。n+0.5 為段號,str [length-m+2...length] +str [1...m-1]為字段內(nèi)容。
[0034]Reducer:此次Map-Reduce不需要reducer函數(shù),只需要Mapper排序后的結(jié)果直接輸出。
[0035]第二次的Map-Reduce是必須的,這也是分布式計(jì)算真正發(fā)揮作用之處,即處理大規(guī)模數(shù)據(jù)的優(yōu)勢所在。過程如說明書附圖3所示。
[0036]Mapper:mapper的輸入格式為201〈目標(biāo)串序號,匹配位置(pos),匹配的模式>,Reducer的主要作用是將同一目標(biāo)串的不同段中匹配出的結(jié)果進(jìn)行聚合,輸出格式為202〈目標(biāo)串序號,匹配集合〉,其中匹配集合中的每個(gè)元素是一個(gè)(匹配位置,匹配的模式)對。
[0037]利用本發(fā)明所述的技術(shù)方案,或本領(lǐng)域的技術(shù)人員在本發(fā)明技術(shù)方案的啟發(fā)下,設(shè)計(jì)出類似的技術(shù)方案,而達(dá)到上述`技術(shù)效果的,均是落入本發(fā)明的保護(hù)范圍。
【權(quán)利要求】
1.一種分布式環(huán)境下的模式匹配處理器,其特征在于:采用的Wu-Manber算法分為預(yù)處理階段和匹配階段,本發(fā)明將針對這兩個(gè)階段分別運(yùn)用Map-Reduce編程模型處理,使Wu-Manber算法適用于分布式環(huán)境。
2.根據(jù)權(quán)利要求1所述的一種分布式環(huán)境下的模式匹配處理器,其特征在于:所述Wu-Manber算法運(yùn)用Map-Reduce編程模型進(jìn)行預(yù)處理,多個(gè)Mapper可以同時(shí)對多個(gè)要匹配的模式進(jìn)行預(yù)處理。
3.根據(jù)權(quán)利要求1所述的一種分布式環(huán)境下的模式匹配處理器,其特征在于:所述Wu-Manber算法運(yùn)用Map-Reduce編程模型進(jìn)行預(yù)處理,Mapper的輸入格式為〈匹配模式P,NULL〉,Mapper的輸出格式為〈各個(gè)表中的Key,標(biāo)識為flag,表中的內(nèi)容Value〉。
4.根據(jù)權(quán)利要求1所述的一種分布式環(huán)境下的模式匹配處理器,其特征在于:所述Wu-Manber算法運(yùn)用Map-Reduce編程模型進(jìn)行預(yù)處理,Partition的輸入格式是〈各個(gè)表中的KEY,標(biāo)識flag,表中的內(nèi)容value〉,輸出格式為〈Key, Value〉。
5.根據(jù)權(quán)利要求1所述的一種分布式環(huán)境下的模式匹配處理器,其特征在于:所述Wu-Manber算法運(yùn)用Map-Reduce編程模型進(jìn)行預(yù)處理Reducer函數(shù)可以通過不同的參數(shù)來處理不同類型的表中的內(nèi)容,最終將SHIFT表、HASH表和PREFIX表的內(nèi)容插入到各自應(yīng)該屬于的表中,Reducer的輸出仍以分布式文件系統(tǒng)中文件的形式保存,在與目標(biāo)串進(jìn)行模式匹配時(shí)會將這些結(jié)果分發(fā)到集群中的機(jī)器上。
6.根據(jù)權(quán)利要求1所述的一種分布式環(huán)境下的模式匹配處理器,其特征在于:所述Wu-Manber算法運(yùn)用Map-Reduce編程模型進(jìn)行匹配,需要利用兩次Map-Reduce來完成,第一次的map-Reduce是可選的,第二次的Map-Reduce是必須的。
7.根據(jù)權(quán)利要求6所述的Wu-Manber算法運(yùn)用Map-Reduce編程模型進(jìn)行匹配,其特征在于:所述第一次的map-Reduce中Mapper的輸入格式為〈目標(biāo)串,NULL〉,按固定長度Len將目標(biāo)串分段,每一段作為一個(gè)輸出,輸出格式為〈目標(biāo)串序號,n str (η) >,其中η為段號,表示該記錄為目標(biāo)串的第η段長度為length的字符串,str (η)表示這段字符串的內(nèi)容。
8.根據(jù)權(quán)利要求6所述的Wu-Manber算法運(yùn)用Map-Reduce編程模型進(jìn)行匹配,其特征在于:所述第一次的map-Reduce中不需要reducer函數(shù),只需要Mapper排序后的結(jié)果直接輸出。
9.根據(jù)權(quán)利要求6所述的Wu-Manber算法運(yùn)用Map-Reduce編程模型進(jìn)行匹配,其特征在于:所述第二次的map-Reduce中mapper的輸入格式為〈目標(biāo)串序號,匹配位置(pos),匹配的模式〉,輸出格式為〈目標(biāo)串序號,匹配集合〉,其中匹配集合中的每個(gè)元素是一個(gè)(匹配位置,匹配的模式)對。
【文檔編號】G06F9/50GK103885834SQ201310433588
【公開日】2014年6月25日 申請日期:2013年9月22日 優(yōu)先權(quán)日:2013年9月22日
【發(fā)明者】牛曉芳 申請人:天津思博科科技發(fā)展有限公司