本發(fā)明涉及大數(shù)據(jù)領(lǐng)域,尤其涉及一種數(shù)據(jù)處理方法、系統(tǒng)、接口端及服務(wù)器。
背景技術(shù):
apachestorm是一個(gè)免費(fèi)開源分布式、容錯(cuò)實(shí)時(shí)計(jì)算框架。storm可以方便地在一個(gè)計(jì)算機(jī)集群中編寫和擴(kuò)展復(fù)雜的實(shí)時(shí)計(jì)算,同時(shí)保證每個(gè)消息都會(huì)得到實(shí)時(shí)可靠地處理。
當(dāng)前大多數(shù)基于storm框架的實(shí)時(shí)流計(jì)算應(yīng)用,都需要熟悉storm框架的開發(fā)人員編寫相應(yīng)的輸入組件(spout)和處理組件(blot),以構(gòu)建與業(yè)務(wù)邏輯對(duì)應(yīng)的拓?fù)?topology),并提交到storm集群上執(zhí)行。對(duì)于沒有storm框架開發(fā)經(jīng)驗(yàn)的人群來說是不能構(gòu)建topology,并提交到storm集群上執(zhí)行的,這樣就需要開發(fā)人員花大量的時(shí)間去編寫spout、blot等相關(guān)組件的代碼,如此,大大增加了基于storm框架的實(shí)時(shí)數(shù)據(jù)處理應(yīng)用的開發(fā)周期,降低了開發(fā)的效率。
技術(shù)實(shí)現(xiàn)要素:
為解決現(xiàn)有存在的技術(shù)問題,本發(fā)明實(shí)施例提供一種數(shù)據(jù)處理方法、系統(tǒng)、接口端及服務(wù)器。
為達(dá)到上述目的,本發(fā)明實(shí)施例的技術(shù)方案是這樣實(shí)現(xiàn)的:
本發(fā)明實(shí)施例提供了一種數(shù)據(jù)處理方法,應(yīng)用于接口端,包括:
通過與服務(wù)器之間的接口獲取設(shè)置界面的功能數(shù)據(jù),并依據(jù)所述功能數(shù)據(jù)在操作人員側(cè)終端加載所述設(shè)置界面;其中,構(gòu)建業(yè)務(wù)邏輯對(duì)應(yīng)的topology所需的候選輸入組件及處理組件可視地顯示在所述設(shè)置界面上;
響應(yīng)于所述操作人員對(duì)所述候選輸入組件及處理組件的選擇操作,在所述 設(shè)置界面的相應(yīng)位置處顯示選擇的組件;
響應(yīng)于所述操作人員對(duì)選擇的各組件的連接操作及對(duì)應(yīng)的分組方式,在所述設(shè)置界面上可視地顯示選擇的各組件的連接方式及對(duì)應(yīng)的分組方式,構(gòu)建成可視的業(yè)務(wù)邏輯對(duì)應(yīng)的topology對(duì)象;
響應(yīng)于所述操作人員對(duì)構(gòu)建的topology對(duì)象的提交操作,通過所述接口提交所述構(gòu)建的topology對(duì)象至所述服務(wù)器。
上述方案中,所述通過所述接口提交所述構(gòu)建的topology對(duì)象至所述服務(wù)器,包括:
將構(gòu)建的可視的業(yè)務(wù)邏輯對(duì)應(yīng)的topology對(duì)象,解析成所述服務(wù)器能識(shí)別的topology對(duì)象,并上傳至所述服務(wù)器。
上述方案中,提交所述構(gòu)建的topology對(duì)象后,所述方法還包括:
通過所述接口獲取所述構(gòu)建的topology對(duì)象對(duì)應(yīng)的topology和storm集群的監(jiān)控信息;
在所述設(shè)置界面上顯示獲取的監(jiān)控信息;所述監(jiān)控信息包括:匯總的集群信息、匯總的topology信息、匯總的監(jiān)控器supervisor信息、nimbus配置信息、匯總的運(yùn)行topology信息、匯總的停止topology信息。
本發(fā)明實(shí)施例還提供了一種數(shù)據(jù)處理方法,應(yīng)用于服務(wù)器,所包括:
通過與接口端之間的接口向所述接口端提供加載設(shè)置界面所需的功能數(shù)據(jù);
接收所述接口端提交的第一topology對(duì)象,并根據(jù)接收的第一topology對(duì)象生成第二topology對(duì)象;所述第一topology對(duì)象為操作人員可視化構(gòu)建的業(yè)務(wù)邏輯對(duì)應(yīng)的topology對(duì)象;所述第二topology對(duì)象為storm集群中實(shí)際運(yùn)行的topology對(duì)象;
在storm集群中執(zhí)行所述第二topology對(duì)象。
上述方案中,所述根據(jù)接收的第一topology對(duì)象生成第二topology對(duì)象,包括:
通過裝飾器對(duì)將所述第一topology對(duì)象中的各輸入組件及處理組件對(duì)象進(jìn) 行裝飾處理,形成真實(shí)的輸入組件及處理組件;
通過選擇器將所述第一topology對(duì)象中的各連接對(duì)象進(jìn)行分組處理,形成真實(shí)的連接方式;
利用形成的真實(shí)的輸入組件及處理組件及連接方式,生成所述第二topology對(duì)象。
上述方案中,在storm集群中執(zhí)行所述第二topology對(duì)象后,所述方法還包括:
通過所述接口向所述接口端提供所述第二topology對(duì)象對(duì)應(yīng)的topology和storm集群的監(jiān)控信息;
所述監(jiān)控信息包括:匯總的集群信息、匯總的topology信息、匯總的supervisor信息、nimbus配置信息、匯總的運(yùn)行topology信息、匯總的停止topology信息。
本發(fā)明實(shí)施例又提供了一種接口端,包括:界面設(shè)置單元、第一topology生成單元及提交單元;其中,
所述界面設(shè)置單元,用于通過與服務(wù)器之間的接口獲取設(shè)置界面的功能數(shù)據(jù),并依據(jù)所述功能數(shù)據(jù)在操作人員側(cè)終端加載所述設(shè)置界面;其中,構(gòu)建業(yè)務(wù)邏輯對(duì)應(yīng)的topology所需的候選輸入組件及處理組件可視地顯示在所述設(shè)置界面上;
所述第一topology生成單元,用于響應(yīng)于所述操作人員對(duì)所述候選輸入組件及處理組件的選擇操作,在所述設(shè)置界面的相應(yīng)位置處顯示選擇的組件;以及響應(yīng)于所述操作人員對(duì)選擇的各組件的連接操作及對(duì)應(yīng)的分組方式,在所述設(shè)置界面上可視地顯示選擇的各組件的連接方式及對(duì)應(yīng)的分組方式,構(gòu)建成可視的業(yè)務(wù)邏輯對(duì)應(yīng)的topology對(duì)象;
所述提交單元,用于響應(yīng)于所述操作人員對(duì)構(gòu)建的topology對(duì)象的提交操作,通過所述接口提交所述構(gòu)建的topology對(duì)象至所述服務(wù)器。
上述方案中,所述接口端還包括:監(jiān)控單元,用于通過所述接口獲取所述構(gòu)建的topology對(duì)象對(duì)應(yīng)的topology和storm集群的監(jiān)控信息;并在所述設(shè)置 界面上顯示獲取的監(jiān)控信息;所述監(jiān)控信息包括:匯總的topology信息、匯總的監(jiān)控器supervisor信息、nimbus配置信息、匯總的運(yùn)行topology信息、匯總的停止topology信息。
本發(fā)明實(shí)施例還提供了一種服務(wù)器,包括:數(shù)據(jù)提供單元、第二topology生成單元以及執(zhí)行單元;其中,
所述數(shù)據(jù)提供單元,用于向接口端提供加載設(shè)置界面所需的功能數(shù)據(jù);
所述第二topology生成單元,用于接收所述接口端提交的第一topology對(duì)象,并根據(jù)接收的第一topology對(duì)象生成第二topology對(duì)象;所述第一topology對(duì)象為操作人員可視化構(gòu)建的業(yè)務(wù)邏輯對(duì)應(yīng)的topology對(duì)象;所述第二topology對(duì)象為storm集群中實(shí)際運(yùn)行的topology對(duì)象;
所述執(zhí)行單元,用于在storm集群中執(zhí)行所述第二topology對(duì)象。
上述方案中,所述服務(wù)器還包括:監(jiān)控信息提供單元,用于在storm集群中執(zhí)行所述第二topology對(duì)象后,通過所述接口向所述接口端提供所述第二topology對(duì)象對(duì)應(yīng)的topology和storm集群的監(jiān)控信息;所述監(jiān)控信息包括:匯總的topology信息、匯總的監(jiān)控器supervisor信息、nimbus配置信息、匯總的運(yùn)行topology信息、匯總的停止topology信息。
本發(fā)明實(shí)施例又提供了一種數(shù)據(jù)處理系統(tǒng),包括:接口端及服務(wù)器;其中,
所述接口端,用于通過與所述服務(wù)器之間的接口獲取設(shè)置界面的功能數(shù)據(jù),并依據(jù)所述功能數(shù)據(jù)在操作人員側(cè)終端加載所述設(shè)置界面;其中,構(gòu)建業(yè)務(wù)邏輯對(duì)應(yīng)的topology所需的候選輸入組件及處理組件可視地顯示在所述設(shè)置界面上;響應(yīng)于所述操作人員對(duì)所述候選輸入組件及處理組件的選擇操作,在所述設(shè)置界面的相應(yīng)位置處顯示選擇的組件;響應(yīng)于所述操作人員對(duì)選擇的各組件的連接操作,在所述設(shè)置界面上可視地顯示選擇的各組件的連接方式,構(gòu)建成可視的業(yè)務(wù)邏輯對(duì)應(yīng)的topology對(duì)象;以及響應(yīng)于所述操作人員對(duì)構(gòu)建的topology對(duì)象的提交操作,通過所述接口提交所述構(gòu)建的topology對(duì)象至所述服務(wù)器;
所述服務(wù)器,用于向所述接口端提供加載設(shè)置界面所需的功能數(shù)據(jù);接收 所述接口端提交的第一topology對(duì)象,并根據(jù)接收的第一topology對(duì)象生成第二topology對(duì)象;所述第一topology對(duì)象為操作人員可視化構(gòu)建的業(yè)務(wù)邏輯對(duì)應(yīng)的topology對(duì)象;所述第二topology對(duì)象為storm集群中實(shí)際運(yùn)行的topology對(duì)象;以及在storm集群中執(zhí)行所述第二topology對(duì)象。
本發(fā)明實(shí)施例提供的數(shù)據(jù)處理方法、系統(tǒng)、接口端及服務(wù)器,接口端通過與服務(wù)器之間的接口獲取設(shè)置界面的功能數(shù)據(jù),并依據(jù)所述功能數(shù)據(jù)在操作人員側(cè)終端加載所述設(shè)置界面;其中,構(gòu)建業(yè)務(wù)邏輯對(duì)應(yīng)的topology所需的候選輸入組件及處理組件可視地顯示在所述設(shè)置界面上;響應(yīng)于所述操作人員對(duì)所述候選輸入組件及處理組件的選擇操作,在所述設(shè)置界面的相應(yīng)位置處顯示選擇的組件;響應(yīng)于所述操作人員對(duì)選擇的各組件的連接操作及對(duì)應(yīng)的分組方式,在所述設(shè)置界面上可視地顯示選擇的各組件的連接方式及對(duì)應(yīng)的分組方式,構(gòu)建成可視的業(yè)務(wù)邏輯對(duì)應(yīng)的topology對(duì)象;以及響應(yīng)于所述操作人員對(duì)構(gòu)建的topology對(duì)象的提交操作,通過所述接口提交所述構(gòu)建的topology對(duì)象至所述服務(wù)器;所述服務(wù)器根據(jù)接收的第一topology對(duì)象生成第二topology對(duì)象;所述第一topology對(duì)象為操作人員可視化構(gòu)建的業(yè)務(wù)邏輯對(duì)應(yīng)的topology對(duì)象;所述第二topology對(duì)象為storm集群中實(shí)際運(yùn)行的topology對(duì)象;并在storm集群中執(zhí)行所述第二topology對(duì)象,通過組建的拖拽和連接可視地形成topology,使得操作人員可以快速直觀地構(gòu)建與自己業(yè)務(wù)相關(guān)的topology并提交執(zhí)行,如此,能大大縮短基于storm框架的實(shí)時(shí)數(shù)據(jù)處理的開發(fā)周期,大大提高了開發(fā)的效率。
附圖說明
在附圖(其不一定是按比例繪制的)中,相似的附圖標(biāo)記可在不同的視圖中描述相似的部件。具有不同字母后綴的相似附圖標(biāo)記可表示相似部件的不同示例。附圖以示例而非限制的方式大體示出了本文中所討論的各個(gè)實(shí)施例。
圖1為本發(fā)明實(shí)施例一接口端側(cè)的數(shù)據(jù)處理方法流程示意圖;
圖2為本發(fā)明實(shí)施例一服務(wù)器側(cè)的數(shù)據(jù)處理方法流程示意圖;
圖3為本發(fā)明實(shí)施例一數(shù)據(jù)處理方法流程示意圖;
圖4為本發(fā)明實(shí)施例二接口端結(jié)構(gòu)示意圖;
圖5為本發(fā)明實(shí)施例二服務(wù)器結(jié)構(gòu)示意圖;
圖6為本發(fā)明實(shí)施例二數(shù)據(jù)處理系統(tǒng)結(jié)構(gòu)示意圖;
圖7為本發(fā)明實(shí)施例三數(shù)據(jù)處理系統(tǒng)框架示意圖;
圖8為本發(fā)明實(shí)施例三生成組件對(duì)象的過程示意圖;
圖9為本發(fā)明實(shí)施例三構(gòu)建topology并提交至storm集群的過程示意圖;
圖10為本發(fā)明實(shí)施例三ui解析器雙向解析的過程示意圖;
圖11為本發(fā)明實(shí)施例三生成storm集群中實(shí)際運(yùn)行的topology對(duì)象,并在storm集群中執(zhí)行生成的topology對(duì)象的過程示意圖。
具體實(shí)施方式
下面結(jié)合附圖及實(shí)施例對(duì)本發(fā)明再作進(jìn)一步詳細(xì)的描述。
描述本發(fā)明實(shí)施例之前,先了解一下目前基于storm框架的實(shí)時(shí)數(shù)據(jù)處理應(yīng)用的開發(fā)過程及存在的技術(shù)問題。
當(dāng)前大多數(shù)基于storm框架的實(shí)時(shí)流計(jì)算應(yīng)用,都需要熟悉storm框架的流計(jì)算開發(fā)人員編寫相應(yīng)的spout和處blot)以構(gòu)建與業(yè)務(wù)邏輯對(duì)應(yīng)的topology,并提交到storm集群上執(zhí)行。這樣一來,對(duì)于沒有storm框架開發(fā)經(jīng)驗(yàn)的人群(比如數(shù)據(jù)科學(xué)家、分析師和一般的操作人員等)來說是不能構(gòu)建topology,并提交到storm集群上執(zhí)行的,這樣就需要開發(fā)人員花大量的時(shí)間去編寫spout、blot等相關(guān)組件的代碼,而數(shù)據(jù)處理本身的業(yè)務(wù)邏輯考慮的時(shí)間就會(huì)大大減少。然而,對(duì)于一個(gè)業(yè)務(wù)來說,業(yè)務(wù)邏輯自身的開發(fā)是非常重要的。如此,就會(huì)大大基于storm框架的實(shí)時(shí)數(shù)據(jù)處理應(yīng)用的開發(fā)周期,降低了開發(fā)的效率。
另外,目前storm官方提供的storm用戶界面(ui,userinterface)僅僅對(duì)storm集群狀態(tài)、topology狀態(tài)(包括spout和blot狀態(tài))以及監(jiān)控器(supervisor)節(jié)點(diǎn)狀態(tài)實(shí)行監(jiān)控。缺少一套完整的平臺(tái)來管理包括topology 的構(gòu)建和提交,storm集群的注冊(cè)和狀態(tài)監(jiān)控等方面。
基于此,在本發(fā)明的各種實(shí)施例中:接口端通過與所述服務(wù)器之間的接口獲取設(shè)置界面的功能數(shù)據(jù),并依據(jù)所述功能數(shù)據(jù)在操作人員側(cè)終端加載所述設(shè)置界面;其中,構(gòu)建業(yè)務(wù)邏輯對(duì)應(yīng)的topology所需的候選輸入組件及處理組件可視地顯示在所述設(shè)置界面上;響應(yīng)于所述操作人員對(duì)所述候選輸入組件及處理組件的選擇操作,在所述設(shè)置界面的相應(yīng)位置處顯示選擇的組件;響應(yīng)于所述操作人員對(duì)選擇的各組件的連接操作,在所述設(shè)置界面上可視地顯示選擇的各組件的連接方式,構(gòu)建成可視的業(yè)務(wù)邏輯對(duì)應(yīng)的topology對(duì)象;以及響應(yīng)于所述操作人員對(duì)構(gòu)建的topology對(duì)象的提交操作,通過所述接口提交所述構(gòu)建的topology對(duì)象至所述服務(wù)器;所述服務(wù)器向接口端提供加載設(shè)置界面所需的功能數(shù)據(jù);接收所述接口端提交的第一topology對(duì)象,并根據(jù)接收的第一topology對(duì)象生成第二topology對(duì)象;所述第一topology對(duì)象為操作人員可視化構(gòu)建的業(yè)務(wù)邏輯對(duì)應(yīng)的topology對(duì)象;所述第二topology對(duì)象為storm集群中實(shí)際運(yùn)行的topology對(duì)象;以及在storm集群中執(zhí)行所述第二topology對(duì)象。
實(shí)施例一
本實(shí)施例提供一種數(shù)據(jù)處理方法,應(yīng)用于接口端。如圖1所示,該方法包括以下步驟:
步驟100:所述接口端通過與服務(wù)器之間的接口獲取設(shè)置界面的功能數(shù)據(jù),并依據(jù)所述功能數(shù)據(jù)在操作人員側(cè)終端加載所述設(shè)置界面;
其中,構(gòu)建業(yè)務(wù)邏輯對(duì)應(yīng)的topology所需的候選輸入組件及處理組件可視地顯示在所述設(shè)置界面上。
實(shí)際應(yīng)用時(shí),所述所需的候選輸入組件及處理組件按照類型或功能排序后可視地顯示在所述設(shè)置界面上。
在一實(shí)施例中,所述設(shè)置界面可以為web界面。
所述接口可以為rest應(yīng)用程序接口(api,applicationprogramminginterface)。
步驟101:響應(yīng)于所述操作人員對(duì)所述候選spout及blot的選擇操作,在所述設(shè)置界面的相應(yīng)位置處顯示選擇的組件;
步驟102:響應(yīng)于所述操作人員對(duì)選擇的各組件的連接操作及對(duì)應(yīng)的分組方式,在所述設(shè)置界面上可視地顯示選擇的各組件的連接方式及對(duì)應(yīng)的分組方式,構(gòu)建成可視的業(yè)務(wù)邏輯對(duì)應(yīng)的topology對(duì)象;
這里,實(shí)際應(yīng)用時(shí),根據(jù)業(yè)務(wù)邏輯,所述操作人員選擇相關(guān)的spout和blot,并被拖拽到所述相應(yīng)位置,選擇相應(yīng)的連接線進(jìn)行連接,并選擇對(duì)應(yīng)的分組方式;所述接口端收到所述操作人員的這些操作(選擇操作、連接操作)后,在設(shè)置界面的所述相應(yīng)位置處顯示相關(guān)的spout和blot,并顯示各組件的連接方式及對(duì)應(yīng)的分組方式,從而方便所述操作人員可視化地進(jìn)行topology的構(gòu)建。
其中,所述分組方式可以是隨機(jī)(shuffle)分組、字段(field)分組等。
步驟103:響應(yīng)于所述操作人員對(duì)構(gòu)建的topology對(duì)象的提交操作,通過所述接口提交所述構(gòu)建的topology對(duì)象至所述服務(wù)器。
具體地,將構(gòu)建的可視的業(yè)務(wù)邏輯對(duì)應(yīng)的topology對(duì)象,解析成所述服務(wù)器能識(shí)別的topology對(duì)象,并上傳至所述服務(wù)器。
換句話說,對(duì)構(gòu)建的可視的業(yè)務(wù)邏輯對(duì)應(yīng)的topology對(duì)象進(jìn)行數(shù)據(jù)格式的轉(zhuǎn)換,以便所述服務(wù)器能夠識(shí)別。實(shí)際應(yīng)用時(shí),所述接口端可以將構(gòu)建的topology對(duì)象中的組件信息、連接方式、分組方式解析成一個(gè)topologyconfig對(duì)象的json(javascriptobjectnotation)串,并發(fā)送給服務(wù)器。
這里,實(shí)際應(yīng)用時(shí),通過所述接口提交所述構(gòu)建的topology對(duì)象至所述服務(wù)器之前,該方法還可以包括:
所述接口端對(duì)所述操作人員構(gòu)建的可視的topology對(duì)象進(jìn)行合法性驗(yàn)證;
驗(yàn)證通過后,再通過所述接口提交所述構(gòu)建的topology對(duì)象至所述服務(wù)器。
相應(yīng)地,向所述服務(wù)器提交的構(gòu)建的topology對(duì)象為合法性驗(yàn)證通過的topology對(duì)象。
其中,所述合法性驗(yàn)證可以包括:spout的輸出只能連接blot的輸入、相關(guān)屬性值的合法性驗(yàn)證等。
在提交所述構(gòu)建的topology對(duì)象至所述服務(wù)器的過程中,所述接口端還可以向所述操作人員提供提交集群失敗的錯(cuò)誤信息和錯(cuò)誤定位等告警功能。
換句話說,所述接口端可以向所述操作人員提供一系列的異常檢測(cè)和異常告警功能。
在一實(shí)施例中,提交所述構(gòu)建的topology對(duì)象后,該方法還包括:
通過所述接口獲取所述構(gòu)建的topology對(duì)象對(duì)應(yīng)的topology和storm集群的監(jiān)控信息;
在所述設(shè)置界面上顯示獲取的監(jiān)控信息;所述監(jiān)控信息包括:匯總的集群信息、匯總的topology信息、匯總的supervisor信息、nimbus配置信息、匯總的運(yùn)行topology信息、匯總的停止topology信息。
其中,匯總的集群信息可以包括:版本、nimbus正常運(yùn)行時(shí)間、supervisors節(jié)點(diǎn)、被使用的時(shí)間、空閑時(shí)間、總時(shí)間、執(zhí)行器和任務(wù)等屬性。
匯總的topology信息可以包括:名字、id、狀態(tài)、正常運(yùn)行時(shí)間、工作器數(shù)目、執(zhí)行器數(shù)目和任務(wù)數(shù)目等屬性信息。
匯總的supervisor信息可以包括:id、主機(jī)、正常運(yùn)行時(shí)間、總時(shí)間和被使用的時(shí)間屬性等。
nimbus配置信息可以包括:一系列的鍵值對(duì)。
匯總的運(yùn)行topology信息,可以包括:名字、狀態(tài)、集群、已提交和操作屬性。
匯總的停止topology信息,可以包括:名字、狀態(tài)、集群、被停止和操作屬性。
通過這一系列topology和集群參數(shù),操作人員可以清晰直觀地查看storm集群、supervisor節(jié)點(diǎn)、nimbus節(jié)點(diǎn)和topology的相關(guān)信息,幫助使用者了解數(shù)據(jù)流和集群的運(yùn)行狀態(tài)。
本實(shí)施例還提供一種數(shù)據(jù)處理方法,應(yīng)用于服務(wù)器。如圖2所示,該方法包括以下步驟:
步驟200:通過與接口端之間的接口向所述接口端提供加載設(shè)置界面所需的功能數(shù)據(jù);
這里,實(shí)際應(yīng)用時(shí),所述接口可以為restapi。
實(shí)際應(yīng)用時(shí),在storm框架中,spout、blot的功能具有通用性。因此針對(duì)一部分業(yè)務(wù)場(chǎng)景,可以抽象出一些通用的spout和blot,spout主要包括:kafkaspout。blot主要包括:extractblot、filterblot、wordcountblot、hbaseblot、hdfsblot、redisblot、jdbcblot、kafkablot。因此,對(duì)于操作人員來說,只需要關(guān)注業(yè)務(wù)邏輯本身即可,即根據(jù)業(yè)務(wù)的需要,將這些通用的spout和blot進(jìn)行排列和組合即可。
其中,上述通用組件的功能分別是:kafkaspout是從kafka系統(tǒng)中去取數(shù)據(jù);kafkablot是將數(shù)據(jù)放回kafka系統(tǒng);extractblot是做數(shù)據(jù)抽取,將有用的信息抽取出來;filterblot是做數(shù)據(jù)過濾的,將沒有用的信息排除掉;wordcountblot是做計(jì)數(shù)用的,例如共發(fā)送多少條消息;hbaseblot和hbase這樣一個(gè)數(shù)據(jù)庫有關(guān)的,將數(shù)據(jù)存儲(chǔ)到hbase中;hdfsblot是和hdfs這樣一個(gè)文件系統(tǒng)有關(guān),將數(shù)據(jù)存儲(chǔ)到hdfs中;redisblot是和redis這樣一個(gè)內(nèi)存數(shù)據(jù)庫有關(guān)的,將數(shù)據(jù)存儲(chǔ)到redis中;jdbcblot是和通用的關(guān)系數(shù)據(jù)有關(guān),例如mysql、oracle等,把數(shù)據(jù)存儲(chǔ)到這些的數(shù)據(jù)庫里。
這些通用組件可以存儲(chǔ)在一個(gè)包文件下,其中,存儲(chǔ)的方式是:具體的spout/blot實(shí)現(xiàn)以及配置文件,配置文件主要描述了組件配置信息、組件屬性信息和組件屬性可選信息。
其中,當(dāng)所述服務(wù)器初始化時(shí),會(huì)檢查是否所有的通用組件是否都持久化到數(shù)據(jù)庫中,即所有的通用組件是否都已存儲(chǔ)至上述的包文件中,如果沒有,將未處理的組件持久化至數(shù)據(jù)庫中,從而形成加載設(shè)置界面所需的功能數(shù)據(jù)。換句話說,執(zhí)行本步驟之前,所述服務(wù)器需要將所有的通用組件都持久化到數(shù)據(jù)庫中,以便后續(xù)給所述接口端提供加載設(shè)置界面所需的功能數(shù)據(jù)。
步驟201:接收所述接口端提交的第一topology對(duì)象,并根據(jù)接收的第一topology對(duì)象生成第二topology對(duì)象;
這里,所述第一topology對(duì)象為操作人員可視化構(gòu)建的業(yè)務(wù)邏輯對(duì)應(yīng)的topology對(duì)象;所述第二topology對(duì)象為storm集群中實(shí)際運(yùn)行的topology對(duì)象;
具體地,所述服務(wù)器通過裝飾器對(duì)將所述第一topology對(duì)象中的各spout及blot對(duì)象進(jìn)行裝飾處理,形成真實(shí)的spout及blot;
通過選擇器將所述第一topology對(duì)象中的各連接對(duì)象進(jìn)行分組處理,形成真實(shí)的連接方式;
利用形成的真實(shí)的spout及blot及連接方式,生成所述第二topology對(duì)象。
其中,分組方式可以是shuffle分組、field分組等。
步驟202:在storm集群中執(zhí)行所述第二topology對(duì)象。
在一實(shí)施例中,本步驟完成后,該方法還可以包括:
通過所述接口向所述接口端提供所述第二topology對(duì)象對(duì)應(yīng)的topology和storm集群的監(jiān)控信息;
所述監(jiān)控信息包括:匯總的集群信息、匯總的topology信息、匯總的supervisor信息、nimbus配置信息、匯總的運(yùn)行topology信息、匯總的停止topology信息。
其中,匯總的集群信息可以包括:版本、nimbus正常運(yùn)行時(shí)間、supervisors節(jié)點(diǎn)、被使用的時(shí)間、空閑時(shí)間、總時(shí)間、執(zhí)行器和任務(wù)等屬性。
匯總的topology信息可以包括:名字、id、狀態(tài)、正常運(yùn)行時(shí)間、工作器數(shù)目、執(zhí)行器數(shù)目和任務(wù)數(shù)目等屬性信息。
匯總的supervisor信息可以包括:id、主機(jī)、正常運(yùn)行時(shí)間、總時(shí)間和被使用的時(shí)間屬性等。
nimbus配置信息可以包括:一系列的鍵值對(duì)。
匯總的運(yùn)行topology信息,可以包括:名字、狀態(tài)、集群、已提交和操作屬性。
匯總的停止topology信息,可以包括:名字、狀態(tài)、集群、被停止和操作屬性。
通過這一系列topology和集群參數(shù),操作人員可以清晰直觀地查看storm集群、supervisor節(jié)點(diǎn)、nimbus節(jié)點(diǎn)和topology的相關(guān)信息,幫助使用者了解數(shù)據(jù)流和集群的運(yùn)行狀態(tài)。
本實(shí)施例還提供了一種數(shù)據(jù)處理方法,如圖3所示,該方法包括以下步驟:
步驟300:接口端通過與服務(wù)器之間的接口獲取設(shè)置界面的功能數(shù)據(jù),并依據(jù)所述功能數(shù)據(jù)在操作人員側(cè)終端加載所述設(shè)置界面;
其中,構(gòu)建業(yè)務(wù)邏輯對(duì)應(yīng)的topology所需的候選輸入組件及處理組件可視地顯示在所述設(shè)置界面上;
步驟301:所述接口端響應(yīng)于所述操作人員對(duì)所述候選輸入組件及處理組件的選擇操作,在所述設(shè)置界面的相應(yīng)位置處顯示選擇的組件;響應(yīng)于所述操作人員對(duì)選擇的各組件的連接操作及對(duì)應(yīng)的分組方式,在所述設(shè)置界面上可視地顯示選擇的各組件的連接方式及對(duì)應(yīng)的分組方式,構(gòu)建成可視的業(yè)務(wù)邏輯對(duì)應(yīng)的topology對(duì)象;響應(yīng)于所述操作人員對(duì)構(gòu)建的topology對(duì)象的提交操作,通過所述接口提交所述構(gòu)建的topology對(duì)象至所述服務(wù)器;
步驟302:所述服務(wù)器根據(jù)接收的第一topology對(duì)象生成第二topology對(duì)象;并在storm集群中執(zhí)行所述第二topology對(duì)象。
這里,所述第一topology對(duì)象為操作人員可視化構(gòu)建的業(yè)務(wù)邏輯對(duì)應(yīng)的topology對(duì)象;所述第二topology對(duì)象為storm集群中實(shí)際運(yùn)行的topology對(duì)象。
需要說明的是:接口端與服務(wù)器的具體處理過程已在上文詳述,這里不再贅述。
本發(fā)明實(shí)施例提供的數(shù)據(jù)處理方法,接口端通過與服務(wù)器之間的接口獲取設(shè)置界面的功能數(shù)據(jù),并依據(jù)所述功能數(shù)據(jù)在操作人員側(cè)終端加載所述設(shè)置界面;其中,構(gòu)建業(yè)務(wù)邏輯對(duì)應(yīng)的topology所需的候選輸入組件及處理組件可視地顯示在所述設(shè)置界面上;響應(yīng)于所述操作人員對(duì)所述候選輸入組件及處理組件的選擇操作,在所述設(shè)置界面的相應(yīng)位置處顯示選擇的組件;響應(yīng)于所述操 作人員對(duì)選擇的各組件的連接操作及對(duì)應(yīng)的分組方式,在所述設(shè)置界面上可視地顯示選擇的各組件的連接方式及對(duì)應(yīng)的分組方式,構(gòu)建成可視的業(yè)務(wù)邏輯對(duì)應(yīng)的topology對(duì)象;以及響應(yīng)于所述操作人員對(duì)構(gòu)建的topology對(duì)象的提交操作,通過所述接口提交所述構(gòu)建的topology對(duì)象至所述服務(wù)器;所述服務(wù)器根據(jù)接收的第一topology對(duì)象生成第二topology對(duì)象;所述第一topology對(duì)象為操作人員可視化構(gòu)建的業(yè)務(wù)邏輯對(duì)應(yīng)的topology對(duì)象;所述第二topology對(duì)象為storm集群中實(shí)際運(yùn)行的topology對(duì)象;并在storm集群中執(zhí)行所述第二topology對(duì)象,通過組建的拖拽和連接可視地形成topology,使得操作人員可以快速直觀地構(gòu)建與自己業(yè)務(wù)相關(guān)的topology并提交執(zhí)行,如此,能大大縮短基于storm框架的實(shí)時(shí)數(shù)據(jù)處理的開發(fā)周期,大大提高了開發(fā)的效率。
另外,所述接口端通過所述接口獲取所述構(gòu)建的topology對(duì)象對(duì)應(yīng)的topology和storm集群的監(jiān)控信息;在所述設(shè)置界面上顯示獲取的監(jiān)控信息;所述監(jiān)控信息包括:匯總的集群信息、匯總的topology信息、匯總的supervisor信息、nimbus配置信息、匯總的運(yùn)行topology信息、匯總的停止topology信息,如此,能全面、實(shí)時(shí)監(jiān)控storm集群的狀態(tài)。
實(shí)施例二
為實(shí)現(xiàn)本發(fā)明實(shí)施例的方法,本實(shí)施例提供一種接口端,如圖4所示,所述接口端包括:界面設(shè)置單元41、第一topology生成單元42及提交單元43;其中,
所述界面設(shè)置單元41,用于通過與服務(wù)器之間的接口獲取設(shè)置界面的功能數(shù)據(jù),并依據(jù)所述功能數(shù)據(jù)在操作人員側(cè)終端加載所述設(shè)置界面;其中,構(gòu)建業(yè)務(wù)邏輯對(duì)應(yīng)的topology所需的候選輸入組件及處理組件可視地顯示在所述設(shè)置界面上;
所述第一topology生成單元42,用于響應(yīng)于所述操作人員對(duì)所述候選輸入組件及處理組件的選擇操作,在所述設(shè)置界面的相應(yīng)位置處顯示選擇的組件;以及響應(yīng)于所述操作人員對(duì)選擇的各組件的連接操作及對(duì)應(yīng)的分組方式,在所 述設(shè)置界面上可視地顯示選擇的各組件的連接方式及對(duì)應(yīng)的分組方式,構(gòu)建成可視的業(yè)務(wù)邏輯對(duì)應(yīng)的topology對(duì)象;
所述提交單元43,用于響應(yīng)于所述操作人員對(duì)構(gòu)建的topology對(duì)象的提交操作,通過所述接口提交所述構(gòu)建的topology對(duì)象至所述服務(wù)器。
這里,實(shí)際應(yīng)用時(shí),所述所需的候選輸入組件及處理組件按照類型或功能排序后可視地顯示在所述設(shè)置界面上。
在一實(shí)施例中,所述設(shè)置界面可以為web界面。
所述接口可以為restapi。
實(shí)際應(yīng)用時(shí),根據(jù)業(yè)務(wù)邏輯,所述操作人員選擇相關(guān)的spout和blot,并被拖拽到所述相應(yīng)位置,選擇相應(yīng)的連接線進(jìn)行連接,并選擇對(duì)應(yīng)的分組方式;所述接口端收到所述操作人員的這些操作(選擇操作、連接操作)后,在設(shè)置界面的所述相應(yīng)位置處顯示相關(guān)的spout和blot,并顯示各組件的連接方式及對(duì)應(yīng)的分組方式,從而方便所述操作人員可視化地進(jìn)行topology的構(gòu)建。
其中,所述分組方式可以是隨機(jī)(shuffle)分組、字段(field)分組等。
所述提交單元43,具體用于:將構(gòu)建的可視的業(yè)務(wù)邏輯對(duì)應(yīng)的topology對(duì)象,解析成所述服務(wù)器能識(shí)別的topology對(duì)象,并上傳至所述服務(wù)器。
換句話說,所述提交單元43對(duì)構(gòu)建的可視的業(yè)務(wù)邏輯對(duì)應(yīng)的topology對(duì)象進(jìn)行數(shù)據(jù)格式的轉(zhuǎn)換,以便所述服務(wù)器能夠識(shí)別。實(shí)際應(yīng)用時(shí),所述提交單元43可以將構(gòu)建的topology對(duì)象中的組件信息、連接方式、分組方式解析成一個(gè)topologyconfig對(duì)象的json串,并發(fā)送給服務(wù)器。
這里,實(shí)際應(yīng)用時(shí),所述提交單元43,還用于通過所述接口提交所述構(gòu)建的topology對(duì)象至所述服務(wù)器之前,對(duì)所述操作人員構(gòu)建的可視的topology對(duì)象進(jìn)行合法性驗(yàn)證;并在驗(yàn)證通過后,通過所述接口提交所述構(gòu)建的topology對(duì)象至所述服務(wù)器。
換句話說,向所述服務(wù)器提交的構(gòu)建的topology對(duì)象為合法性驗(yàn)證通過的topology對(duì)象。
其中,所述合法性驗(yàn)證可以包括:spout的輸出只能連接blot的輸入、相 關(guān)屬性值的合法性驗(yàn)證等。
在提交所述構(gòu)建的topology對(duì)象至所述服務(wù)器的過程中,所述提交單元43還可以向所述操作人員提供提交集群失敗的錯(cuò)誤信息和錯(cuò)誤定位等告警功能。
換句話說,所述提交單元43可以向所述操作人員提供一系列的異常檢測(cè)和異常告警功能。
在一實(shí)施例中,該接口端還還可以包括:監(jiān)控單元,用于通過所述接口獲取所述構(gòu)建的topology對(duì)象對(duì)應(yīng)的topology和storm集群的監(jiān)控信息;并在所述設(shè)置界面上顯示獲取的監(jiān)控信息。
這里,所述監(jiān)控信息包括:匯總的topology信息、匯總的監(jiān)控器supervisor信息、nimbus配置信息、匯總的運(yùn)行topology信息、匯總的停止topology信息。
其中,匯總的集群信息可以包括:版本、nimbus正常運(yùn)行時(shí)間、supervisors節(jié)點(diǎn)、被使用的時(shí)間、空閑時(shí)間、總時(shí)間、執(zhí)行器和任務(wù)等屬性。
匯總的topology信息可以包括:名字、id、狀態(tài)、正常運(yùn)行時(shí)間、工作器數(shù)目、執(zhí)行器數(shù)目和任務(wù)數(shù)目等屬性信息。
匯總的supervisor信息可以包括:id、主機(jī)、正常運(yùn)行時(shí)間、總時(shí)間和被使用的時(shí)間屬性等。
nimbus配置信息可以包括:一系列的鍵值對(duì)。
匯總的運(yùn)行topology信息,可以包括:名字、狀態(tài)、集群、已提交和操作屬性。
匯總的停止topology信息,可以包括:名字、狀態(tài)、集群、被停止和操作屬性。
通過這一系列topology和集群參數(shù),操作人員可以清晰直觀地查看storm集群、supervisor節(jié)點(diǎn)、nimbus節(jié)點(diǎn)和topology的相關(guān)信息,幫助使用者了解數(shù)據(jù)流和集群的運(yùn)行狀態(tài)。
實(shí)際應(yīng)用時(shí),所述界面設(shè)置單元41、第一topology生成單元42、提交單元43及監(jiān)控單元可由接口端中的中央處理器(cpu,centralprocessingunit)、微 處理器(mcu,microcontrolunit)、數(shù)字信號(hào)處理器(dsp,digitalsignalprocessor)或可編程邏輯陣列(fpga,field-programmablegatearray)實(shí)現(xiàn)。
為實(shí)現(xiàn)本發(fā)明實(shí)施例的方法,本實(shí)施例還提供了一種服務(wù)器,如圖5所示,該服務(wù)器包括:數(shù)據(jù)提供單元51、第二topology生成單元52以及執(zhí)行單元53;其中,
所述數(shù)據(jù)提供單元51,用于向接口端提供加載設(shè)置界面所需的功能數(shù)據(jù);
所述第二topology生成單元52,用于接收所述接口端提交的第一topology對(duì)象,并根據(jù)接收的第一topology對(duì)象生成第二topology對(duì)象;所述第一topology對(duì)象為操作人員可視化構(gòu)建的業(yè)務(wù)邏輯對(duì)應(yīng)的topology對(duì)象;所述第二topology對(duì)象為storm集群中實(shí)際運(yùn)行的topology對(duì)象;
所述執(zhí)行單元53,用于在storm集群中執(zhí)行所述第二topology對(duì)象。
其中,實(shí)際應(yīng)用時(shí),所述接口可以為restapi。
實(shí)際應(yīng)用時(shí),在storm框架中,spout、blot的功能具有通用性。因此針對(duì)一部分業(yè)務(wù)場(chǎng)景,可以抽象出一些通用的spout和blot,spout主要包括:kafkaspout。blot主要包括:extractblot、filterblot、wordcountblot、hbaseblot、hdfsblot、redisblot、jdbcblot、kafkablot。因此,對(duì)于操作人員來說,只需要關(guān)注業(yè)務(wù)邏輯本身即可,即根據(jù)業(yè)務(wù)的需要,將這些通用的spout和blot進(jìn)行排列和組合即可。
其中,上述通用組件的功能分別是:kafkaspout是從kafka系統(tǒng)中去取數(shù)據(jù);kafkablot是將數(shù)據(jù)放回kafka系統(tǒng);extractblot是做數(shù)據(jù)抽取,將有用的信息抽取出來;filterblot是做數(shù)據(jù)過濾的,將沒有用的信息排除掉;wordcountblot是做計(jì)數(shù)用的,例如共發(fā)送多少條消息;hbaseblot和hbase這樣一個(gè)數(shù)據(jù)庫有關(guān)的,將數(shù)據(jù)存儲(chǔ)到hbase中;hdfsblot是和hdfs這樣一個(gè)文件系統(tǒng)有關(guān),將數(shù)據(jù)存儲(chǔ)到hdfs中;redisblot是和redis這樣一個(gè)內(nèi)存數(shù)據(jù)庫有關(guān)的,將數(shù)據(jù)存儲(chǔ)到redis中;jdbcblot是和通用的關(guān)系數(shù)據(jù)有關(guān),例如mysql、oracle等,把數(shù)據(jù)存儲(chǔ)到這些的數(shù)據(jù)庫里。
這些通用組件可以存儲(chǔ)在一個(gè)包文件下,其中,存儲(chǔ)的方式是:具體的 spout/blot實(shí)現(xiàn)以及配置文件,配置文件主要描述了組件配置信息、組件屬性信息和組件屬性可選信息。
其中,當(dāng)所述服務(wù)器初始化時(shí),會(huì)檢查是否所有的通用組件是否都持久化到數(shù)據(jù)庫中,即所有的通用組件是否都已存儲(chǔ)至上述的包文件中,如果沒有,將未處理的組件持久化至數(shù)據(jù)庫中,從而形成加載設(shè)置界面所需的功能數(shù)據(jù)。換句話說,所述服務(wù)器需要將所有的通用組件都持久化到數(shù)據(jù)庫中,以便所述數(shù)據(jù)提供單元51給所述接口端提供加載設(shè)置界面所需的功能數(shù)據(jù)。
所述第二topology生成單元52,具體用于:
通過裝飾器對(duì)將所述第一topology對(duì)象中的各spout及blot對(duì)象進(jìn)行裝飾處理,形成真實(shí)的spout及blot;
通過選擇器將所述第一topology對(duì)象中的各連接對(duì)象進(jìn)行分組處理,形成真實(shí)的連接方式;
利用形成的真實(shí)的spout及blot及連接方式,生成所述第二topology對(duì)象。
其中,分組方式可以是shuffle分組、field分組等。
在一實(shí)施例中,該服務(wù)器還可以包括:監(jiān)控信息提供單元,用于在storm集群中執(zhí)行所述第二topology對(duì)象后,通過所述接口向所述接口端提供所述第二topology對(duì)象對(duì)應(yīng)的topology和storm集群的監(jiān)控信息。
這里,所述監(jiān)控信息包括:匯總的topology信息、匯總的監(jiān)控器supervisor信息、nimbus配置信息、匯總的運(yùn)行topology信息、匯總的停止topology信息。
其中,匯總的集群信息可以包括:版本、nimbus正常運(yùn)行時(shí)間、supervisors節(jié)點(diǎn)、被使用的時(shí)間、空閑時(shí)間、總時(shí)間、執(zhí)行器和任務(wù)等屬性。
匯總的topology信息可以包括:名字、id、狀態(tài)、正常運(yùn)行時(shí)間、工作器數(shù)目、執(zhí)行器數(shù)目和任務(wù)數(shù)目等屬性信息。
匯總的supervisor信息可以包括:id、主機(jī)、正常運(yùn)行時(shí)間、總時(shí)間和被使用的時(shí)間屬性等。
nimbus配置信息可以包括:一系列的鍵值對(duì)。
匯總的運(yùn)行topology信息,可以包括:名字、狀態(tài)、集群、已提交和操作屬性。
匯總的停止topology信息,可以包括:名字、狀態(tài)、集群、被停止和操作屬性。
通過這一系列topology和集群參數(shù),操作人員可以清晰直觀地查看storm集群、supervisor節(jié)點(diǎn)、nimbus節(jié)點(diǎn)和topology的相關(guān)信息,幫助使用者了解數(shù)據(jù)流和集群的運(yùn)行狀態(tài)。
實(shí)際應(yīng)用時(shí),所述數(shù)據(jù)提供單元51、第二topology生成單元52、執(zhí)行單元53及監(jiān)控信息提供單元可由服務(wù)器中的cpu、mcu、dsp或fpga實(shí)現(xiàn)。
為實(shí)現(xiàn)本發(fā)明實(shí)施例的方法,本實(shí)施例還提供了一種數(shù)據(jù)處理系統(tǒng),如圖6所示,該系統(tǒng)包括:接口端61及服務(wù)器62;其中,
所述接口端61,用于通過與所述服務(wù)器62之間的接口獲取設(shè)置界面的功能數(shù)據(jù),并依據(jù)所述功能數(shù)據(jù)在操作人員側(cè)終端加載所述設(shè)置界面;其中,構(gòu)建業(yè)務(wù)邏輯對(duì)應(yīng)的topology所需的候選輸入組件及處理組件可視地顯示在所述設(shè)置界面上;響應(yīng)于所述操作人員對(duì)所述候選輸入組件及處理組件的選擇操作,在所述設(shè)置界面的相應(yīng)位置處顯示選擇的組件;響應(yīng)于所述操作人員對(duì)選擇的各組件的連接操作,在所述設(shè)置界面上可視地顯示選擇的各組件的連接方式,構(gòu)建成可視的業(yè)務(wù)邏輯對(duì)應(yīng)的topology對(duì)象;以及響應(yīng)于所述操作人員對(duì)構(gòu)建的topology對(duì)象的提交操作,通過所述接口提交所述構(gòu)建的topology對(duì)象至所述服務(wù)器62;
所述服務(wù)器62,用于向所述接口端61提供加載設(shè)置界面所需的功能數(shù)據(jù);接收所述接口端提交的第一topology對(duì)象,并根據(jù)接收的第一topology對(duì)象生成第二topology對(duì)象;所述第一topology對(duì)象為操作人員可視化構(gòu)建的業(yè)務(wù)邏輯對(duì)應(yīng)的topology對(duì)象;所述第二topology對(duì)象為storm集群中實(shí)際運(yùn)行的topology對(duì)象;以及在storm集群中執(zhí)行所述第二topology對(duì)象。
需要說明的是:接口端61與服務(wù)器62的具體處理過程已在上文詳述,這 里不再贅述。
本發(fā)明實(shí)施例提供的方案,接口端通過與服務(wù)器之間的接口獲取設(shè)置界面的功能數(shù)據(jù),并依據(jù)所述功能數(shù)據(jù)在操作人員側(cè)終端加載所述設(shè)置界面;其中,構(gòu)建業(yè)務(wù)邏輯對(duì)應(yīng)的topology所需的候選輸入組件及處理組件可視地顯示在所述設(shè)置界面上;響應(yīng)于所述操作人員對(duì)所述候選輸入組件及處理組件的選擇操作,在所述設(shè)置界面的相應(yīng)位置處顯示選擇的組件;響應(yīng)于所述操作人員對(duì)選擇的各組件的連接操作及對(duì)應(yīng)的分組方式,在所述設(shè)置界面上可視地顯示選擇的各組件的連接方式及對(duì)應(yīng)的分組方式,構(gòu)建成可視的業(yè)務(wù)邏輯對(duì)應(yīng)的topology對(duì)象;以及響應(yīng)于所述操作人員對(duì)構(gòu)建的topology對(duì)象的提交操作,通過所述接口提交所述構(gòu)建的topology對(duì)象至所述服務(wù)器;所述服務(wù)器根據(jù)接收的第一topology對(duì)象生成第二topology對(duì)象;所述第一topology對(duì)象為操作人員可視化構(gòu)建的業(yè)務(wù)邏輯對(duì)應(yīng)的topology對(duì)象;所述第二topology對(duì)象為storm集群中實(shí)際運(yùn)行的topology對(duì)象;并在storm集群中執(zhí)行所述第二topology對(duì)象,通過組建的拖拽和連接可視地形成topology,使得操作人員可以快速直觀地構(gòu)建與自己業(yè)務(wù)相關(guān)的topology并提交執(zhí)行,如此,能大大縮短基于storm框架的實(shí)時(shí)數(shù)據(jù)處理的開發(fā)周期,大大提高了開發(fā)的效率。
另外,所述接口端通過所述接口獲取所述構(gòu)建的topology對(duì)象對(duì)應(yīng)的topology和storm集群的監(jiān)控信息;在所述設(shè)置界面上顯示獲取的監(jiān)控信息;所述監(jiān)控信息包括:匯總的集群信息、匯總的topology信息、匯總的supervisor信息、nimbus配置信息、匯總的運(yùn)行topology信息、匯總的停止topology信息,如此,能全面、實(shí)時(shí)監(jiān)控storm集群的狀態(tài)。
實(shí)施例三
本實(shí)施例在實(shí)施例一、二的基礎(chǔ)上,詳細(xì)描述如何可視化地構(gòu)建storm數(shù)據(jù)流和分析模型。
本實(shí)施例提供的數(shù)據(jù)處理系統(tǒng),即基于storm的實(shí)時(shí)數(shù)據(jù)處理可視化平臺(tái)是基于瀏覽器/服務(wù)器(b/s,browser/server)結(jié)構(gòu)開發(fā)的,如圖7所示,包括 web接口端和服務(wù)器端。web接口端采用內(nèi)嵌式j(luò)etty作為其web容器,web頁面基于angularjs模型-視圖-控制器(mvc,modelviewcontroller)的框架實(shí)現(xiàn)了與服務(wù)器端數(shù)據(jù)的綁定。服務(wù)器端基于java語言實(shí)現(xiàn)了相關(guān)的業(yè)務(wù)層、數(shù)據(jù)持久層以及topology引擎的功能。web接口端和服務(wù)器端之間通過restapi進(jìn)行交互,從而實(shí)現(xiàn)了前后端的分離。
具體地,如圖7所示,在web接口端,主要包括:安全模塊(security)、儀表盤模塊(dashbroad)、拓?fù)淠K(topology)、服務(wù)模塊(service)及用戶模塊(user)。其中,安全模塊主要負(fù)責(zé)用戶數(shù)據(jù)流的分離;儀表盤模塊(相當(dāng)于實(shí)施例二中的監(jiān)控單元)主要負(fù)責(zé)對(duì)storm集群的狀態(tài)以及相關(guān)topology的狀態(tài)實(shí)行實(shí)時(shí)監(jiān)控;拓?fù)淠K(相當(dāng)于實(shí)施例二中的界面設(shè)置單元、第一topology生成單元及提交單元)主要負(fù)責(zé)topology的可視化構(gòu)建和一鍵化提交;服務(wù)模塊主要負(fù)責(zé)對(duì)集群(包括storm集群和kafka集群)實(shí)現(xiàn)注冊(cè)和管理;用戶模塊為管理員專用,主要負(fù)責(zé)對(duì)相關(guān)用戶實(shí)現(xiàn)管理以及權(quán)限的分配,即對(duì)各用戶進(jìn)行隔離的作用。
其中,每個(gè)功能模塊嚴(yán)格遵循mvc框架的設(shè)計(jì)原則,以便實(shí)現(xiàn)可視的目的。用戶訪問相應(yīng)的web頁面,利用angularjs的資源服務(wù)和jerseyrestful框架,通過restapi與服務(wù)器端的數(shù)據(jù)源實(shí)現(xiàn)交互。
另外,servlet通過創(chuàng)建一個(gè)框架來擴(kuò)展服務(wù)器的能力,以提供在web上進(jìn)行請(qǐng)求和響應(yīng)服務(wù),比如生成超文本傳輸協(xié)議(http,hypertexttransferprotocol)等。而jerseyframework可以為restapi提供了新功能和開發(fā)工具,以便與所述服務(wù)器端通過api接口進(jìn)行交互。通用模塊(common)存放了一些公共方法。比如:存放拓?fù)淠K和服務(wù)模塊等模塊都會(huì)用的一些業(yè)務(wù)流程,比如用戶權(quán)限驗(yàn)證等。
如圖7所示,對(duì)于服務(wù)器端,主要包括:框架模塊(framework)、數(shù)據(jù)庫(datastore)、topology引擎模塊(engine)、服務(wù)模塊(service)以及數(shù)據(jù)存儲(chǔ)模塊(dao)(相當(dāng)于實(shí)施例二中的數(shù)據(jù)提供單元)。其中,框架模塊中存儲(chǔ)了通用組件,以便當(dāng)通過服務(wù)模塊收到用戶構(gòu)建的topology對(duì)象后,topology 引擎模塊(相當(dāng)于實(shí)施例二中的第二topology生成單元及執(zhí)行單元)根據(jù)這些存儲(chǔ)的通用組件形成storm集群中實(shí)際運(yùn)行的topology對(duì)象。當(dāng)服務(wù)器端初始化時(shí),服務(wù)器端topology引擎模塊會(huì)檢查是否所有組件(component)對(duì)象都持久化到數(shù)據(jù)庫中,若沒有就將缺失的組件對(duì)象持久化到數(shù)據(jù)庫中,從而形成加載設(shè)置界面所需的功能數(shù)據(jù)。數(shù)據(jù)存儲(chǔ)模塊從數(shù)據(jù)庫中獲取component對(duì)象,并通過服務(wù)模塊發(fā)送給接口端。
具體地,在storm框架中,spout、blot的功能具有通用性。因此針對(duì)一部分業(yè)務(wù)場(chǎng)景,可以抽象出一些通用的spout和blot,spout主要包括:kafkaspout。blot主要包括:extractblot、filterblot、wordcountblot、hbaseblot、hdfsblot、redisblot、jdbcblot、kafkablot。因此,對(duì)于操作人員來說,只需要關(guān)注業(yè)務(wù)邏輯本身即可,即根據(jù)業(yè)務(wù)的需要,將這些通用的spout和blot進(jìn)行排列和組合即可。
其中,上述通用組件的功能分別是:kafkaspout是從kafka系統(tǒng)中去取數(shù)據(jù);kafkablot是將數(shù)據(jù)放回kafka系統(tǒng);extractblot是做數(shù)據(jù)抽取,將有用的信息抽取出來;filterblot是做數(shù)據(jù)過濾的,將沒有用的信息排除掉;wordcountblot是做計(jì)數(shù)用的,例如共發(fā)送多少條消息;hbaseblot和hbase這樣一個(gè)數(shù)據(jù)庫有關(guān)的,將數(shù)據(jù)存儲(chǔ)到hbase中;hdfsblot是和hdfs這樣一個(gè)文件系統(tǒng)有關(guān),將數(shù)據(jù)存儲(chǔ)到hdfs中;redisblot是和redis這樣一個(gè)內(nèi)存數(shù)據(jù)庫有關(guān)的,將數(shù)據(jù)存儲(chǔ)到redis中;jdbcblot是和通用的關(guān)系數(shù)據(jù)有關(guān),例如mysql、oracle等,把數(shù)據(jù)存儲(chǔ)到這些的數(shù)據(jù)庫里。
這些通用組件存儲(chǔ)在框架模塊的framework包文件下,其中,存儲(chǔ)的方式是:具體的spout/blot實(shí)現(xiàn)(代碼)以及后綴為.yml的配置文件。這里,配置文件主要描述了組件配置信息、組件屬性信息和組件屬性可選信息。如圖8所示,topology引擎模塊中的組件解析器會(huì)根據(jù)配置文件生成對(duì)應(yīng)的component對(duì)象,生成component對(duì)象的過程包括:將配置文件中config部分對(duì)應(yīng)component對(duì)象的componentconfig屬性,配置文件中properties部分對(duì)應(yīng)component對(duì)象的componentproperty屬性,properties下的options部分對(duì)應(yīng) component對(duì)象的componentpropertyoptions屬性。
從上面的描述中可以看出:真實(shí)的spout/blot實(shí)現(xiàn)與component對(duì)象之間的聯(lián)系只是string類型的spout/blot類名,相關(guān)屬性的參數(shù)也是通過注入的方式(在相應(yīng)的位置進(jìn)行標(biāo)記,并在配置文件中寫入相應(yīng)的配置項(xiàng),以便程序啟動(dòng)后會(huì)在相應(yīng)的位置調(diào)用配置文件里的相應(yīng)的配置項(xiàng))。這樣就將代碼級(jí)別的耦合變?yōu)榕渲梦募系鸟詈希瑢?shí)現(xiàn)了解耦,這樣可以提高數(shù)據(jù)庫中存儲(chǔ)的組件庫的可擴(kuò)展性。
另外,如圖7所示,服務(wù)器端還可以包括:工具模塊(util)及實(shí)例模塊(model);其中,工具模塊主要存儲(chǔ)放一些通用工具,比如:生成全局通用唯一識(shí)別碼(uuid,universallyuniqueidentifier)、對(duì)數(shù)據(jù)加密解密、數(shù)據(jù)完整性驗(yàn)證的通用工具等。實(shí)例模塊存放的是基礎(chǔ)對(duì)象,比如topology對(duì)象、用戶(user)對(duì)象等。
如圖9所示,當(dāng)采用本發(fā)明實(shí)施例的方案構(gòu)建業(yè)務(wù)邏輯對(duì)應(yīng)的topology并提交至storm集群時(shí),首先,通過接口端訪問web頁面,在web頁面進(jìn)行topology的可視化構(gòu)建和一鍵化提交的相關(guān)操作和數(shù)據(jù)驗(yàn)證,接口端收到這些操作后,利用angularjs的資源服務(wù)和jerseyrestful框架,通過restapi與服務(wù)器端進(jìn)行交互,以便完成topology對(duì)象的構(gòu)建及提交。
具體地,拓?fù)淠K中的topology生成器主要由主體內(nèi)容區(qū)、組件調(diào)色板區(qū)以及操作位區(qū)構(gòu)成。其中,組件調(diào)色板區(qū)展示framework包下的所有組件,并根據(jù)組件類型或者功能類型實(shí)現(xiàn)排序。主體內(nèi)容區(qū)主要用于可視化構(gòu)建topology,從組建調(diào)色板區(qū)選擇的spout和blot被用戶拖拽到主體內(nèi)容區(qū)上,且選擇的spout和blot之間通過連接線(可以認(rèn)為組件調(diào)色板區(qū)也展示有連接線)連線,并選擇對(duì)應(yīng)的分組方式(shuffle分組、field分組等),以構(gòu)建topology對(duì)象。操作位區(qū)主要對(duì)構(gòu)建的topology對(duì)象進(jìn)行操作,包括保存、提交、停止、清空、查看日志和查看度量。topology生成器還提供一系列的異常檢測(cè)和異常告警功能,包括spout的輸出只能連接blot的輸入、相關(guān)屬性值的合法性驗(yàn)證、提交集群失敗的錯(cuò)誤信息和錯(cuò)誤定位。用戶可視化地構(gòu)建完topology對(duì)象后, topology生成器可以驗(yàn)證構(gòu)建的topology對(duì)象的合法性,合法性驗(yàn)證通過后,再通過restapi,利用http請(qǐng)求的方式發(fā)送給服務(wù)器。
其中,topology生成器的組件可視化均是通過一個(gè)ui解析器來實(shí)現(xiàn)的,topology生成器的可拖拽效果可通過jqueryui的draggable插件來實(shí)現(xiàn)。這里,ui解析器實(shí)現(xiàn)了雙向解析,如圖10所示,包括:一方面,對(duì)于組件,ui解析器將服務(wù)器的數(shù)據(jù)庫component對(duì)象解析為web頁面組件元素;另一方面,ui解析器將構(gòu)建的topology對(duì)象從web頁面topology元素解析為topologyconfig對(duì)象。
具體地,對(duì)于組件的可視化,ui解析器根據(jù)服務(wù)端返回的component對(duì)象,對(duì)componentconfig屬性解析獲取頁面組件的名稱和類別,對(duì)componentproperty屬性解析獲取用戶需要填寫的相關(guān)配置信息,對(duì)componentpropertyoptions屬性解析獲取用戶填寫相關(guān)配置信息的填寫方式(下拉框、復(fù)選框等)。
對(duì)于構(gòu)建的topology對(duì)象的解析,ui解析器會(huì)將主體內(nèi)容區(qū)中的包括組件信息、連接方式、分組方式解析成一個(gè)topologyconfig對(duì)象的json串發(fā)送給服務(wù)器端。
接著,服務(wù)器端收到提交的構(gòu)建的topology對(duì)象后,根據(jù)構(gòu)建的topology對(duì)象生成storm集群中實(shí)際運(yùn)行的topology對(duì)象,并在storm集群中執(zhí)行生成的topology對(duì)象。
這里,主要由服務(wù)器的topology引擎模塊來實(shí)現(xiàn)。topology引擎模塊主要具有以下功能:設(shè)置本地集群、提交topology對(duì)象、停止topology、獲取集群狀態(tài)、獲取topology信息等功能。
topology引擎模塊的具體實(shí)現(xiàn)主要包括、topologysubmitter線程;其中,topology工廠主要包括:spout/blot處理單元及組(grouping)處理單元。
如圖11所示,topology工廠會(huì)根據(jù)構(gòu)建的topology對(duì)象、處理后的spout/blot、集群類型和集群信息構(gòu)建storm集群中實(shí)際運(yùn)行的stormtopology對(duì)象,通過topologysubmitter線程的構(gòu)造方法傳入topologysubmitter線程中, 并利用線程池對(duì)線程的并發(fā)實(shí)行管理。
具體地,spout/blot處理單元將構(gòu)建的topology對(duì)象中的相關(guān)組件對(duì)象通過wrapper,添加一些鉤子(hook),例如日志log方法和度量metrics方法等,同時(shí)注入用戶填寫的組件相關(guān)屬性值(讀地址、讀文件等),生成真實(shí)的spout/blot;topology引擎模塊通過grouping處理單元將構(gòu)建的topology對(duì)象中的各連接對(duì)象通過選擇器(switch)進(jìn)行分組處理,形成真實(shí)的連接方式,topology工廠再利用處理后的真實(shí)的spout/blot及連接方式,形成storm集群中實(shí)際運(yùn)行的topology對(duì)象。
然后,服務(wù)器對(duì)topology和storm集群的狀態(tài)性能進(jìn)行監(jiān)控,并返回給接口端,在web頁面上進(jìn)行呈現(xiàn)。
具體地,由接口端的儀表盤模塊來呈現(xiàn)相關(guān)信息;其中,儀表盤模塊呈現(xiàn)的信息主要包括:匯總的集群信息、匯總的topology信息、匯總的supervisor信息、nimbus配置信息、匯總的運(yùn)行topology信息、匯總的停止topology信息。
其中,匯總的集群信息可以包括:版本、nimbus正常運(yùn)行時(shí)間、supervisors節(jié)點(diǎn)、被使用的時(shí)間、空閑時(shí)間、總時(shí)間、執(zhí)行器和任務(wù)等屬性。
匯總的topology信息可以包括:名字、id、狀態(tài)、正常運(yùn)行時(shí)間、工作器數(shù)目、執(zhí)行器數(shù)目和任務(wù)數(shù)目等屬性信息。
匯總的supervisor信息可以包括:id、主機(jī)、正常運(yùn)行時(shí)間、總時(shí)間和被使用的時(shí)間屬性等。
nimbus配置信息可以包括:一系列的鍵值對(duì)。
匯總的運(yùn)行topology信息,可以包括:名字、狀態(tài)、集群、已提交和操作屬性。
匯總的停止topology信息,可以包括:名字、狀態(tài)、集群、被停止和操作屬性。
通過這一系列topology和集群參數(shù),操作人員可以清晰直觀地查看storm集群、supervisor節(jié)點(diǎn)、nimbus節(jié)點(diǎn)和topology的相關(guān)信息,幫助使用者了解 數(shù)據(jù)流和集群的運(yùn)行狀態(tài)。
從上面的描述中可以看出,不同于開發(fā)人員代碼級(jí)別topology的構(gòu)建及提交,本發(fā)明實(shí)施例提出一種新的交互方式來構(gòu)建storm實(shí)時(shí)數(shù)據(jù)流,通過組件的拖拽和連接形成topology對(duì)象,擴(kuò)大了storm框架的適用范圍,將相關(guān)構(gòu)建工作從代碼級(jí)別轉(zhuǎn)變到業(yè)務(wù)層面,使得非開發(fā)人員可以快速直觀地構(gòu)建與自己業(yè)務(wù)相關(guān)的topology對(duì)象并提交執(zhí)行,縮短了基于storm框架的實(shí)時(shí)數(shù)據(jù)處理的開發(fā)周期,如此,能有效地提高開發(fā)效率。同時(shí),通用組件一般是經(jīng)過測(cè)試的組件,所以不會(huì)存在相應(yīng)的漏洞(bug),且提供拖拽的方式,不需要去開發(fā)對(duì)應(yīng)的代碼,所以降低了開發(fā)過程中出現(xiàn)問題的可能性。
另外,本實(shí)施例提供的方案,結(jié)合storm開發(fā)生命周期中的相關(guān)工作流,整合了包括storm/kafka集群注冊(cè)、通用化組件選擇、topology構(gòu)建與提交、狀態(tài)實(shí)時(shí)監(jiān)控等功能,形成了一整套完善的平臺(tái)體系,實(shí)現(xiàn)了對(duì)整個(gè)storm開發(fā)周期的管理。
本領(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ù)范圍。