一種基于流式計算引擎的實時數(shù)據(jù)處理方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機(jī)技術(shù)領(lǐng)域,特別涉及一種基于流式計算引擎的實時數(shù)據(jù)處理方法及裝置。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)的迅速發(fā)展,企業(yè)日常運(yùn)營的數(shù)據(jù)已經(jīng)達(dá)到了 TB級別。其中,數(shù)據(jù)來源囊括了互聯(lián)網(wǎng)裝置可以捕獲的任何類型的數(shù)據(jù),例如,網(wǎng)站、社交媒體、交易型商業(yè)數(shù)據(jù)以及其它商業(yè)環(huán)境中創(chuàng)建的數(shù)據(jù)等。數(shù)據(jù)量的增長,使得實時處理成為當(dāng)前需要面對的首要挑戰(zhàn)。
[0003]目前,可以采用數(shù)據(jù)集群的處理方式,其中,數(shù)據(jù)處理主要以MapRedUCe(編程模型)為主,通過調(diào)用MAP函數(shù)和Reduce函數(shù)對數(shù)據(jù)進(jìn)行處理。然而,MapReduce對數(shù)據(jù)進(jìn)行處理時的實時性較差。因此,急需提出一種能夠?qū)Υ髷?shù)據(jù)量進(jìn)行實時處理的方法。
【發(fā)明內(nèi)容】
[0004]有鑒于此,本發(fā)明提供一種基于流式計算引擎的實時數(shù)據(jù)處理方法及裝置,以解決現(xiàn)有技術(shù)方案進(jìn)行數(shù)據(jù)處理時實時性較差的問題。
[0005]本發(fā)明提供了一種基于流式計算引擎的實時數(shù)據(jù)處理方法,包括:
[0006]創(chuàng)建Storm的消息隊列;
[0007]將數(shù)據(jù)存入數(shù)據(jù)庫中,并備份至所述Storm的消息隊列;
[0008]Storm中的Spout實時監(jiān)聽所述消息隊列,在監(jiān)聽到有數(shù)據(jù)被存入所述Storm的消息隊列時,拉取所述Storm的消息隊列中當(dāng)前被存入的數(shù)據(jù),并將拉取的數(shù)據(jù)發(fā)送給Storm中的Bolt ;
[0009]Bolt根據(jù)預(yù)先獲取的邏輯規(guī)則,對所述拉取的數(shù)據(jù)進(jìn)行邏輯處理,以將邏輯處理后的數(shù)據(jù)更新到所述數(shù)據(jù)庫中。
[0010]優(yōu)選地,在所述創(chuàng)建Storm的消息隊列之后,進(jìn)一步包括:
[0011]根據(jù)預(yù)先設(shè)定的類型,指定所述消息隊列中的標(biāo)簽;
[0012]根據(jù)指定的標(biāo)簽區(qū)分所述消息隊列中不同類型的數(shù)據(jù)。
[0013]優(yōu)選地,在所述將拉取的數(shù)據(jù)發(fā)送給Storm中的Bolt之后,進(jìn)一步包括:
[0014]Spout根據(jù)預(yù)先設(shè)置的過濾規(guī)則對所述拉取的數(shù)據(jù)進(jìn)行過濾。
[0015]優(yōu)選地,進(jìn)一步包括:
[0016]創(chuàng)建sqoop定時任務(wù),在每隔所述sqoop定時任務(wù)設(shè)定的時間段時向數(shù)據(jù)源抽取數(shù)據(jù);
[0017]由sqoop定時任務(wù)執(zhí)行所述的將數(shù)據(jù)存入數(shù)據(jù)庫中,并備份至所述Storm的消息隊列。
[0018]優(yōu)選地,進(jìn)一步包括:
[0019]Spout確定所述Bolt是否成功對所述拉取的數(shù)據(jù)進(jìn)行邏輯處理,在確定結(jié)果為Bolt成功對所述拉取的數(shù)據(jù)進(jìn)行邏輯處理時,Spout將所述拉取的數(shù)據(jù)從所述Storm的消息隊列中移除;在所述Bolt未成功對所述拉取的數(shù)據(jù)進(jìn)行邏輯處理時,分析未成功的原因,在分析結(jié)果為所述拉取的數(shù)據(jù)為臟數(shù)據(jù)時,Spout將所述拉取的數(shù)據(jù)從所述Storm的消息隊列中移除,在分析結(jié)果為數(shù)據(jù)處理超時時,Spout將所述拉取的數(shù)據(jù)重新發(fā)送給Bolt。
[0020]本發(fā)明還提供了一種基于流式計算引擎的實時數(shù)據(jù)處理裝置,包括:
[0021]創(chuàng)建單元,用于創(chuàng)建Storm的消息隊列;
[0022]數(shù)據(jù)備份單元,用于將數(shù)據(jù)存入數(shù)據(jù)庫中,并備份至所述Storm的消息隊列;
[0023]Spout單元,位于Storm中,用于實時監(jiān)聽所述消息隊列,在監(jiān)聽到有數(shù)據(jù)被存入所述Storm的消息隊列時,拉取所述Storm的消息隊列中當(dāng)前被存入的數(shù)據(jù),并將拉取的數(shù)據(jù)發(fā)送給Storm中的Bolt單元;
[0024]Bolt單元,位于Storm中,用于根據(jù)預(yù)先獲取的邏輯規(guī)則,對所述拉取的數(shù)據(jù)進(jìn)行邏輯處理,以將邏輯處理后的數(shù)據(jù)更新到所述數(shù)據(jù)庫中。
[0025]優(yōu)選地,進(jìn)一步包括:
[0026]指定區(qū)分單元,用于根據(jù)預(yù)先設(shè)定的類型,指定所述消息隊列中的標(biāo)簽;根據(jù)指定的標(biāo)簽區(qū)分所述消息隊列中不同類型的數(shù)據(jù)。
[0027]優(yōu)選地,Spout單元,用于根據(jù)預(yù)先設(shè)置的過濾規(guī)則對所述拉取的數(shù)據(jù)進(jìn)行過濾。
[0028]優(yōu)選地,
[0029]所述創(chuàng)建單元,用于創(chuàng)建sqoop定時任務(wù);
[0030]進(jìn)一步包括:sqoop定時任務(wù),用于在每隔所述sqoop定時任務(wù)設(shè)定的時間段時向數(shù)據(jù)源抽取數(shù)據(jù);由sqoop定時任務(wù)執(zhí)行所述的將數(shù)據(jù)存入數(shù)據(jù)庫中,并備份至所述Storm的消息隊列。
[0031]優(yōu)選地,
[0032]Spout單元,用于確定所述Bolt單元是否成功對所述拉取的數(shù)據(jù)進(jìn)行邏輯處理,在確定結(jié)果為Bolt單元成功對所述拉取的數(shù)據(jù)進(jìn)行邏輯處理時,Spout將所述拉取的數(shù)據(jù)從所述Storm的消息隊列中移除;在所述Bolt單元未成功對所述拉取的數(shù)據(jù)進(jìn)行邏輯處理時,分析未成功的原因,在分析結(jié)果為所述拉取的數(shù)據(jù)為臟數(shù)據(jù)時,Spout單元將所述拉取的數(shù)據(jù)從所述Storm的消息隊列中移除,在分析結(jié)果為數(shù)據(jù)處理超時時,Spout單元將所述拉取的數(shù)據(jù)重新發(fā)送給Bolt單元。
[0033]本發(fā)明實施例提供了一種基于流式計算引擎的實時數(shù)據(jù)處理方法及裝置,通過創(chuàng)建Storm的消息隊列,利用Storm中的Spout對Storm的消息隊列進(jìn)行實時監(jiān)聽,以使得Storm的消息隊列中有數(shù)據(jù)存入時,Spout能夠?qū)崟r對監(jiān)聽到的該數(shù)據(jù)進(jìn)行拉取,進(jìn)而對數(shù)據(jù)進(jìn)行實時處理,從而實現(xiàn)了數(shù)據(jù)處理的實時性。另外,不單單將數(shù)據(jù)存入數(shù)據(jù)庫,還對數(shù)據(jù)實現(xiàn)了備份,當(dāng)數(shù)據(jù)被處理之后,還可以將處理后的數(shù)據(jù)更新到數(shù)據(jù)庫中,從而使得數(shù)據(jù)庫中的數(shù)據(jù)更新。
【附圖說明】
[0034]圖1是本發(fā)明實施例提供的方法流程圖;
[0035]圖2是本發(fā)明另一實施例提供的方法流程圖;
[0036]圖3是本發(fā)明實施例提供的裝置所在設(shè)備的硬件架構(gòu)圖;
[0037]圖4是本發(fā)明實施例提供的裝置結(jié)構(gòu)示意圖;
[0038]圖5是本發(fā)明另一實施例提供的裝置結(jié)構(gòu)示意圖。
【具體實施方式】
[0039]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述。顯然,所描述的實施例僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
[0040]如圖1所示,本發(fā)明實施例提供了一種基于流式計算引擎的實時數(shù)據(jù)處理方法,該方法可以包括以下步驟:
[0041]步驟101:創(chuàng)建Storm的消息隊列。
[0042]步驟102:將數(shù)據(jù)存入數(shù)據(jù)庫中,并備份至Storm的消息隊列。
[0043]步驟103:Storm中的Spout實時監(jiān)聽消息隊列,在監(jiān)聽到有數(shù)據(jù)被存入Storm的消息隊列時,拉取Storm的消息隊列中當(dāng)前被存入的數(shù)據(jù),并將拉取的數(shù)據(jù)發(fā)送給Storm中的 Bolt0
[0044]步驟104:Bolt根據(jù)預(yù)先獲取的邏輯規(guī)則,對拉取的數(shù)據(jù)進(jìn)行邏輯處理,以將邏輯處理后的數(shù)據(jù)更新到數(shù)據(jù)庫中。
[0045]根據(jù)上述方案,通過創(chuàng)建Storm的消息隊列,利用Storm中的Spout對Storm的消息隊列進(jìn)行實時監(jiān)聽,以使得Storm的消息隊列中有數(shù)據(jù)存入時,Spout能夠?qū)崟r對監(jiān)聽到的該數(shù)據(jù)進(jìn)行拉取,進(jìn)而對數(shù)據(jù)進(jìn)行實時處理,從而實現(xiàn)了數(shù)據(jù)處理的實時性。另外,不單單將數(shù)據(jù)存入數(shù)據(jù)庫,還對數(shù)據(jù)實現(xiàn)了備份,當(dāng)數(shù)據(jù)被處理之后,還可以將處理后的數(shù)據(jù)更新到數(shù)據(jù)庫中,從而使得數(shù)據(jù)庫中的數(shù)據(jù)更新。
[0046]在本實施例中,可以根據(jù)不同的類型創(chuàng)建多個Storm的消息隊列。考慮到某些類型的數(shù)據(jù)所占用的空間較少,如果為該類型的數(shù)據(jù)創(chuàng)建一個Storm的消息隊列,浪費(fèi)系統(tǒng)資源,因此,可以根據(jù)預(yù)先設(shè)定的類型,在創(chuàng)建的某個Storm的消息隊列中指定標(biāo)簽,根據(jù)該指定的標(biāo)簽區(qū)分消息隊列中不同類型的數(shù)