一種基于MapReduce的監(jiān)控?cái)?shù)據(jù)優(yōu)先預(yù)取處理方法
【專利摘要】本發(fā)明涉及一種基于MapReduce的監(jiān)控?cái)?shù)據(jù)優(yōu)先預(yù)取處理方法,屬于軟件工程【技術(shù)領(lǐng)域】。本發(fā)明在原有電網(wǎng)監(jiān)控系統(tǒng)的基礎(chǔ)上改變客戶\服務(wù)器模式,采用MapReduce對(duì)監(jiān)控?cái)?shù)據(jù)量進(jìn)行處理,通過對(duì)資源數(shù)據(jù)的預(yù)取,將數(shù)據(jù)集經(jīng)過節(jié)點(diǎn)預(yù)選找到空閑節(jié)點(diǎn)作為候選工作計(jì)算節(jié)點(diǎn),再通過任務(wù)預(yù)選,預(yù)先選出待預(yù)取的map任務(wù),綜合前兩個(gè)預(yù)選完成數(shù)據(jù)的優(yōu)先預(yù)選,提高了系統(tǒng)的運(yùn)行效率,并且利用該方法可以實(shí)現(xiàn)方便、靈活的拓展,而不需要對(duì)原有的系統(tǒng)進(jìn)行改造,在使用的便利性上也有了很大的進(jìn)步。
【專利說明】-種基于MapReduce的監(jiān)控?cái)?shù)據(jù)優(yōu)先預(yù)取處理方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種基于MapRe化Ce的監(jiān)控?cái)?shù)據(jù)優(yōu)先預(yù)取處理方法,屬于軟件工程技 術(shù)領(lǐng)域。
【背景技術(shù)】
[0002] 隨著分布式電源,微電網(wǎng)的發(fā)展,在電網(wǎng)監(jiān)控系統(tǒng)中需要接入的設(shè)備數(shù)量W及需 要監(jiān)測的量測數(shù)據(jù)將爆發(fā)式的增長,伴隨智能化需求的增多,電網(wǎng)監(jiān)控系統(tǒng)需要采集存儲(chǔ) 的數(shù)據(jù)量也將急劇增多,數(shù)據(jù)流的快速存儲(chǔ)和處理分析能力在傳統(tǒng)的客戶\服務(wù)器加數(shù)據(jù) 庫技術(shù)方式下面臨著存儲(chǔ)容量不足,數(shù)據(jù)處理效率低下等問題。
【發(fā)明內(nèi)容】
[0003] 本發(fā)明的目的是提供一種基于MapReduce的監(jiān)控?cái)?shù)據(jù)優(yōu)先預(yù)取處理方法,
[0004] W解決現(xiàn)有MapRe化Ce方法效率低、在電網(wǎng)監(jiān)控系統(tǒng)中由于監(jiān)控?cái)?shù)據(jù)急劇增加導(dǎo) 致監(jiān)控?cái)?shù)據(jù)流處理能力不足的問題。
[0005] 本發(fā)明為解決上述技術(shù)問題而提供一種基于MapRe化Ce的監(jiān)控?cái)?shù)據(jù)優(yōu)先預(yù)取處 理方法,該處理方法包括W下步驟:
[000引1)構(gòu)建化doop分布式系統(tǒng),包括主節(jié)點(diǎn)和從節(jié)點(diǎn),主節(jié)點(diǎn)和從節(jié)點(diǎn)上均安裝JDK 和化doop軟件,并添加有JAVA環(huán)境變量;
[0007] 2)將數(shù)據(jù)集進(jìn)行節(jié)點(diǎn)預(yù)選找到空閑節(jié)點(diǎn)作為候選工作計(jì)算節(jié)點(diǎn);
[0008] 3)在確定候選計(jì)算節(jié)點(diǎn)集之后,在預(yù)先選出待預(yù)取的map任務(wù);
[0009] 4)根據(jù)篩選出的候選節(jié)點(diǎn)和待預(yù)取map任務(wù)對(duì)數(shù)據(jù)進(jìn)行預(yù)取。
[0010] 所述步驟1)中主節(jié)點(diǎn)和從節(jié)點(diǎn)計(jì)算機(jī)安裝化doop軟件時(shí),需對(duì)Conf目錄下的6 個(gè)核也配置文件進(jìn)行相應(yīng)配置,該6個(gè)配置文件分別是hadoop-env. sh、core-site, xml、 mapred-site. xml、hdfs-site. xml、masters 和 slaves 文件。
[0011] 所述hadoop-env. sh文件用于配置所使用的JDK版本及所處位置;core-site, xml文件用于配置皿FS文件系統(tǒng)的名稱、訪問入口地址及端口信息;mapred-site. xml文 件用于配置化bTracker的入口地址及端口;h壯S-Site. xml文件用于配置皿FS副本數(shù);而 masters和slaves文件分別用于指定主節(jié)點(diǎn)和從節(jié)點(diǎn)所對(duì)應(yīng)的機(jī)器。
[001引所述主節(jié)點(diǎn)主要負(fù)責(zé)化doop兩個(gè)關(guān)鍵功能模塊皿FS、MapRe化Ce的監(jiān)督,當(dāng) 化bTracker使用MapRe化Ce進(jìn)行監(jiān)控和調(diào)度數(shù)據(jù)的并行處理時(shí),NameNode則負(fù)責(zé)皿FS監(jiān) 視和調(diào)度,從節(jié)點(diǎn)負(fù)責(zé)機(jī)器運(yùn)行的絕大部分,擔(dān)當(dāng)所有數(shù)據(jù)儲(chǔ)存和指令計(jì)算,每個(gè)從節(jié)點(diǎn)既 扮演者數(shù)據(jù)節(jié)點(diǎn)的角色又承擔(dān)與它們主節(jié)點(diǎn)通信的守護(hù)進(jìn)程。
[0013] 所述步驟2)如果在選中的候選節(jié)點(diǎn)上進(jìn)行資源預(yù)取操作,需要保證在當(dāng)前正在 運(yùn)行的任務(wù)結(jié)束之前就完成預(yù)取。
[0014] 所述步驟2)中節(jié)點(diǎn)預(yù)選的具體過程如下:
[0015] (a)利用計(jì)算節(jié)點(diǎn)上當(dāng)前正在運(yùn)行任務(wù)的執(zhí)行進(jìn)度來推測其最大剩余執(zhí)行時(shí)間 estimatedLeftTime ;
[0016] (b)根據(jù)網(wǎng)絡(luò)設(shè)備的理論傳輸速率計(jì)算出節(jié)點(diǎn)間傳輸一個(gè)文件塊所需要的時(shí)間 timePerBlock ;
[0017] (C)依據(jù)正在該節(jié)點(diǎn)上運(yùn)行的任務(wù)中存在剩余完成時(shí)間小于傳輸一個(gè)數(shù)據(jù)塊所需 時(shí)間的map任務(wù),判斷該節(jié)點(diǎn)馬上就會(huì)釋放忙碌計(jì)算槽(slots),意味著在預(yù)取完成之前此 計(jì)算節(jié)點(diǎn)就會(huì)變?yōu)榭臻e節(jié)點(diǎn),無需再執(zhí)行后續(xù)的預(yù)取操作;
[0018] (d)對(duì)節(jié)點(diǎn)上每個(gè)map任務(wù)的剩余完成時(shí)間estimate化eftTime與節(jié)點(diǎn)間傳輸一 個(gè)文件塊所需時(shí)間進(jìn)行比較,若計(jì)算節(jié)點(diǎn)存在estimate化eftTime<time化巧lock的map 任務(wù),則退出本次預(yù)取操作;反之,貝Ij選取estimate化eftTime<time化;rBlock的計(jì)算節(jié)點(diǎn) 加入candidateTTs集合中,作為候選節(jié)點(diǎn)的備選集。
[0019] 所述步驟3)中任務(wù)預(yù)選的過程如下:
[0020] a.讀取最新的candidateTTs列表,并從中選取排列在第一位的化skTracker,即 接下來最有可能釋放忙碌計(jì)算槽(slots)且可在其釋放前有充足時(shí)間完成預(yù)取操作的計(jì) 算節(jié)點(diǎn),作為待進(jìn)行預(yù)取操作的候選節(jié)點(diǎn),記為targetTT ;
[0021] b.如果集合不為空,則對(duì)其中失敗次數(shù)最多的任務(wù)嚴(yán)格按其相對(duì)于步驟a中選出 的數(shù)據(jù)本地性進(jìn)行篩選,如果為node-local任務(wù),則中斷整個(gè)算法的執(zhí)行,反之,則選擇該 失敗次數(shù)最多的任務(wù)作為候選map任務(wù),記為toPrefetchMap ;
[0022] C.如果執(zhí)行完步驟b W后toPrefetchMap仍為空,則查詢當(dāng)前隊(duì)列中正在運(yùn)行 的作業(yè)是否還有剩余map任務(wù)沒有完成,即nonRunningMapCache是否不為空,為空則從中 嚴(yán)格按照本地性策略依次查找關(guān)于targetTT節(jié)點(diǎn)本地性分別為node-local、rack-local 和off-switch的map任務(wù),若nonRunningMap化che中尚存在關(guān)于targetTT節(jié)點(diǎn)為 node-local級(jí)別本地性的任務(wù),貝Ij退出本次預(yù)取操作;否則,從nonRunningMap化che中依 次優(yōu)先選擇一個(gè)rack-local或off-switch級(jí)別任務(wù)作為toPrefetchMap。
[0023] 所述步驟4)中數(shù)據(jù)預(yù)取的具體過程如下:
[0024] A.從toPrefetchMap任務(wù)對(duì)應(yīng)的化sklnProgress對(duì)象中讀取相應(yīng)元數(shù)據(jù)信息,獲 取輸入數(shù)據(jù)所在位置,W確定候選源節(jié)點(diǎn),記為SOiirceTTs ;
[00巧]B.通過讀取conf目錄下的topology, data文件,獲取當(dāng)前化doop集群所配置的 網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)信息,確定SOiirceTTs中節(jié)點(diǎn)與目標(biāo)節(jié)點(diǎn)targetTT間的距離,選取距離最近 的節(jié)點(diǎn)作為預(yù)取的源節(jié)點(diǎn),記為SOiirceTT ;
[0026] C.根據(jù)步驟B中的計(jì)算,在離候選目標(biāo)節(jié)點(diǎn)targetTT距離最近的SOiirceTT節(jié)點(diǎn) 上,將toPrefetchMap任務(wù)的輸入數(shù)據(jù)通過網(wǎng)絡(luò)傳輸?shù)侥繕?biāo)節(jié)點(diǎn)targetTT上并存儲(chǔ)于本 地磁盤;
[0027] D.更新化bTracker上相應(yīng)的元信息文件;
[0028] E.在完成一個(gè)任務(wù)之后,會(huì)釋放之前忙碌的slot,并會(huì)隨著發(fā)送的"也跳"告知 JobTracker,請(qǐng)求分配新的任務(wù),此時(shí)toPrefetchMap則會(huì)被分配給該節(jié)點(diǎn),由于其輸入數(shù) 據(jù)己經(jīng)預(yù)先存儲(chǔ)到該節(jié)點(diǎn)的磁盤上,任務(wù)執(zhí)行相當(dāng)于在本地性節(jié)點(diǎn)上執(zhí)行。
[0029] 本發(fā)明的有益效果是:本發(fā)明在原有電網(wǎng)監(jiān)控系統(tǒng)的基礎(chǔ)上改變客戶\服務(wù)器模 式,采用MapRe化Ce對(duì)監(jiān)控?cái)?shù)據(jù)量進(jìn)行處理,通過對(duì)資源數(shù)據(jù)的預(yù)取,將數(shù)據(jù)集經(jīng)過節(jié)點(diǎn)預(yù) 選找到空閑節(jié)點(diǎn)作為候選工作計(jì)算節(jié)點(diǎn),再通過任務(wù)預(yù)選,預(yù)先選出待預(yù)取的map任務(wù),綜 合前兩個(gè)預(yù)選完成數(shù)據(jù)的優(yōu)先預(yù)選,提高了系統(tǒng)的運(yùn)行效率,并且利用該方法可W實(shí)現(xiàn)方 便、靈活的拓展,而不需要對(duì)原有的系統(tǒng)進(jìn)行改造,在使用的便利性上也有了很大的進(jìn)步。
【專利附圖】
【附圖說明】
[0030] 圖1是基于MapR化Ce的監(jiān)控?cái)?shù)據(jù)優(yōu)先預(yù)取處理方法流程圖;
[0031] 圖2是節(jié)點(diǎn)預(yù)選流程圖;
[0032] 圖3是任務(wù)預(yù)選流程圖;
[0033] 圖4是系統(tǒng)配置圖。
【具體實(shí)施方式】
[0034] 下面結(jié)合附圖對(duì)本發(fā)明的【具體實(shí)施方式】作進(jìn)一步的說明。
[00巧]本發(fā)明提供了基于MapR化Ce的監(jiān)控?cái)?shù)據(jù)優(yōu)先預(yù)取處理方法,本方法基于利用 MapRe化Ce處理大數(shù)據(jù)集,采用將數(shù)據(jù)集經(jīng)過節(jié)點(diǎn)預(yù)選找到空閑節(jié)點(diǎn)作為候選工作計(jì)算節(jié) 點(diǎn),再通過任務(wù)預(yù)選,預(yù)先選出待預(yù)取的map任務(wù),綜合前兩個(gè)預(yù)選完成數(shù)據(jù)的優(yōu)先預(yù)選, 提高了系統(tǒng)的運(yùn)行效率,并且利用該方法可W實(shí)現(xiàn)方便、靈活的拓展。該方法的具體過程如 下:
[0036] 1.在所有機(jī)器上安裝JDK,并添加JAVA環(huán)境變量;
[0037] 2.在所有機(jī)器上安裝S甜并完成配置。
[0038] SSH(Secure化el 1)是用來啟動(dòng)和停止各個(gè)化taNode上的各守護(hù)進(jìn)程,化doop 運(yùn)行過程中需要管理遠(yuǎn)端化doop守護(hù)進(jìn)程,該就必須在各節(jié)點(diǎn)之間執(zhí)行指令的時(shí)候不需 要輸入密碼,所W需要配置S甜運(yùn)用無密碼公鑰認(rèn)證的形式,該樣NameNode使用S甜無密 碼登陸并啟動(dòng)化taNode進(jìn)程。S甜無密碼原理在于主節(jié)點(diǎn)(NameNodeUobTracker)作為客 戶端,要實(shí)現(xiàn)無密碼公鑰認(rèn)證,連接到服務(wù)器從節(jié)點(diǎn)值ataNode\hslrtracke;r)上時(shí),需要 在Master上生成一對(duì)密鑰對(duì),包括一個(gè)公鑰和一個(gè)私鑰,而后將公鑰復(fù)制到所有的從節(jié)點(diǎn) 上。當(dāng)主節(jié)點(diǎn)通過S甜連接到從節(jié)點(diǎn)時(shí),從節(jié)點(diǎn)就會(huì)生成一個(gè)隨機(jī)數(shù)并用主節(jié)點(diǎn)的公鑰對(duì) 隨機(jī)數(shù)進(jìn)行加密,并發(fā)給主節(jié)點(diǎn)。主節(jié)點(diǎn)收到加密數(shù)之后再用私鑰解密,并將解密數(shù)回傳給 從節(jié)點(diǎn),從節(jié)點(diǎn)確認(rèn)密數(shù)無誤之后就允許主節(jié)點(diǎn)進(jìn)行連接。該就是一個(gè)公鑰認(rèn)證的過程,期 間不需要用戶手工輸入密碼。
[0039] 3.在主節(jié)點(diǎn)和從節(jié)點(diǎn)計(jì)算機(jī)安裝化doop軟件,然后對(duì)conf目錄下的6個(gè)核也配 置文件進(jìn)行相應(yīng)配置,即可完成安裝。該6個(gè)配置文件分別是hadoop-env. sh、core-site. xml、mapred-site. xml、hdfs-site. xml、masters 和 slaves 文件。
[0040] hadoop-env. sh文件主要用于配置所使用的JDK版本及所處位置;core-site, xml 文件主要配置皿FS文件系統(tǒng)的名稱、訪問入口地址及端口等信息;mapred-site. xml文件 則主要配置化bTracker的入口地址及端口;h壯s-site. xml文件主要配置皿FS副本數(shù);而 masters和slaves文件分別用于指定主節(jié)點(diǎn)和從節(jié)點(diǎn)所對(duì)應(yīng)的機(jī)器。
[0041] 4.節(jié)點(diǎn)預(yù)選,根據(jù)當(dāng)前節(jié)點(diǎn)的工作情況,在有空閑節(jié)點(diǎn)的情況下,將空閑節(jié)點(diǎn)作為 候選工作計(jì)算節(jié)點(diǎn),如果沒有空閑節(jié)點(diǎn),則計(jì)算節(jié)點(diǎn)上當(dāng)前釋放忙碌計(jì)算槽(slots)的可 能性大小,具體來說就是計(jì)算節(jié)點(diǎn)上任務(wù)執(zhí)行進(jìn)度的快慢程度,任務(wù)執(zhí)行進(jìn)度最快的節(jié)點(diǎn) 當(dāng)前最有可能釋放忙碌計(jì)算槽(slot),則計(jì)算節(jié)點(diǎn)上任務(wù)的執(zhí)行進(jìn)度快慢程度,找出執(zhí)行 進(jìn)度最快的節(jié)點(diǎn),并確保在當(dāng)前正在運(yùn)行的任務(wù)結(jié)束之前完成預(yù)取。
[0042] 如果在選中的候選節(jié)點(diǎn)上進(jìn)行資源預(yù)取操作,需要保證在當(dāng)前正在運(yùn)行的任務(wù) 結(jié)束之前就完成預(yù)取,具體做法則是分別計(jì)算出各計(jì)算節(jié)點(diǎn)上當(dāng)前正在運(yùn)行任務(wù)的剩余 執(zhí)行時(shí)間,再通過將此時(shí)間與在節(jié)點(diǎn)間傳輸一個(gè)數(shù)據(jù)塊所需的時(shí)間進(jìn)行比較,最后才確定 是否預(yù)選該節(jié)點(diǎn)作為候選的計(jì)算節(jié)點(diǎn)。節(jié)點(diǎn)預(yù)選過程步驟,如圖2所示。選取過程步驟如 下:
[0043] (a)利用計(jì)算節(jié)點(diǎn)上當(dāng)前正在運(yùn)行任務(wù)的執(zhí)行進(jìn)度來推測其最大剩余執(zhí)行時(shí)間 GStimatedLeftTime。
[0044] 化)根據(jù)網(wǎng)絡(luò)設(shè)備的理論傳輸速率計(jì)算出節(jié)點(diǎn)間傳輸一個(gè)文件塊所需要的時(shí)間 timePerBlock。
[0045] (C)依據(jù)正在該節(jié)點(diǎn)上運(yùn)行的任務(wù)中存在剩余完成時(shí)間小于傳輸一個(gè)數(shù)據(jù)塊所需 時(shí)間的map任務(wù),判斷該節(jié)點(diǎn)馬上就會(huì)釋放忙碌計(jì)算槽(slots),意味著在預(yù)取完成之前此 計(jì)算節(jié)點(diǎn)就會(huì)變?yōu)榭臻e節(jié)點(diǎn),無需再執(zhí)行后續(xù)的預(yù)取操作。
[0046] (d)對(duì)節(jié)點(diǎn)上每個(gè)map任務(wù)的剩余完成時(shí)間estimate化eftTime與節(jié) 點(diǎn)間傳輸一個(gè)文件塊所需時(shí)間進(jìn)行比較,如果出現(xiàn)W下情況:此計(jì)算節(jié)點(diǎn)存在 estimate化eftTime<time化巧lock的map任務(wù),則退出本次預(yù)取操作;反之,則選取 estimate化eftTime<time化;rBlock的計(jì)算節(jié)點(diǎn)加入candidateTTs集合中,作為候選節(jié)點(diǎn) 的備選集。
[0047] 5.任務(wù)預(yù)選,在確定候選計(jì)算節(jié)點(diǎn)集之后,在預(yù)先選出待預(yù)取的map任務(wù)。根據(jù)步 驟4中預(yù)選出的候選計(jì)算節(jié)點(diǎn)情況,和當(dāng)前正在運(yùn)行作業(yè)的未運(yùn)行任務(wù)情況,在集群中尚 無化skTracker向化bTracker請(qǐng)求任務(wù)的情況下,根據(jù)當(dāng)前未運(yùn)行任務(wù)相對(duì)于候選計(jì)算節(jié) 點(diǎn)的數(shù)據(jù)本地性預(yù)先選出待分配的map任務(wù),W針對(duì)該map任務(wù)完成后續(xù)的資源預(yù)取操作。 任務(wù)預(yù)選過程如圖3所示,具體步驟如下:
[0048] a讀取最新的candidateTTs列表,并從中選取排列在第一位的化skTracker,即接 下來最有可能釋放忙碌計(jì)算槽(slots)且可在其釋放前有充足時(shí)間完成預(yù)取操作的計(jì)算 節(jié)點(diǎn),作為待進(jìn)行預(yù)取操作的候選節(jié)點(diǎn),記為targetTT。
[0049] b為了保證當(dāng)前作業(yè)已有的失敗任務(wù)享有一定的優(yōu)先級(jí),可W快速被重新調(diào)度, 對(duì)于當(dāng)前運(yùn)行作業(yè),如果集合不為空,則對(duì)其中失敗次數(shù)最多的任務(wù)嚴(yán)格按其相對(duì)于步驟 a中選出的數(shù)據(jù)本地性進(jìn)行篩選,如果為node-local任務(wù),則中斷整個(gè)算法的執(zhí)行,因?yàn)榻?下來即將執(zhí)行的map本身即為本地性任務(wù);反之,則選擇該失敗次數(shù)最多的任務(wù)作為候選 map 任務(wù),記為 toPrefetchMap。
[0050] C如果執(zhí)行完步驟b W后toPrefetchMap仍為空,則查詢當(dāng)前隊(duì)列中正在運(yùn)行的 作業(yè)是否還有剩余map任務(wù)沒有完成,即nonRunningMapCache是否不為空,為空則從中 嚴(yán)格按照本地性策略依次查找關(guān)于targetTT節(jié)點(diǎn)本地性分別為node-local、rack-local 和off-switch的map任務(wù)。若nonRunningMap化che中尚存在關(guān)于targetTT節(jié)點(diǎn)為 node-local級(jí)別本地性的任務(wù),貝Ij退出本次預(yù)取操作;否則,從nonRunningMap化che中依 次優(yōu)先選擇一個(gè)rack-local或off-switch級(jí)別任務(wù)作為toPrefetchMap。
[0051] 6.數(shù)據(jù)預(yù)取,在經(jīng)過上述兩個(gè)階段一預(yù)選節(jié)點(diǎn)階段和預(yù)選任務(wù)階段之后,候選 節(jié)點(diǎn)及待預(yù)取map任務(wù)已經(jīng)被遽選出來。讀取toPrefetchMap對(duì)應(yīng)的元數(shù)據(jù)信息,獲取所 需輸入數(shù)據(jù)副本所在節(jié)點(diǎn);讀取配置文件目錄下的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)信息,計(jì)算源節(jié)點(diǎn)與目標(biāo) 節(jié)點(diǎn)之間的距離;根據(jù)計(jì)算結(jié)果選取距離最近的節(jié)點(diǎn)作為源節(jié)點(diǎn);從源節(jié)點(diǎn)讀取輸入數(shù)據(jù) 傳輸?shù)侥繕?biāo)節(jié)點(diǎn)并更新元數(shù)據(jù)信息;在目標(biāo)節(jié)點(diǎn)上的當(dāng)前map任務(wù)完成時(shí)請(qǐng)求調(diào)度新的任 務(wù)即toPrefetchMap。數(shù)據(jù)預(yù)選過程如圖1所示,具體步驟如下:
[0052] (A)從toPrefetchMap任務(wù)對(duì)應(yīng)的化sklnProgress對(duì)象中讀取相應(yīng)元數(shù)據(jù)信息, 獲取輸入數(shù)據(jù)所在位置,W確定候選源節(jié)點(diǎn),記為sourceTTso
[0053] (B)通過讀取conf目錄下的topology, data文件,即可獲取當(dāng)前化doop集群所配 置的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)信息,由此可W確定SOiirceTTs中節(jié)點(diǎn)與目標(biāo)節(jié)點(diǎn)targetTT間的距離, 選取距離最近的節(jié)點(diǎn)作為預(yù)取的源節(jié)點(diǎn),記為sourceTT。
[0054] (C)根據(jù)步驟炬)中的計(jì)算,在離候選目標(biāo)節(jié)點(diǎn)targetTT距離最近的sourceTT 節(jié)點(diǎn)上,將toPrefetchMap任務(wù)的輸入數(shù)據(jù)通過網(wǎng)絡(luò)傳輸?shù)侥繕?biāo)節(jié)點(diǎn)targetTT上并存儲(chǔ) 于本地磁盤。
[00巧](D)更新化bTracker上相應(yīng)的元信息文件。
[0056] 巧)在完成一個(gè)任務(wù)之后,會(huì)釋放之前忙碌的slot,并會(huì)隨著發(fā)送的"也跳"告知 JobTracker,請(qǐng)求分配新的任務(wù),此時(shí)toPrefetchMap則會(huì)被分配給該節(jié)點(diǎn),由于其輸入數(shù) 據(jù)己經(jīng)預(yù)先存儲(chǔ)到該節(jié)點(diǎn)的磁盤上,任務(wù)執(zhí)行相當(dāng)于在本地性節(jié)點(diǎn)上執(zhí)行
[0057] 7.首先啟動(dòng)化doop服務(wù)平臺(tái),為MapRe化Ce提供主節(jié)點(diǎn)和從節(jié)點(diǎn)。再建立與監(jiān)控 系統(tǒng)數(shù)據(jù)庫的連接,獲取作業(yè)ID。保證節(jié)點(diǎn)能夠動(dòng)態(tài)從監(jiān)控?cái)?shù)據(jù)庫發(fā)送數(shù)據(jù)調(diào)用請(qǐng)求。然 后MapRe化Ce將預(yù)取的資源數(shù)據(jù)調(diào)用任務(wù)進(jìn)行對(duì)應(yīng)的分析處理。
[0058] 構(gòu)建基于MapR化Ce的監(jiān)控?cái)?shù)據(jù)優(yōu)先預(yù)取處理系統(tǒng)的步驟如下:
[005引 1.在主節(jié)點(diǎn),數(shù)據(jù)節(jié)點(diǎn)先預(yù)裝操作系統(tǒng),在此基礎(chǔ)上安裝JAVA工作環(huán)境,分別在 主節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn)安裝化doop軟件。
[0060] 基于MapR化Ce的監(jiān)控?cái)?shù)據(jù)優(yōu)先預(yù)取處理系統(tǒng)的典型應(yīng)用過程如下:
[0061] (a)如圖4所示,根據(jù)實(shí)際業(yè)務(wù)需求,設(shè)置1臺(tái)Master節(jié)點(diǎn),6臺(tái)從節(jié)點(diǎn),并配置好 網(wǎng)絡(luò)環(huán)境,如下表1所示。
[0062] 表 1
[0063]
【權(quán)利要求】
1. 一種基于MapReduce的監(jiān)控?cái)?shù)據(jù)優(yōu)先預(yù)取處理方法,其特征在于,該處理方法包括 以下步驟: 1) 構(gòu)建Hadoop分布式系統(tǒng),包括主節(jié)點(diǎn)和從節(jié)點(diǎn),主節(jié)點(diǎn)和從節(jié)點(diǎn)上均安裝JDK和 Hadoop軟件,并添加有JAVA環(huán)境變量; 2) 將數(shù)據(jù)集進(jìn)行節(jié)點(diǎn)預(yù)選找到空閑節(jié)點(diǎn)作為候選工作計(jì)算節(jié)點(diǎn); 3) 在確定候選計(jì)算節(jié)點(diǎn)集之后,在預(yù)先選出待預(yù)取的map任務(wù); 4) 根據(jù)篩選出的候選節(jié)點(diǎn)和待預(yù)取map任務(wù)對(duì)數(shù)據(jù)進(jìn)行預(yù)取。
2. 根據(jù)權(quán)利要求1所述的基于MapReduce的監(jiān)控?cái)?shù)據(jù)優(yōu)先預(yù)取處理方法,其特征在 于,所述步驟1)中主節(jié)點(diǎn)和從節(jié)點(diǎn)計(jì)算機(jī)安裝Hadoop軟件時(shí),需對(duì)conf目錄下的6個(gè) 核心配置文件進(jìn)行相應(yīng)配置,這6個(gè)配置文件分別是hadoop-env. sh、core-site, xml、 mapred-site. xml、hdfs-site. xml、masters 和 slaves 文件。
3. 根據(jù)權(quán)利要求2所述的基于MapReduce的監(jiān)控?cái)?shù)據(jù)優(yōu)先預(yù)取處理方法,其特征在于, 所述hadoop-env. sh文件用于配置所使用的JDK版本及所處位置;core-site, xml文件用 于配置HDFS文件系統(tǒng)的名稱、訪問入口地址及端口信息;mapred-site. xml文件用于配置 JobTracker的入口地址及端口;hdfs-site. xml文件用于配置HDFS副本數(shù);而masters和 slaves文件分別用于指定主節(jié)點(diǎn)和從節(jié)點(diǎn)所對(duì)應(yīng)的機(jī)器。
4. 根據(jù)權(quán)利要求3所述的基于MapReduce的監(jiān)控?cái)?shù)據(jù)優(yōu)先預(yù)取處理方法,其特征在于, 所述主節(jié)點(diǎn)主要負(fù)責(zé)Hadoop兩個(gè)關(guān)鍵功能模塊HDFS、MapReduce的監(jiān)督,當(dāng)JobTracker使 用MapReduce進(jìn)行監(jiān)控和調(diào)度數(shù)據(jù)的并行處理時(shí),NameNode則負(fù)責(zé)HDFS監(jiān)視和調(diào)度,從節(jié) 點(diǎn)負(fù)責(zé)機(jī)器運(yùn)行的絕大部分,擔(dān)當(dāng)所有數(shù)據(jù)儲(chǔ)存和指令計(jì)算,每個(gè)從節(jié)點(diǎn)既扮演者數(shù)據(jù)節(jié) 點(diǎn)的角色又承擔(dān)與它們主節(jié)點(diǎn)通信的守護(hù)進(jìn)程。
5. 根據(jù)權(quán)利要求4所述的基于MapReduce的監(jiān)控?cái)?shù)據(jù)優(yōu)先預(yù)取處理方法,其特征在于, 所述步驟2)如果在選中的候選節(jié)點(diǎn)上進(jìn)行資源預(yù)取操作,需要保證在當(dāng)前正在運(yùn)行的任 務(wù)結(jié)束之前就完成預(yù)取。
6. 根據(jù)權(quán)利要求5所述的基于MapReduce的監(jiān)控?cái)?shù)據(jù)優(yōu)先預(yù)取處理方法,其特征在于, 所述步驟2)中節(jié)點(diǎn)預(yù)選的具體過程如下: (a) 利用計(jì)算節(jié)點(diǎn)上當(dāng)前正在運(yùn)行任務(wù)的執(zhí)行進(jìn)度來推測其最大剩余執(zhí)行時(shí)間 estimatedLeftTime ; (b) 根據(jù)網(wǎng)絡(luò)設(shè)備的理論傳輸速率計(jì)算出節(jié)點(diǎn)間傳輸一個(gè)文件塊所需要的時(shí)間 timePerBlock ; (c) 依據(jù)正在該節(jié)點(diǎn)上運(yùn)行的任務(wù)中存在剩余完成時(shí)間小于傳輸一個(gè)數(shù)據(jù)塊所需時(shí)間 的map任務(wù),判斷該節(jié)點(diǎn)馬上就會(huì)釋放忙碌計(jì)算槽(slots),意味著在預(yù)取完成之前此計(jì)算 節(jié)點(diǎn)就會(huì)變?yōu)榭臻e節(jié)點(diǎn),無需再執(zhí)行后續(xù)的預(yù)取操作; (d) 對(duì)節(jié)點(diǎn)上每個(gè)map任務(wù)的剩余完成時(shí)間estimatedLeftTime與節(jié)點(diǎn)間傳輸一個(gè) 文件塊所需時(shí)間進(jìn)行比較,若計(jì)算節(jié)點(diǎn)存在estimatedLeftTime〈timePerBlock的map任 務(wù),則退出本次預(yù)取操作;反之,貝1J選取estimatedLeftTime〈timePerBlock的計(jì)算節(jié)點(diǎn)加 入candidateTTs集合中,作為候選節(jié)點(diǎn)的備選集。
7. 根據(jù)權(quán)利要求6所述的基于MapReduce的監(jiān)控?cái)?shù)據(jù)優(yōu)先預(yù)取處理方法,其特征在于, 所述步驟3)中任務(wù)預(yù)選的過程如下: a. 讀取最新的candidateTTs列表,并從中選取排列在第一位的TaskTracker,即接下 來最有可能釋放忙碌計(jì)算槽(slots)且可在其釋放前有充足時(shí)間完成預(yù)取操作的計(jì)算節(jié) 點(diǎn),作為待進(jìn)行預(yù)取操作的候選節(jié)點(diǎn),記為targetTT ; b. 如果集合不為空,則對(duì)其中失敗次數(shù)最多的任務(wù)嚴(yán)格按其相對(duì)于步驟a中選出的數(shù) 據(jù)本地性進(jìn)行篩選,如果為node-local任務(wù),則中斷整個(gè)算法的執(zhí)行,反之,則選擇該失敗 次數(shù)最多的任務(wù)作為候選map任務(wù),記為toPrefetchMap ; c. 如果執(zhí)行完步驟b以后toPrefetchMap仍為空,則查詢當(dāng)前隊(duì)列中正在運(yùn)行的作 業(yè)是否還有剩余map任務(wù)沒有完成,即nonRunningMapCache是否不為空,為空則從中嚴(yán) 格按照本地性策略依次查找關(guān)于targetTT節(jié)點(diǎn)本地性分別為node-local、rack-local 和off-switch的map任務(wù),若nonRunningMapCache中尚存在關(guān)于targetTT節(jié)點(diǎn)為 node-local級(jí)別本地性的任務(wù),貝U退出本次預(yù)取操作;否則,從nonRunningMapCache中依 次優(yōu)先選擇一個(gè)rack-local或off-switch級(jí)別任務(wù)作為toPrefetchMap。
8.根據(jù)權(quán)利要求7所述的基于MapReduce的監(jiān)控?cái)?shù)據(jù)優(yōu)先預(yù)取處理方法,其特征在于, 所述步驟4)中數(shù)據(jù)預(yù)取的具體過程如下: A. 從toPrefetchMap任務(wù)對(duì)應(yīng)的TasklnProgress對(duì)象中讀取相應(yīng)元數(shù)據(jù)信息,獲取輸 入數(shù)據(jù)所在位置,以確定候選源節(jié)點(diǎn),記為sourceTTs ; B. 通過讀取conf目錄下的topology, data文件,獲取當(dāng)前Hadoop集群所配置的網(wǎng)絡(luò) 拓?fù)浣Y(jié)構(gòu)信息,確定sourceTTs中節(jié)點(diǎn)與目標(biāo)節(jié)點(diǎn)targetTT間的距離,選取距離最近的節(jié) 點(diǎn)作為預(yù)取的源節(jié)點(diǎn),記為sourceTT ; C. 根據(jù)步驟B中的計(jì)算,在離候選目標(biāo)節(jié)點(diǎn)targetTT距離最近的sourceTT節(jié)點(diǎn)上, 將toPrefetchMap任務(wù)的輸入數(shù)據(jù)通過網(wǎng)絡(luò)傳輸?shù)侥繕?biāo)節(jié)點(diǎn)targetTT上并存儲(chǔ)于本地磁 盤; D. 更新JobTracker上相應(yīng)的元信息文件; E. 在完成一個(gè)任務(wù)之后,會(huì)釋放之前忙碌的slot,并會(huì)隨著發(fā)送的"心跳"告知 JobTracker,請(qǐng)求分配新的任務(wù),此時(shí)toPrefetchMap則會(huì)被分配給該節(jié)點(diǎn),由于其輸入數(shù) 據(jù)己經(jīng)預(yù)先存儲(chǔ)到該節(jié)點(diǎn)的磁盤上,任務(wù)執(zhí)行相當(dāng)于在本地性節(jié)點(diǎn)上執(zhí)行。
【文檔編號(hào)】G06F17/30GK104331464SQ201410604052
【公開日】2015年2月4日 申請(qǐng)日期:2014年10月31日 優(yōu)先權(quán)日:2014年10月31日
【發(fā)明者】廖福瑋, 羅開明, 張新坡, 劉巖 申請(qǐng)人:許繼電氣股份有限公司, 許昌許繼軟件技術(shù)有限公司