亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于Hadoop集群的分布式監(jiān)控系統(tǒng)及其監(jiān)控方法

文檔序號(hào):7606966閱讀:390來源:國知局
專利名稱:基于Hadoop集群的分布式監(jiān)控系統(tǒng)及其監(jiān)控方法
技術(shù)領(lǐng)域
本發(fā)明屬于分布式計(jì)算技術(shù)領(lǐng)域,涉及一種應(yīng)用于Hadoop分布式作業(yè)系統(tǒng)之上 的監(jiān)控系統(tǒng),特別涉及到對(duì)運(yùn)行MapReduce程序的大規(guī)模分布式集群的監(jiān)控以及控制系統(tǒng)。
背景技術(shù)
Hadoop是一個(gè)開源的運(yùn)行MapReduce任務(wù)的分布式中間件,作為重要技術(shù)組件被 廣泛應(yīng)用于當(dāng)前各種云計(jì)算后臺(tái)系統(tǒng)中。一般商用的Hadoop集群數(shù)目從幾百臺(tái)到上千臺(tái) 不等,隨著Hadoop所管理集群規(guī)模越來越大,其管理難度也越來越大。一般可將Hadoop集 群運(yùn)行中產(chǎn)生的錯(cuò)誤按照來源分為硬件錯(cuò)誤、操作系統(tǒng)錯(cuò)誤、中間件錯(cuò)誤以及用戶程序錯(cuò) 誤。錯(cuò)誤來源繁多、集群中各個(gè)因素互相影響、錯(cuò)誤暴露點(diǎn)和源點(diǎn)往往不在同一臺(tái)服務(wù)器上 以及用戶程序中的bug導(dǎo)致系統(tǒng)出錯(cuò)等因素使得Hadoop集群的管理開銷和難度呈指數(shù)增 長(zhǎng),因此應(yīng)用于Hadoop這樣的運(yùn)行MapReduce程序的分布式作業(yè)系統(tǒng)之上的監(jiān)控框架是目 前學(xué)術(shù)界和工業(yè)界亟待解決的問題?,F(xiàn)在應(yīng)用于Hadoop上的監(jiān)控框架主要有以下三種1、以Ganesha為代表的黑盒架 構(gòu),該類架構(gòu)主要通過監(jiān)控集群之間的數(shù)據(jù)交換以及服務(wù)器的性能來獲得集群狀態(tài),并且 通過學(xué)習(xí)算法來估計(jì)錯(cuò)誤的發(fā)生地;2、X-Trace ;X-Trace是一種應(yīng)用于調(diào)試互聯(lián)網(wǎng)程序的 網(wǎng)絡(luò)診斷工具,研究人員將其應(yīng)用于Hadoop平臺(tái),主要用于監(jiān)控集群內(nèi)部的網(wǎng)絡(luò)狀態(tài)。3、 Mochi ;Mochi是一種基于Hadoop的日志的監(jiān)控系統(tǒng)。利用服務(wù)器本地的Log信息,Mochi 可以分析出Hadoop集群的各種行為,并且反映給用戶,以供用戶日后分析程序。目前已存的監(jiān)控系統(tǒng)在實(shí)際應(yīng)用中具有非常明顯的缺點(diǎn)。首先,監(jiān)控框架所得到 的數(shù)據(jù)不夠精確,存在大量的干擾數(shù)據(jù),無論是使用黑盒或者白盒方法,對(duì)于具有數(shù)千臺(tái)服 務(wù)器的計(jì)算機(jī)集群來說,監(jiān)控的數(shù)據(jù)量過大,即便在自學(xué)習(xí)或者分類算法的幫助下,對(duì)這些 數(shù)據(jù)的分析工作量也很大。其次,監(jiān)控行為無法在不改變集群狀態(tài)的情況下啟動(dòng)或者停止, 在實(shí)際生產(chǎn)環(huán)境中,調(diào)試或者監(jiān)控行為越豐富對(duì)系統(tǒng)性能影響越大,不能動(dòng)態(tài)改變監(jiān)控框 架的行為就無法很好的應(yīng)用于生產(chǎn)環(huán)境中。綜上,目前仍缺少對(duì)上述問題有效解決的工具。 本發(fā)明因此而來。

發(fā)明內(nèi)容
為了克服背景技術(shù)中所提到的多種不足,本發(fā)明的一個(gè)目的在于提供一種靈活 的、在線的、精準(zhǔn)的分布式作業(yè)監(jiān)控系統(tǒng)。為了解決現(xiàn)有技術(shù)中的這些問題,本發(fā)明提供的技術(shù)方案是一種基于Hadoop集群的分布式監(jiān)控系統(tǒng),包括客戶端Client、主控計(jì)算機(jī)Master 和從屬計(jì)算機(jī)Slave,其特征在于所述系統(tǒng)中主控計(jì)算機(jī)Master和從屬計(jì)算機(jī)Slave基于 Hadoop集群的MapReduce框架構(gòu)建,所述客戶端Client負(fù)責(zé)向主控計(jì)算機(jī)Master提交監(jiān) 控作業(yè)請(qǐng)求;所述主控計(jì)算機(jī)Master響應(yīng)監(jiān)控作業(yè)請(qǐng)求后,將監(jiān)控作業(yè)進(jìn)行劃分后分配給從屬計(jì)算機(jī)Slave獨(dú)立完成;所述從屬計(jì)算機(jī)Slave負(fù)責(zé)完成獨(dú)立的監(jiān)控作業(yè)任務(wù)后,將其 結(jié)果通過主控計(jì)算機(jī)Master進(jìn)行整合后回傳數(shù)據(jù)給客戶端Client。優(yōu)選的,所述主控計(jì)算機(jī)Master設(shè)置有響應(yīng)服務(wù)模塊、數(shù)據(jù)聚合模塊、數(shù)據(jù)返回 模塊和管理模塊;所述響應(yīng)服務(wù)模塊負(fù)責(zé)響應(yīng)Client的監(jiān)控控制指令,并由此向Slave發(fā) 送監(jiān)控作業(yè)指令;所述數(shù)據(jù)聚合模塊用于對(duì)所有反饋的數(shù)據(jù)信息進(jìn)行計(jì)算整合;所述數(shù)據(jù) 返回模塊用于將整理計(jì)算后作業(yè)任務(wù)級(jí)別的任務(wù)信息返回給請(qǐng)求的Client ;所述管理模 塊用于監(jiān)控Slave的工作狀態(tài)。優(yōu)選的,所述從屬計(jì)算機(jī)Slave設(shè)置監(jiān)控作業(yè)模塊,所述監(jiān)控作業(yè)模塊用于根據(jù) 主控計(jì)算機(jī)Master進(jìn)行監(jiān)控作業(yè),并將監(jiān)控作業(yè)結(jié)果反饋給主控計(jì)算機(jī)Master進(jìn)行整合; 所述主控計(jì)算機(jī)Master與從屬計(jì)算機(jī)Slave間通過心跳協(xié)議維持分發(fā)、同步用戶的監(jiān)控作 業(yè)請(qǐng)求。優(yōu)選的,所述Slave和Master上均設(shè)置有本地監(jiān)控入口探針ftx)be,所述探針 Probe根據(jù)Master的監(jiān)控作業(yè)指令啟閉,獲取當(dāng)前集群中Master和Slave節(jié)點(diǎn)上的工作任 務(wù)信息,并反饋給Master上的數(shù)據(jù)聚合模塊。優(yōu)選的,所述客戶端Client設(shè)置有預(yù)定義的監(jiān)控腳本和監(jiān)控行為程序,所述客戶 端Client和Master通訊獲取當(dāng)前集群中所有處于監(jiān)控狀態(tài)的節(jié)點(diǎn)的探針插入點(diǎn)處的信
肩、ο本發(fā)明的另一目的在于提供一種基于Hadoop集群的分布式監(jiān)控方法,其特征在 于所述方法包括以下步驟(I)Master建立用于隔離待記錄的監(jiān)控?cái)?shù)據(jù)與其他數(shù)據(jù)的數(shù)據(jù)空間后監(jiān)聽 Client的監(jiān)聽作業(yè)請(qǐng)求;(2)Client向Master發(fā)出監(jiān)控控制指令,要求返回當(dāng)前集群的作業(yè)信息;Master 響應(yīng)Client發(fā)出的請(qǐng)求,判斷該請(qǐng)求是開啟請(qǐng)求還是關(guān)閉請(qǐng)求;如果是開啟請(qǐng)求,則 Master發(fā)送指令給相關(guān)Slave,以激活指定Slave上的探針,并維護(hù)該Slave的狀態(tài);如果 是關(guān)閉請(qǐng)求,則Master將發(fā)送關(guān)閉指令給指定Slave,以關(guān)閉Slave上的探針;(3) Slave上的監(jiān)控作業(yè)模塊接收Master的指令,獲取并統(tǒng)計(jì)當(dāng)前Slave的作業(yè)信 息,并反饋給Master ;(4)Master確認(rèn)收到有效的Slave反饋的程序運(yùn)行任務(wù)信息,保存在已建立的數(shù) 據(jù)空間中,同時(shí)根據(jù)Client發(fā)送的監(jiān)控作業(yè)請(qǐng)求,整合數(shù)據(jù)空間中的信息,以請(qǐng)求中的格 式將結(jié)果信息返回給Client ;根據(jù)監(jiān)控作業(yè)請(qǐng)求繼續(xù)循環(huán)監(jiān)控。優(yōu)選的,所述方法步驟O)中Master通過心跳機(jī)制對(duì)所有處于監(jiān)控狀態(tài)中的 Slave同步和發(fā)布監(jiān)控控制指令;所述Slave周期性通過遠(yuǎn)程調(diào)用機(jī)制把自身的狀態(tài)信息 發(fā)送給Master,Master在獲取并處Slave的狀態(tài)信息后,將需要發(fā)送給Slave的最新監(jiān)控 控制指令狀態(tài)作為遠(yuǎn)程調(diào)用的返回值發(fā)送給Slave。優(yōu)選的,所述方法中Master數(shù)據(jù)空間內(nèi)維護(hù)全局監(jiān)控指令表,所述全局監(jiān)控指令 表存儲(chǔ)所有Client遞交的監(jiān)控作業(yè)指令,并根據(jù)指令的時(shí)間先后順序更改監(jiān)控作業(yè)指令 的版本信息;Slave通過遠(yuǎn)程調(diào)用協(xié)議傳遞的狀態(tài)信息中包含有本地保存的指令表的版本 標(biāo)簽,Master在接收到Slave的狀態(tài)信息后,將Slave發(fā)送過來版本標(biāo)簽和其自身的版本 標(biāo)簽進(jìn)行比對(duì);若兩者的指令表版本標(biāo)簽一致,則Master將空指令表作為遠(yuǎn)程調(diào)用的返回值發(fā)送給Slave ;若Master的指令表版本標(biāo)簽較新,則Master將兩版本指令表的差作為遠(yuǎn) 程調(diào)用的返回值發(fā)送給Slave ;SlaVe保存從Master收到的監(jiān)控指令表,并按照該指令表更 新本地指令集。優(yōu)選的,所述方法中探針Probe設(shè)置在Hadoop集群系統(tǒng)內(nèi)與MapReduce作業(yè)相關(guān) 的方法中,MapReduce作業(yè)的內(nèi)部數(shù)據(jù)為探針?biāo)O(jiān)控;探針激活時(shí)探針實(shí)時(shí)獲取MapReduce 作業(yè)的Cluster、Job、Task、Thread、Round、UserKey狀態(tài)數(shù)據(jù),并記錄后提交返回。優(yōu)選的,所述方法步驟中Master返回給Client的監(jiān)控作業(yè)的級(jí)別由Client 自定義。本發(fā)明技術(shù)方案基于Apache組織的Hadoop平臺(tái)下開源分布式計(jì)算網(wǎng)絡(luò) MapReduce系統(tǒng),本發(fā)明進(jìn)行分布式監(jiān)控的狀態(tài)監(jiān)控系統(tǒng)主要由三部分組成,包括一個(gè)或若 干個(gè)客戶端,一個(gè)主控計(jì)算機(jī)和一個(gè)或若干個(gè)從屬計(jì)算機(jī)。所述客戶端用于和主控計(jì)算機(jī) 通訊,發(fā)送請(qǐng)求及顯示結(jié)果等;所述的主控計(jì)算機(jī)包括響應(yīng)服務(wù)模塊、數(shù)據(jù)聚合模塊、數(shù)據(jù) 返回模塊和管理模塊;所述的從屬計(jì)算機(jī)包括監(jiān)控作業(yè)模塊。本發(fā)明可以實(shí)現(xiàn)由一臺(tái)或多臺(tái)客戶端(Client)、一臺(tái)主控計(jì)算機(jī)(Master)和多 臺(tái)從屬計(jì)算機(jī)(Slave)組成的監(jiān)控框架,基于Hadoop的開源分布式計(jì)算系統(tǒng)的MapReduce 框架,客戶端向主控服務(wù)器提交作業(yè)任務(wù)請(qǐng)求,主控服務(wù)器響應(yīng)該請(qǐng)求,并將作業(yè)任務(wù)劃 分,分配給一部分從屬計(jì)算機(jī)獨(dú)立完成(Map),從屬計(jì)算機(jī)完成各自的作業(yè)任務(wù)后,將其結(jié) 果分配給另外一部分從屬計(jì)算機(jī),該部分從屬計(jì)算機(jī)負(fù)責(zé)將分配到的計(jì)算結(jié)果進(jìn)行整合 (Reduce),并輸出最終結(jié)果。本發(fā)明可以反映在主控計(jì)算機(jī)及從屬計(jì)算機(jī)上監(jiān)控并記錄反 饋正在運(yùn)行的計(jì)算任務(wù)各種性能數(shù)據(jù)。具體的本發(fā)明的監(jiān)控框架包含以下特征(1)所述的多個(gè)Slave和Master上均包含有本地監(jiān)控入口,稱為探針(I^robe),探 針的啟動(dòng)和關(guān)閉受來自Master的監(jiān)控作業(yè)指令影響。以此控制監(jiān)控作業(yè)程序的開啟、關(guān) 閉,并獲取當(dāng)前集群中Master和Slave節(jié)點(diǎn)上的工作任務(wù)信息,并反饋給Master上的數(shù)據(jù) 聚合模塊;(2)所述的Client向所述的Master提交作業(yè)請(qǐng)求并接受反饋;Client可以向 Master發(fā)送監(jiān)控控制指令,提交監(jiān)控作業(yè)。該監(jiān)控控制指令包括兩部分,監(jiān)控腳本和監(jiān)控動(dòng) 作程序。通過提交監(jiān)控作業(yè),Client端用戶可以獲取當(dāng)前分布式系統(tǒng)中所有處于監(jiān)控狀態(tài) 中的節(jié)點(diǎn)的各種信息。所述的各種信息所指為探針插入點(diǎn)處的信息,該信息不僅包括節(jié)點(diǎn) 信息、作業(yè)信息、任務(wù)信息還可包含更為細(xì)節(jié)的程序運(yùn)行信息。(3)所述的Master上包含有響應(yīng)服務(wù)模塊,可以響應(yīng)Client的監(jiān)控控制指令,并 由此向Slave發(fā)送監(jiān)控作業(yè)指令;還包含數(shù)據(jù)聚合模塊,用于對(duì)所有反饋的數(shù)據(jù)信息進(jìn)行 計(jì)算整理;還包含數(shù)據(jù)返回模塊,用于將整理計(jì)算后作業(yè)任務(wù)級(jí)別的任務(wù)信息返回給請(qǐng)求 的Client ;還包含有管理模塊,用于監(jiān)控Slave的工作狀態(tài)。本發(fā)明還可以實(shí)現(xiàn)在集群中所有服務(wù)器上監(jiān)控并記錄反饋關(guān)于數(shù)據(jù)計(jì)算任務(wù)性 能數(shù)據(jù)的方法,包含以下步驟(1)建立數(shù)據(jù)空間供Master將記錄的監(jiān)控?cái)?shù)據(jù)與其他數(shù)據(jù)區(qū)分開,該數(shù)據(jù)空間記 錄關(guān)于正在運(yùn)行作業(yè)任務(wù)的Slave的相關(guān)程序運(yùn)行級(jí)別信息,包括網(wǎng)絡(luò)信息、當(dāng)前任務(wù)信 息、運(yùn)行的線程信息、任務(wù)運(yùn)行的回合數(shù)(Round)以及用戶自定義Key等;(2)從Client向Master發(fā)出監(jiān)控控制指令,要求返回當(dāng)前集群的作業(yè)信息,該結(jié)果基于Master建立的數(shù)據(jù)空間,是對(duì)數(shù)據(jù)空間的較高層次(MapReduce層次的)抽象;(3) Master響應(yīng)Client發(fā)出的請(qǐng)求,判斷該請(qǐng)求是開啟請(qǐng)求還是關(guān)閉請(qǐng)求,如 果是開啟請(qǐng)求,則Master發(fā)送指令給相關(guān)Slave,以激活指定Slave上的探針,并維護(hù)該 Slave的狀態(tài);如果是關(guān)閉請(qǐng)求,則Master將發(fā)送關(guān)閉指令給指定Slave,以關(guān)閉Slave上 的探針;(4) Slave上的監(jiān)控模塊接收Master的指令,獲取并統(tǒng)計(jì)當(dāng)前Slave的作業(yè)信息, 并反饋給Master ;(5)Master確認(rèn)收到有效的Slave反饋的程序運(yùn)行任務(wù)信息,保存在已建立的數(shù) 據(jù)空間中,同時(shí)根據(jù)步驟B中Client發(fā)送的任務(wù)請(qǐng)求,整合數(shù)據(jù)空間中的信息,以請(qǐng)求中的 格式將結(jié)果信息返回給Client ;(6)按照需要,可重復(fù)步驟B-E.其中,Client獲取Master反饋的作業(yè)任務(wù)級(jí)別的信息是可以由Client自定義的, 定義的基礎(chǔ)是建立在Master上的數(shù)據(jù)空間,是Master對(duì)數(shù)據(jù)空間的有效分類和一定程度 的概括。Master對(duì)所有處于監(jiān)控狀態(tài)中的Slave同步和發(fā)布監(jiān)控控制指令,是通過心跳機(jī) 制來實(shí)現(xiàn),即在Slave中包含有一個(gè)定時(shí)器,每過一定的時(shí)間間隔,Slave將使用遠(yuǎn)程調(diào)用 機(jī)制把自身的狀態(tài)信息發(fā)送給Master,而Master在獲取并處理Slave的狀態(tài)信息后,把需 要發(fā)送給Slave的最新監(jiān)控控制指令作為遠(yuǎn)程調(diào)用的返回值發(fā)送給Slave。Master要維護(hù)一個(gè)全局監(jiān)控指令表,該表具有一個(gè)版本標(biāo)簽,Master將所有的指 令(包括已經(jīng)發(fā)送的和尚未發(fā)送的)保存在表內(nèi),對(duì)指令表的變更都會(huì)按時(shí)間先后順序更 改版本標(biāo)簽;Slave通過遠(yuǎn)程調(diào)用(心跳協(xié)議)傳遞的狀態(tài)信息中包含有本地保存的指令 表的版本標(biāo)簽,則Master在接收到Slave的狀態(tài)信息后,將Slave發(fā)送過來版本標(biāo)簽和其 自身的版本標(biāo)簽進(jìn)行比對(duì),若兩者的指令表版本標(biāo)簽一致,則Master將空指令表作為遠(yuǎn)程 調(diào)用的返回值發(fā)送給Slave ;若Master的指令表版本標(biāo)簽較新,則Master將兩版本指令表 的差作為遠(yuǎn)程調(diào)用(心跳協(xié)議)的返回值發(fā)送給Slave。Slave需要保存剛從Master收到 的監(jiān)控指令表,并按照該指令表更新本地指令集。在Slave獲取到其需要監(jiān)控的任務(wù)信息后,將使用遠(yuǎn)程調(diào)用機(jī)制(心跳協(xié)議)把 獲取到的信息發(fā)送給MastenMaster在收到信息后將保存在數(shù)據(jù)空間中;在Master整合計(jì) 算出作業(yè)任務(wù)信息后,同樣使用遠(yuǎn)程調(diào)用機(jī)制把信息發(fā)送給Client。所有運(yùn)行在Slave上 的探針僅獲取作業(yè)任務(wù)的相關(guān)信息,不能對(duì)其進(jìn)行修改,因此,探針不會(huì)對(duì)作業(yè)任務(wù)的運(yùn)行 結(jié)果產(chǎn)生影響;探針的開啟關(guān)閉操作獨(dú)立于Slave的作業(yè)任務(wù)運(yùn)行,因此探針可以動(dòng)態(tài)地 運(yùn)行,即可以按需進(jìn)行開啟關(guān)閉等操作;當(dāng)探針處于開啟狀態(tài)時(shí),探針激活后執(zhí)行用戶指定 行為,獲取信息并將其返回,當(dāng)探針處于關(guān)閉狀態(tài)時(shí),探針不再獲取信息也不會(huì)獲得執(zhí)行權(quán) 限;探針中所執(zhí)行的用戶行為,不得包括循環(huán)、IO訪問等耗時(shí)和耗資源的行為,探針拋出的 異常會(huì)被探針的處理模塊完全處理,而不會(huì)繼續(xù)拋出。本發(fā)明中探針(ftObe)安裝在整個(gè)Hadoop系統(tǒng)里與MapReduce作業(yè)相關(guān)的方法 處,作業(yè)處的內(nèi)部數(shù)據(jù)被暴露給探針代碼。探針激活時(shí),用戶即可實(shí)時(shí)獲取MapReduce作業(yè) 的Cluster,Job, Task, Thread, Round, UserKey等狀態(tài)數(shù)據(jù),并按類別記錄這些數(shù)據(jù),用于 提交返回。探針收集到的數(shù)據(jù)提交給Master的數(shù)據(jù)聚合模塊,該模塊將原始數(shù)據(jù)進(jìn)行進(jìn)一 步的整理(包括分類和劃分等),并將最終結(jié)果返回給Client.
從上,本發(fā)明得到一種能夠有效的對(duì)運(yùn)行MapReduce作業(yè)的Hadoop集群進(jìn)行監(jiān) 控的方法,該方法能夠準(zhǔn)確的按照使用者的需求搜集運(yùn)行在各個(gè)機(jī)器上的MapReduce作業(yè) 的工作信息,并將這些信息進(jìn)行抽象和對(duì)應(yīng),最終抽象為MapReduce層級(jí)的數(shù)據(jù)提供給使 用者,使用者可以根據(jù)需要隨時(shí)啟動(dòng)、停止任意的監(jiān)控行為,并且根據(jù)這些信息有效掌握 Hadoop集群的運(yùn)行狀態(tài)。靈活的監(jiān)控系統(tǒng)主要是指本系統(tǒng)允許用戶隨時(shí)提交監(jiān)控腳本,該 腳本包括了用戶需要監(jiān)控的行為點(diǎn)、匹配條件以及行為及條件匹配時(shí)需要執(zhí)行的動(dòng)作。腳 本一旦提交,該項(xiàng)監(jiān)控就自動(dòng)啟動(dòng),用戶退出該監(jiān)控時(shí),系統(tǒng)監(jiān)控行為就停止。為了減少監(jiān)控對(duì)生產(chǎn)環(huán)境下的Hadoop集群性能的影響,在沒有用戶提交監(jiān)控腳 本的情況下,系統(tǒng)中不存在任何監(jiān)控行為,本監(jiān)控框架對(duì)系統(tǒng)的影響非常小。用戶可以監(jiān)控 的行為點(diǎn),是本發(fā)明的重要部分。通過對(duì)Hadoop和MapReduce系統(tǒng)的分析,本發(fā)明提出了 Hadoop系統(tǒng)中的重要監(jiān)控行為點(diǎn)即MapReduce行為相關(guān)的方法的入口和出口點(diǎn)。用戶在監(jiān)控的行為點(diǎn)可以指定匹配條件,行為點(diǎn)處的變量被暴露給用戶腳本,用 戶可以利用這些變量進(jìn)行匹配,來選擇是否激活指定的動(dòng)作。用戶腳本中指定的動(dòng)作是 Java類中所定義的行為,該行為只能使用Java語言的一個(gè)子集實(shí)現(xiàn)。不能使用循環(huán)、IO等 行為。這有助于限制用戶動(dòng)作的執(zhí)行時(shí)間和占用的資源。用戶編寫動(dòng)作程序可以使用本發(fā)明所提供的數(shù)據(jù)搜集類,該類幫助用戶對(duì)其所搜 集到的數(shù)據(jù)進(jìn)行歸總。在線的監(jiān)控系統(tǒng)主要是指本系統(tǒng)允許用戶隨時(shí)提交、開始、停止監(jiān)控 行為而不會(huì)影響Hadoop集群的正常執(zhí)行。用戶可以通過監(jiān)控腳本,指明所要監(jiān)控的任務(wù)。這個(gè)監(jiān)控行為的開始和停止,不會(huì) 影響所監(jiān)控的任務(wù)的執(zhí)行。監(jiān)控腳本提交到集群中后,將根據(jù)腳本所指,將監(jiān)控行為點(diǎn)數(shù)據(jù) 發(fā)送到集群中所有相關(guān)服務(wù)器中。本地服務(wù)器將激活監(jiān)控行為點(diǎn),相關(guān)數(shù)據(jù)存放在運(yùn)行時(shí) 環(huán)境中。作業(yè)執(zhí)行的過程中,在監(jiān)控行為點(diǎn)處會(huì)檢查該點(diǎn)是否已經(jīng)激活,若激活則執(zhí)行用戶 指定行為。用戶隨時(shí)可以停止監(jiān)控腳本執(zhí)行,停止行為發(fā)送到集群中相關(guān)服務(wù)器中,本地服 務(wù)器收到該消息后,將關(guān)閉該監(jiān)控行為點(diǎn)。作業(yè)執(zhí)行過程中,在監(jiān)控行為點(diǎn)處發(fā)現(xiàn)并未激 活,則不會(huì)執(zhí)行任何用戶行為。本發(fā)明可以允許精確搜集到用戶指定的數(shù)據(jù),本系統(tǒng)允許用 戶根據(jù)所需明確的指定需要搜集的數(shù)據(jù)。用戶所搜集的數(shù)據(jù)都是來源于用戶行為。在監(jiān)控行為點(diǎn),本發(fā)明將Hadoop內(nèi)部的數(shù)據(jù)暴露給用戶行為程序。本發(fā)明提供一 個(gè)InstrumentCollection類庫為用戶行為中使用。用戶可以將任意行為程序中獲得的數(shù) 據(jù)通過本類庫搜集。該類庫將用戶數(shù)據(jù)按照時(shí)空進(jìn)行分類,分為集群、作業(yè)、任務(wù)、線程、輪、 用戶Key。相同時(shí)空的數(shù)據(jù)會(huì)在服務(wù)器端進(jìn)行整合。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下顯著的優(yōu)點(diǎn)本發(fā)明的系統(tǒng)能有效地對(duì)分布式計(jì)算網(wǎng)絡(luò)MapReduce的任務(wù)進(jìn)度等數(shù)據(jù)進(jìn)行有 效地監(jiān)控,且能實(shí)時(shí)準(zhǔn)確地獲取監(jiān)控結(jié)果,并在不影響作業(yè)執(zhí)行的前提下實(shí)現(xiàn)了獨(dú)立的動(dòng) 態(tài)開關(guān)。具體說來,包括1.動(dòng)態(tài)。本發(fā)明允許用戶在生產(chǎn)環(huán)境下的運(yùn)行著的Hadoop集群上增加、刪除、修 改它們的監(jiān)控請(qǐng)求,不會(huì)影響到集群的執(zhí)行和集群中作業(yè)的執(zhí)行。2.在線。任何用戶的行為都不會(huì)打斷當(dāng)前正在執(zhí)行的Hadoop作業(yè)或者任務(wù),也不 會(huì)對(duì)集群的運(yùn)行狀態(tài)產(chǎn)生影響。
3.用戶自定義監(jiān)控和行為。本發(fā)明允許用戶自定義監(jiān)控的系統(tǒng)行為,并且在監(jiān)控 動(dòng)作點(diǎn)激活的情況狂下調(diào)用用戶自定義的行為。用戶的自定義行為受到嚴(yán)格的限制。4. MapReduce層次的抽象。本發(fā)明通過向Hadoop代碼中插入監(jiān)控點(diǎn)的方法來加入 監(jiān)控行為點(diǎn)。這些監(jiān)控點(diǎn)都加在MapReduce層級(jí)事件處。基于這些監(jiān)控點(diǎn),得到的數(shù)據(jù)是 MapReduce層次的數(shù)據(jù)。5.對(duì)Hadoop系統(tǒng)影響小。本發(fā)明使用源代碼級(jí)別的本地監(jiān)控,在監(jiān)控點(diǎn)未激活的 情況下,每一個(gè)監(jiān)控點(diǎn)對(duì)系統(tǒng)的負(fù)荷為一條Java語句。而在監(jiān)控點(diǎn)激活的情況下,由于本 發(fā)明限制了用戶行為,對(duì)系統(tǒng)執(zhí)行的影響也被限制在一個(gè)可控的范圍內(nèi)。


下面結(jié)合附圖及實(shí)施例對(duì)本發(fā)明作進(jìn)一步描述圖1是本發(fā)明基于Hadoop集群的分布式監(jiān)控系統(tǒng)的架構(gòu)示意圖。圖2是本發(fā)明基于Hadoop集群的分布式監(jiān)控方法的工作流程圖;其中按照 Hadoop集群的概念共分為3個(gè)模塊,Client端、Master端和Slave端。圖3是本發(fā)明的本地監(jiān)控的流程圖。
具體實(shí)施例方式上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段, 并可依照說明書的內(nèi)容予以實(shí)施,以下結(jié)合具體實(shí)施例對(duì)上述方案做進(jìn)一步說明。應(yīng)理解, 這些實(shí)施例是用于說明本發(fā)明而不限于限制本發(fā)明的范圍。實(shí)施例如圖1所示是本發(fā)明基于Hadoop集群的分布式監(jiān)控系統(tǒng)的架構(gòu)示意圖。包含了 一個(gè)或者多個(gè)Client節(jié)點(diǎn),一個(gè)Master節(jié)點(diǎn),多個(gè)Slave節(jié)點(diǎn)。其中Master節(jié)點(diǎn)對(duì)應(yīng)著 Hadoop后臺(tái)系統(tǒng)中的Master節(jié)點(diǎn),Slave節(jié)點(diǎn)對(duì)應(yīng)著Hadoop中的多個(gè)Slave節(jié)點(diǎn),Client 節(jié)點(diǎn)是集群允許的監(jiān)控提交服務(wù)器。每一臺(tái)Client節(jié)點(diǎn)服務(wù)器上所需要的模塊如下1、ProbeClient 模塊用戶通過ftObeClient模塊提交監(jiān)控,其是本發(fā)明中任務(wù)提交模塊的重要組成部 分。用戶在本發(fā)明的框架下進(jìn)行系統(tǒng)監(jiān)控至少需要提供兩個(gè)文件,一個(gè)腳本文件probe, xml,其格式和Hadoop本身的配置腳本完全相同。該腳本指明了本次監(jiān)控的監(jiān)控點(diǎn)以及監(jiān) 控點(diǎn)激活時(shí)觸發(fā)的動(dòng)作。另一個(gè)文件為jar包文件,其中定義了激活觸發(fā)的動(dòng)作。配置文件(probe, xml)和動(dòng)作文件(action, jar)在本模塊中被上傳到Hadoop的 分布式文件系統(tǒng)(HDFS)中,可供集群內(nèi)的任意服務(wù)器訪問。2、ProbeProtocol 通訊接口用戶通過Client端的ProbeClient模塊提交監(jiān)控,該行為通過ftObeProtocol協(xié) 議傳送給Master節(jié)點(diǎn)。并且通過該協(xié)議得到來自Master搜集處理后的監(jiān)控?cái)?shù)據(jù)。本發(fā)明的Master節(jié)點(diǎn)根據(jù)具體的實(shí)際需要,包括1、響應(yīng)服務(wù)模塊(Master模塊)響應(yīng)服務(wù)模塊和Hadoop本身的JobTracker模塊一起啟動(dòng),僅僅運(yùn)行在Master節(jié)點(diǎn)上。來自Client端的監(jiān)控請(qǐng)求到達(dá)后,通過管理模塊管理這個(gè)監(jiān)控請(qǐng)求,并且從HDFS中 讀出用戶提交的兩個(gè)文件,放入本地工作目錄。2、管理模塊(ftObeManager 模塊)管理模塊用于分發(fā)同步用戶的監(jiān)控請(qǐng)求。Hadoop系統(tǒng)本身采用心跳協(xié)議來維持集 群中Slave和Master之間的通訊,本發(fā)明利用該協(xié)議分發(fā)、同步用戶的監(jiān)控請(qǐng)求。本發(fā)明 采用基于版本號(hào)的分發(fā)方案,減少了無效數(shù)據(jù)的傳輸。本發(fā)明采用傳差的同步方案,進(jìn)一步 減少了冗余數(shù)據(jù)的傳輸。3、數(shù)據(jù)聚合模塊(InstrumentCollect 模塊)該模塊是數(shù)據(jù)搜集的核心模塊。用戶在動(dòng)作代碼中利用該模塊進(jìn)行數(shù)據(jù)搜集,因 此該模塊運(yùn)行于Hadoop集群的所有服務(wù)器中。數(shù)據(jù)寫入時(shí),按照{(diào)集群,作業(yè),任務(wù),線程,輪,用戶Key}進(jìn)行聚類。數(shù)據(jù)搜集以 心跳協(xié)議為周期進(jìn)行聚合。數(shù)據(jù)聚合到Master節(jié)點(diǎn)。由ContextR印ort模塊進(jìn)行處理。4、數(shù)據(jù)返回模塊(ContextR印ort模塊)該模塊收集所有節(jié)點(diǎn)上InstrumentCollect模塊發(fā)送的數(shù)據(jù),聚類后生成可讀結(jié) 果,通過 ProbeProtocl 發(fā)送給 Client。Slave節(jié)點(diǎn)內(nèi)設(shè)置有監(jiān)控作業(yè)模塊(LocaUnstrument模塊),該模塊是本發(fā)明中進(jìn)行本地監(jiān)控的重要 模塊。首先本發(fā)明對(duì)Hadoop代碼中與MapReduce任務(wù)執(zhí)行相關(guān)的方法進(jìn)行編號(hào),并將方 法的完整名(包括包名)和該編號(hào)的對(duì)應(yīng)關(guān)系記錄下來。用戶在指定監(jiān)控點(diǎn)時(shí),所使用的 為監(jiān)控點(diǎn)的全名,而在本模塊中會(huì)自動(dòng)轉(zhuǎn)化為編號(hào),加快執(zhí)行速度。然后,在Hadoop中需要插入監(jiān)控點(diǎn)的地方插入樁代碼。樁代碼可以采用ASM等庫 直接插入到字節(jié)碼中,也可以以源代碼的形式插入到Hadoop代碼中。本發(fā)明采用源代碼修 改的方式插入到Hadoop代碼中。樁代碼的主要功能就是檢查詢問本地的ftObeManager模 塊,是否存在編號(hào)為本方法的監(jiān)控任務(wù)。如果沒有,則繼續(xù)執(zhí)行Hadoop的原代碼。如果有,意味著此監(jiān)控點(diǎn)被激活,通過查詢ftObeManager,獲取需要執(zhí)行的動(dòng)作 類。實(shí)例化,并且執(zhí)行該動(dòng)作。圖2是一個(gè)完整的用戶監(jiān)控的流程示意圖。1.用戶使用本架構(gòu)進(jìn)行監(jiān)控,需指定一個(gè)xml的配置文件,文件中需指定用戶行 為類的打包文件,以及指定動(dòng)作所指定的打包文件中的類名。本工具將用戶文件上傳到 Hadoop的分布式文件系統(tǒng)HDFS中。2.上傳完成后,讀取XML文件,構(gòu)建一個(gè)新的監(jiān)控對(duì)象,并使用ftObeProtocol接 口提交該監(jiān)控對(duì)象。由圖中可見,Client和Master之間通過一個(gè)雙工的RPC接口通訊。提 交完本監(jiān)控對(duì)象后,Client端進(jìn)程在本地掛起,輪詢Master的回傳數(shù)據(jù),暫停IOs進(jìn)行一 次輪詢,直到用戶手動(dòng)結(jié)束本次監(jiān)控。3. Master接收到來自Client端的請(qǐng)求,首先判斷該請(qǐng)求是新建一個(gè)監(jiān)控還 是結(jié)束已有監(jiān)控。如果是新建監(jiān)控任務(wù),則根據(jù)Client端傳來的監(jiān)控,讀出HDFS中 的XML配置和動(dòng)作文件,存放在本地的工作目錄中。緊接著就加載用戶動(dòng)作文件,并且 利用ProbeManager模塊新建調(diào)試。如果收到來自Cl ient端的停止監(jiān)控的請(qǐng)求,則從ProbeManager中刪除該監(jiān)控。最后增加I^robeManager的版本號(hào)。4.由圖中可知,Slave節(jié)點(diǎn)通過心跳協(xié)議訪問Master。訪問中會(huì)加上Slave節(jié)點(diǎn) 當(dāng)前的ftObeManager的版本號(hào)。Master在收到該版本號(hào)后進(jìn)行比較。若Master節(jié)點(diǎn)的版 本號(hào)較新,則根據(jù)Master節(jié)點(diǎn)的版本號(hào)歷史,傳送兩個(gè)版本號(hào)的差給Slave節(jié)點(diǎn)。5. Slave節(jié)點(diǎn)在收到來自Master的心跳回復(fù)后,判斷ftx)beManager是否由更新。 若有更新,則接收新的監(jiān)控對(duì)象,讀出XML配置文件,下載動(dòng)作文件到本地,并加載之,通過 ProbeManger加載新的監(jiān)控,更新ftObeManger的版本號(hào)到最新版本。上文描述了一個(gè)用戶監(jiān)控行為在本發(fā)明的架構(gòu)中執(zhí)行的流程圖。圖3描述了用戶 的監(jiān)控行為是如何被觸發(fā)的。在正常的Hadoop代碼的執(zhí)行流中,必然會(huì)進(jìn)入到本發(fā)明插入到Hadoop源代碼的 樁入口中,進(jìn)入樁函數(shù),需要判斷本地的ftObeManager中是否有已經(jīng)激活的此樁入口。如 果沒有,繼續(xù)回到正常的Hadoop代碼執(zhí)行流中。如果有,則加載XML文件中指定的用戶動(dòng) 作,并執(zhí)行之。執(zhí)行完成之后還是回到正常的Hadoop代碼執(zhí)行流中。上述實(shí)例只為說明本發(fā)明的技術(shù)構(gòu)思及特點(diǎn),其目的在于讓熟悉此項(xiàng)技術(shù)的人是 能夠了解本發(fā)明的內(nèi)容并據(jù)以實(shí)施,并不能以此限制本發(fā)明的保護(hù)范圍。凡根據(jù)本發(fā)明精 神實(shí)質(zhì)所做的等效變換或修飾,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種基于Hadoop集群的分布式監(jiān)控系統(tǒng),包括客戶端Client、主控計(jì)算機(jī)Master 和從屬計(jì)算機(jī)Slave,其特征在于所述系統(tǒng)中主控計(jì)算機(jī)Master和從屬計(jì)算機(jī)Slave基于 Hadoop集群的MapReduce框架構(gòu)建,所述客戶端Client負(fù)責(zé)向主控計(jì)算機(jī)Master提交監(jiān) 控作業(yè)請(qǐng)求;所述主控計(jì)算機(jī)Master響應(yīng)監(jiān)控作業(yè)請(qǐng)求后,將監(jiān)控作業(yè)進(jìn)行劃分后分配給 從屬計(jì)算機(jī)Slave獨(dú)立完成;所述從屬計(jì)算機(jī)Slave負(fù)責(zé)完成獨(dú)立的監(jiān)控作業(yè)任務(wù)后,將其 結(jié)果通過主控計(jì)算機(jī)Master進(jìn)行整合后回傳數(shù)據(jù)給客戶端Client。
2.根據(jù)權(quán)利要求1所述的基于Hadoop集群的分布式監(jiān)控系統(tǒng),其特征在于所述主控計(jì) 算機(jī)Master設(shè)置有響應(yīng)服務(wù)模塊、數(shù)據(jù)聚合模塊、數(shù)據(jù)返回模塊和管理模塊;所述響應(yīng)服 務(wù)模塊負(fù)責(zé)響應(yīng)Client的監(jiān)控控制指令,并由此向Slave發(fā)送監(jiān)控作業(yè)指令;所述數(shù)據(jù)聚 合模塊用于對(duì)所有反饋的數(shù)據(jù)信息進(jìn)行計(jì)算整合;所述數(shù)據(jù)返回模塊用于將整理計(jì)算后作 業(yè)任務(wù)級(jí)別的任務(wù)信息返回給請(qǐng)求的Client ;所述管理模塊用于監(jiān)控Slave的工作狀態(tài)。
3.根據(jù)權(quán)利要求2所述的基于Hadoop集群的分布式監(jiān)控系統(tǒng),其特征在于所述從屬計(jì) 算機(jī)Slave設(shè)置監(jiān)控作業(yè)模塊,所述監(jiān)控作業(yè)模塊用于根據(jù)主控計(jì)算機(jī)Master進(jìn)行監(jiān)控作 業(yè),并將監(jiān)控作業(yè)結(jié)果反饋給主控計(jì)算機(jī)Master進(jìn)行整合;所述主控計(jì)算機(jī)Master與從屬 計(jì)算機(jī)Slave間通過心跳協(xié)議維持分發(fā)、同步用戶的監(jiān)控作業(yè)請(qǐng)求。
4.根據(jù)權(quán)利要求3所述的基于Hadoop集群的分布式監(jiān)控系統(tǒng),其特征在于所述Slave 和Master上均設(shè)置有本地監(jiān)控入口探針ftxAe,所述探針Probe根據(jù)Master的監(jiān)控作業(yè)指 令啟閉,獲取當(dāng)前集群中Master和Slave節(jié)點(diǎn)上的工作任務(wù)信息,并反饋給Master上的數(shù) 據(jù)聚合模塊。
5.根據(jù)權(quán)利要求3所述的基于Hadoop集群的分布式監(jiān)控系統(tǒng),其特征在于所述客戶端 Client設(shè)置有預(yù)定義的監(jiān)控腳本和監(jiān)控行為程序,所述客戶端Client和Master通訊獲取 當(dāng)前集群中所有處于監(jiān)控狀態(tài)的節(jié)點(diǎn)的探針插入點(diǎn)處的信息。
6.一種基于Hadoop集群的分布式監(jiān)控方法,其特征在于所述方法包括以下步驟(1)Master建立用于隔離待記錄的監(jiān)控?cái)?shù)據(jù)與其他數(shù)據(jù)的數(shù)據(jù)空間后監(jiān)聽Client的 監(jiān)聽作業(yè)請(qǐng)求;(2)Client向Master發(fā)出監(jiān)控控制指令,要求返回當(dāng)前集群的作業(yè)信息;Master響應(yīng) Client發(fā)出的請(qǐng)求,判斷該請(qǐng)求是開啟請(qǐng)求還是關(guān)閉請(qǐng)求;如果是開啟請(qǐng)求,則Master發(fā) 送指令給相關(guān)Slave,以激活指定Slave上的探針,并維護(hù)該Slave的狀態(tài);如果是關(guān)閉請(qǐng) 求,則Master將發(fā)送關(guān)閉指令給指定Slave,以關(guān)閉Slave上的探針;(3)Slave上的監(jiān)控作業(yè)模塊接收Master的指令,獲取并統(tǒng)計(jì)當(dāng)前Slave的作業(yè)信息, 并反饋給Master ;(4)Master確認(rèn)收到有效的Slave反饋的程序運(yùn)行任務(wù)信息,保存在已建立的數(shù)據(jù)空 間中,同時(shí)根據(jù)Client發(fā)送的監(jiān)控作業(yè)請(qǐng)求,整合數(shù)據(jù)空間中的信息,以請(qǐng)求中的格式將 結(jié)果信息返回給Client ;根據(jù)監(jiān)控作業(yè)請(qǐng)求繼續(xù)循環(huán)監(jiān)控。
7.根據(jù)權(quán)利要求6所述的監(jiān)控方法,其特征在于所述方法步驟(2)中Master通過心跳 機(jī)制對(duì)所有處于監(jiān)控狀態(tài)中的Slave同步和發(fā)布監(jiān)控控制指令;所述Slave周期性通過遠(yuǎn) 程調(diào)用機(jī)制把自身的狀態(tài)信息發(fā)送給Master,Master在獲取并處理Slave的狀態(tài)信息后, 將需要發(fā)送給Slave的最新監(jiān)控控制指令狀態(tài)作為遠(yuǎn)程調(diào)用的返回值發(fā)送給Slave。
8.根據(jù)權(quán)利要求7所述的監(jiān)控方法,其特征在于所述方法中Master數(shù)據(jù)空間內(nèi)維護(hù)全局監(jiān)控指令表,所述全局監(jiān)控指令表存儲(chǔ)所有Client遞交的監(jiān)控作業(yè)指令,并根據(jù)指令的 時(shí)間先后順序更改監(jiān)控作業(yè)指令的版本信息;Slave通過遠(yuǎn)程調(diào)用協(xié)議傳遞的狀態(tài)信息中 包含有本地保存的指令表的版本標(biāo)簽,Master在接收到Slave的狀態(tài)信息后,將Slave發(fā) 送過來版本標(biāo)簽和其自身的版本標(biāo)簽進(jìn)行比對(duì);若兩者的指令表版本標(biāo)簽一致,則Master 將空指令表作為遠(yuǎn)程調(diào)用的返回值發(fā)送給Slave ;若Master的指令表版本標(biāo)簽較新,則 Master將兩版本指令表的差作為遠(yuǎn)程調(diào)用的返回值發(fā)送給Slave ;Slave保存從Master收 到的監(jiān)控指令表,并按照該指令表更新本地指令集。
9.根據(jù)權(quán)利要求6所述的監(jiān)控方法,其特征在于所述方法中探針Probe設(shè)置在Hadoop 集群系統(tǒng)內(nèi)與MapReduce作業(yè)相關(guān)的方法中,MapReduce作業(yè)的內(nèi)部數(shù)據(jù)為探針?biāo)O(jiān)控;探 針激活時(shí)探針實(shí)時(shí)獲取 MapReduce 作業(yè)的 Cluster、Job、Task、Thread、Round、UserKey 狀 態(tài)數(shù)據(jù),并記錄后提交返回。
10.根據(jù)權(quán)利要求6所述的監(jiān)控方法,其特征在于所述方法步驟(4)中Master返回給 Client的監(jiān)控作業(yè)的級(jí)別由Client自定義。
全文摘要
本發(fā)明公開了一種基于Hadoop集群的分布式監(jiān)控系統(tǒng)及其監(jiān)控方法,該系統(tǒng)包括客戶端Client、主控計(jì)算機(jī)Master和從屬計(jì)算機(jī)Slave,其特征在于所述系統(tǒng)中主控計(jì)算機(jī)Master和從屬計(jì)算機(jī)Slave基于Hadoop集群的MapReduce框架構(gòu)建,所述客戶端Client負(fù)責(zé)向主控計(jì)算機(jī)Master提交監(jiān)控作業(yè)請(qǐng)求;所述主控計(jì)算機(jī)Master響應(yīng)監(jiān)控作業(yè)請(qǐng)求后,將監(jiān)控作業(yè)進(jìn)行劃分后分配給從屬計(jì)算機(jī)Slave獨(dú)立完成;所述從屬計(jì)算機(jī)Slave負(fù)責(zé)完成獨(dú)立的監(jiān)控作業(yè)任務(wù)后,將其結(jié)果通過主控計(jì)算機(jī)Master進(jìn)行整合后回傳數(shù)據(jù)給客戶端Client。本發(fā)明能有效地對(duì)分布式計(jì)算網(wǎng)絡(luò)MapReduce的任務(wù)進(jìn)度等數(shù)據(jù)進(jìn)行有效地監(jiān)控,且能實(shí)時(shí)準(zhǔn)確地獲取監(jiān)控結(jié)果,并在不影響作業(yè)執(zhí)行的前提下實(shí)現(xiàn)了獨(dú)立的動(dòng)態(tài)開關(guān)。
文檔編號(hào)H04L29/08GK102130950SQ201110060308
公開日2011年7月20日 申請(qǐng)日期2011年3月14日 優(yōu)先權(quán)日2011年3月14日
發(fā)明者代棟, 呂松武, 周學(xué)海, 孫明明, 楊峰, 陳濤 申請(qǐng)人:中國科學(xué)技術(shù)大學(xué)蘇州研究院
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1