一種基于map/reduce的實(shí)時(shí)響應(yīng)方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明涉及數(shù)據(jù)處理技術(shù),尤其涉及一種基于map/reduce的實(shí)時(shí)響應(yīng)方法及系統(tǒng)。
【背景技術(shù)】
[0002]并行計(jì)算模型map/reduce出現(xiàn)前,在java編程領(lǐng)域,利用多臺(tái)計(jì)算機(jī)并行處理數(shù)據(jù),讓這些計(jì)算機(jī)之間進(jìn)行協(xié)作非常困難,導(dǎo)致無(wú)法在海量數(shù)據(jù)之間建立關(guān)聯(lián)。
[0003]map/reduce模型提供了對(duì)海量數(shù)據(jù)的處理方法,它的原理是把一個(gè)計(jì)算機(jī)局域網(wǎng)內(nèi)的多臺(tái)只具有普通計(jì)算能力的計(jì)算機(jī)統(tǒng)一管理起來(lái),使得它們能夠并行處理海量數(shù)據(jù),并在處理數(shù)據(jù)的過(guò)程之中,進(jìn)行分工協(xié)作完成一些業(yè)務(wù)邏輯的計(jì)算,以此實(shí)現(xiàn)在海量數(shù)據(jù)之間建立關(guān)聯(lián)或者進(jìn)行統(tǒng)計(jì)分析。
[0004]map/reduce程序主要分成3個(gè)模塊:主控模塊,mapper模塊和reduce模塊。其中,主控模塊負(fù)責(zé)初始化,mapper模塊和reduce模塊負(fù)責(zé)進(jìn)行業(yè)務(wù)邏輯計(jì)算和處理。
[0005]—旦map/reduce運(yùn)算啟動(dòng),服務(wù)請(qǐng)求模塊便將提交到hadoop平臺(tái)的服務(wù)請(qǐng)求消息發(fā)送給主控模塊,主控模塊將服務(wù)請(qǐng)求消息分發(fā)到mapper模塊進(jìn)行處理,mapper模塊處理完畢后通知主控模塊,并退出該次map/reduce運(yùn)算,主控模塊可以再次啟動(dòng)下一個(gè)map/reduce運(yùn)算或者進(jìn)行其他處理。
[000?] map/reduce模型可以調(diào)動(dòng)群集內(nèi)所有的計(jì)算機(jī)進(jìn)行并行計(jì)算和協(xié)作處理數(shù)據(jù),它的強(qiáng)大是顯而易見(jiàn)的。但是,在一般應(yīng)用場(chǎng)景中,map/reduce也有它的不足,例如,map/reduce每次啟動(dòng)運(yùn)行的時(shí)間都需要30到50秒,如果每次啟動(dòng)后,map/reduce都只執(zhí)行很少的時(shí)間,map/reduce的效率就很低。因此,現(xiàn)有的map/reduce程序在用于需要快速響應(yīng)、處理大量小數(shù)據(jù)任務(wù)的工作時(shí),效率較低。
【發(fā)明內(nèi)容】
[0007]有鑒于此,本發(fā)明的目的是提出一種基于map/reduce的實(shí)時(shí)響應(yīng)方法及系統(tǒng),以解決現(xiàn)有的map/reduce程序在用于需要快速響應(yīng)、處理大量小數(shù)據(jù)任務(wù)的工作時(shí)效率較低的問(wèn)題,提高數(shù)據(jù)處理效率。
[0008]為實(shí)現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案:
[0009 ] 一方面,本發(fā)明實(shí)施例提供了一種基于map/reduce的實(shí)時(shí)響應(yīng)方法,包括:
[00?0]主控模塊初始化并啟動(dòng)map/reduce運(yùn)算后,所述主控模塊接收服務(wù)請(qǐng)求模塊發(fā)送的服務(wù)請(qǐng)求消息;
[0011 ]所述主控模塊將所述服務(wù)請(qǐng)求消息分配給空閑mapper模塊;
[0012I所述空閑mapper模塊接收所述服務(wù)請(qǐng)求消息,判斷所述服務(wù)請(qǐng)求消息是否為終止服務(wù)的消息,若否,則處理服務(wù)請(qǐng)求,并將處理結(jié)果作為服務(wù)響應(yīng)消息返回給主控模塊后,等待響應(yīng)下一個(gè)服務(wù)請(qǐng)求消息。
[0013]進(jìn)一步地,還包括:[OOM]若判斷所述服務(wù)請(qǐng)求消息為終止服務(wù)的消息,則所述空閑mapper模塊終止等待響應(yīng)服務(wù)請(qǐng)求消息的操作。
[0015]進(jìn)一步地,在主控模塊初始化并啟動(dòng)map/reduce運(yùn)算之前,還包括:
[0016]所述主控模塊為每個(gè)mapper模塊進(jìn)行編號(hào);
[0017]相應(yīng)地,所述主控模塊將所述服務(wù)請(qǐng)求消息分配給空閑mapper模塊,包括:
[0018]所述主控模塊獲取所有空閑mapper模塊的編號(hào),并選擇其中一個(gè)空閑mapper模塊的編號(hào);
[0019]所述主控模塊將所述服務(wù)請(qǐng)求消息發(fā)送給所選擇的空閑mapper模塊的編號(hào)對(duì)應(yīng)的空閑mapper模塊。
[°02°]進(jìn)一步地,所述主控模塊為每個(gè)mapper模塊進(jìn)行編號(hào)包括:
[0021 ]所述主控模塊獲取預(yù)先創(chuàng)建的一個(gè)多行且每行有一個(gè)數(shù)字的文本文件;?0022] 所述主控模塊向每個(gè)mapper模塊發(fā)送所述文本文件的一行文本,以使每個(gè)mapper模塊得到不同的文本化的數(shù)字,并將所述數(shù)字作為mapper模塊的編號(hào)。
[0023]進(jìn)一步地,在所述空閑mapper模塊響應(yīng)服務(wù)請(qǐng)求時(shí),還包括:
[0024]等待時(shí)間設(shè)置模塊將hadoop系統(tǒng)接收mapper模塊進(jìn)度報(bào)告的等待時(shí)間設(shè)為O,以防止所述空閑mapper模塊被hadoop系統(tǒng)強(qiáng)行終止。
[0025]另一方面,本發(fā)明實(shí)施例提供了一種基于map/reduce的實(shí)時(shí)響應(yīng)系統(tǒng),包括服務(wù)請(qǐng)求模塊、主控模塊和mapper模塊;
[0026]所述服務(wù)請(qǐng)求模塊包括服務(wù)請(qǐng)求消息發(fā)送單元,用于向所述主控模塊發(fā)送服務(wù)請(qǐng)求消息;以及服務(wù)響應(yīng)消息接收單元,用于接收所述主控模塊轉(zhuǎn)發(fā)的服務(wù)響應(yīng)消息;
[0027]所述主控模塊包括map/reduce啟動(dòng)單元,用于初始化并啟動(dòng)map/reduce運(yùn)算;月艮務(wù)請(qǐng)求消息接收單元,用于接收所述服務(wù)請(qǐng)求模塊發(fā)送的服務(wù)請(qǐng)求消息;服務(wù)請(qǐng)求消息分配單元,用于將所述服務(wù)請(qǐng)求消息分配給空閑mapper模塊;以及服務(wù)響應(yīng)消息轉(zhuǎn)發(fā)單元,用于接收空閑mapper模塊返回的服務(wù)響應(yīng)消息,并將所述服務(wù)響應(yīng)消息轉(zhuǎn)發(fā)給所述服務(wù)請(qǐng)求模塊;
[0028]所述mapper模塊包括服務(wù)請(qǐng)求消息第二接收單元,用于接收主控模塊分配的服務(wù)請(qǐng)求消息;服務(wù)請(qǐng)求消息判斷單元,用于判斷所述服務(wù)請(qǐng)求消息是否為終止服務(wù)的消息;月艮務(wù)響應(yīng)消息返回單元,用于若判斷所述服務(wù)請(qǐng)求消息不為終止服務(wù)的消息,則處理服務(wù)請(qǐng)求,并將處理結(jié)果作為服務(wù)響應(yīng)消息返回給主控模塊;以及服務(wù)請(qǐng)求消息等待單元,用于在將所述服務(wù)響應(yīng)消息返回給主控模塊之后,等待響應(yīng)下一個(gè)服務(wù)請(qǐng)求消息。
[0029]進(jìn)一步地,所述mapper模塊還包括:
[0030]響應(yīng)終止單元,用于若判斷所述服務(wù)請(qǐng)求消息為終止服務(wù)的消息,則終止所述空閑mapper模塊等待響應(yīng)服務(wù)請(qǐng)求消息的操作。
[0031]進(jìn)一步地,所述主控模塊還包括:
[0032]mapper模塊編號(hào)單元,用于在主控模塊初始化并啟動(dòng)map/reduce運(yùn)算之前,為每個(gè)mapper模塊進(jìn)行編號(hào);
[0033]相應(yīng)地,所述服務(wù)請(qǐng)求消息分配單元具體用于:
[0034]獲取所有空閑mapper模塊的編號(hào),并選擇其中一個(gè)空閑mapper模塊的編號(hào);
[0035]將所述服務(wù)請(qǐng)求消息發(fā)送給所選擇的空閑mapper模塊的編號(hào)對(duì)應(yīng)的空閑mapper模塊。
[0036]進(jìn)一步地,所述mapper模塊編號(hào)單元具體用于:
[0037]獲取預(yù)先創(chuàng)建的一個(gè)多行且每行有一個(gè)數(shù)字的文本文件;
[0038]向每個(gè)mapper模塊發(fā)送所述文本文件的一行文本,以使每個(gè)mapper模塊得到不同的文本化的數(shù)字,并將所述數(shù)字作為mapper模塊的編號(hào)。
[0039]進(jìn)一步地,所述系統(tǒng)還包括:
[0040]等待時(shí)間設(shè)置模塊,用于在所述空閑mapper模塊處理服務(wù)請(qǐng)求之前,將hadoop系統(tǒng)接收mapper模塊進(jìn)度報(bào)告的等待時(shí)間設(shè)為O,以防止所述空閑mapper模塊被hadoop系統(tǒng)強(qiáng)行終止。
[0041 ]本發(fā)明的有益效果是:本發(fā)明提供的一種基于map/reduce的實(shí)時(shí)響應(yīng)方法及系統(tǒng),使用map/reduce程序處理大量小數(shù)據(jù)任務(wù)的工作時(shí),map/reduce運(yùn)算一次啟動(dòng)后,mapper模塊便會(huì)一直等待響應(yīng)服務(wù)請(qǐng)求消息,當(dāng)mapper模塊接收到服務(wù)請(qǐng)求消息,判斷服務(wù)請(qǐng)求消息不為終止服務(wù)的消息時(shí),對(duì)服務(wù)請(qǐng)求進(jìn)行處理,并將處理結(jié)果作為服務(wù)響應(yīng)消息返回給主控制模塊,之后,mapper模塊繼續(xù)等待響應(yīng)服務(wù)請(qǐng)求消息,一旦接收到服務(wù)請(qǐng)求消息,便立即響應(yīng)該服務(wù)請(qǐng)求,而不必再次開(kāi)啟map/reduce運(yùn)算,因而減少了響應(yīng)時(shí)間,提高了數(shù)據(jù)處理的效率。
【附圖說(shuō)明】
[0042]下面將通過(guò)參照附圖詳細(xì)