作業(yè)為單位來(lái)存儲(chǔ)預(yù)測(cè)信息,并根據(jù)檢測(cè)到的作業(yè)的先后順序,按照先來(lái)先服務(wù)的原則來(lái)設(shè)置優(yōu)先級(jí)。
[0026]—個(gè)Hadoop作業(yè)分為map任務(wù)和reduce任務(wù),Hadoop作業(yè)在map任務(wù)的執(zhí)行結(jié)果并沒有存儲(chǔ)到其自身提供的HDFS文件系統(tǒng)中,而是暫時(shí)儲(chǔ)存在相應(yīng)節(jié)點(diǎn)的本地磁盤上;利用Linux本身的inotify機(jī)制,從Hadoop運(yùn)行時(shí)產(chǎn)生的中間數(shù)據(jù)中提取出Hadoop應(yīng)用對(duì)網(wǎng)絡(luò)的需求;所述的中間數(shù)據(jù)的組織形式分為工作目錄和日志目錄,工作目錄和日志目錄隨著Hadoop任務(wù)的運(yùn)行臨時(shí)創(chuàng)建和刪除。監(jiān)測(cè)程序分為中間結(jié)果的分析和日志的監(jiān)控,采用Linux系統(tǒng)提供的inotify機(jī)制來(lái)完成,由于Hadoop的中間文件是以作業(yè)為單位進(jìn)行組織存儲(chǔ)的,圖1是Hadoop的中間文件組織結(jié)構(gòu),分為工作目錄和日志目錄。由于inotify只支持監(jiān)控存在的文件并且不支持遞歸監(jiān)控,而工作目錄和相應(yīng)的日志都是隨著Hadoop運(yùn)行實(shí)時(shí)的產(chǎn)生,所以需要設(shè)計(jì)一個(gè)實(shí)時(shí)的監(jiān)控方法來(lái)實(shí)現(xiàn)。
[0027]首先在工作目錄和日志目錄分別監(jiān)測(cè)各自子目錄創(chuàng)建事件,然后在子目錄創(chuàng)建其子目錄的創(chuàng)建事件,以此類推,直到監(jiān)測(cè)到“attempt_xxxx_xxx”目錄和“container_xxxx_XXX”目錄。對(duì)于工作目錄,監(jiān)測(cè)attempt_xxxx_xxx目錄下file.0ut.1ndex的創(chuàng)建事件,這個(gè)文件記錄了該map任務(wù)與各個(gè)reduce任務(wù)傳輸?shù)臄?shù)據(jù)量,按照f(shuō)ile.0ut.1ndex的存儲(chǔ)格式,如圖4所示,解析出該map向每個(gè)reduce傳輸?shù)臄?shù)據(jù)量;
[0028]對(duì)于日志目錄,提取出container_xxxx_xxx目錄下的作業(yè)ID ;監(jiān)測(cè)container_xxxx_xxx目錄下syslog的修改事件,Hadoop具有“先寫日志后操作”的特點(diǎn),Hadoop中每個(gè)reduce最多向5個(gè)map請(qǐng)求抓取數(shù)據(jù),每次在Hadoop寫日志記錄其運(yùn)行情況時(shí),分析日志內(nèi)容,提取有關(guān)該map任務(wù)與reduce任務(wù)傳輸?shù)男畔?,解析出目的地址,將提取的時(shí)間作為各對(duì)map/reduce網(wǎng)絡(luò)傳輸?shù)木W(wǎng)絡(luò)時(shí)間預(yù)測(cè),判斷每一對(duì)map/reduce何時(shí)開始進(jìn)行傳輸。
[0029]在獲得一對(duì)map/reduce “源地址,數(shù)據(jù)量,目的地址,作業(yè)ID,時(shí)間”的五元組信息后,就向中心收集節(jié)點(diǎn)發(fā)送該信息。
[0030]中心收集程序:
[0031]中心收集程序用于收集監(jiān)測(cè)程序收集到的信息進(jìn)行匯總并設(shè)置各個(gè)作業(yè)的優(yōu)先級(jí)。以作業(yè)為單位進(jìn)行存儲(chǔ),按照先來(lái)先服務(wù)的原則,對(duì)于最先監(jiān)測(cè)到的網(wǎng)絡(luò)流所屬的作業(yè)設(shè)置為最高優(yōu)先級(jí),下一個(gè)監(jiān)測(cè)到的網(wǎng)絡(luò)流所屬的作業(yè)設(shè)置為次高優(yōu)先級(jí),依次類推將監(jiān)測(cè)到的作業(yè)設(shè)置相應(yīng)的優(yōu)先級(jí)。
[0032]調(diào)度:
[0033]根據(jù)MapReduce編程模型的特點(diǎn),即在一個(gè)reduce獲得所有map的輸出結(jié)果之后才能執(zhí)行reduce操作,所有reduce執(zhí)行完畢后,該任務(wù)得到最終結(jié)果。采用先來(lái)先服務(wù)的原則,將同屬一個(gè)作業(yè)(Hadoop程序)的網(wǎng)絡(luò)流當(dāng)做一個(gè)整體,以作業(yè)為單位對(duì)網(wǎng)絡(luò)流進(jìn)行調(diào)度;
[0034]將交換機(jī)的每個(gè)端口的緩沖隊(duì)列虛擬成多個(gè)隊(duì)列。當(dāng)收到數(shù)據(jù)包時(shí),根據(jù)其所屬的作業(yè)的優(yōu)先級(jí)(或者ID)存入相應(yīng)緩沖隊(duì)列,每個(gè)優(yōu)先級(jí)的數(shù)據(jù)包進(jìn)入到相應(yīng)的虛擬緩沖隊(duì)列中;當(dāng)該端口可以發(fā)送數(shù)據(jù)包時(shí),按照優(yōu)先級(jí)的順序在有緩存的最高優(yōu)先級(jí)的隊(duì)列中,選擇該隊(duì)列的隊(duì)頭數(shù)據(jù)包轉(zhuǎn)發(fā)出去,從而達(dá)到按照作業(yè)的優(yōu)先級(jí)來(lái)轉(zhuǎn)發(fā)數(shù)據(jù)包的目的。
【主權(quán)項(xiàng)】
1.一種基于Hadoop集群的網(wǎng)絡(luò)預(yù)測(cè)與調(diào)度方法,其特征在于,包括以下步驟: 第一步,整體Hadoop集群的預(yù)測(cè)采用C/S模式,在集群的每個(gè)節(jié)點(diǎn)運(yùn)行監(jiān)控程序 1)Hadoop米用MapReduce編程模型,一個(gè)Hadoop作業(yè)分為map任務(wù)和reduce任務(wù),Hadoop作業(yè)在map任務(wù)的執(zhí)行結(jié)果暫存在相應(yīng)節(jié)點(diǎn)的本地磁盤;利用Linux本身的inotify機(jī)制,從Hadoop運(yùn)行時(shí)產(chǎn)生的中間數(shù)據(jù)中提取Hadoop應(yīng)用對(duì)網(wǎng)絡(luò)的需求; 所述的中間數(shù)據(jù)的組織形式分為工作目錄和日志目錄,工作目錄和日志目錄隨Hadoop任務(wù)的運(yùn)行臨時(shí)創(chuàng)建和刪除; 2)設(shè)計(jì)動(dòng)態(tài)監(jiān)測(cè)系統(tǒng)對(duì)工作目錄和日志目錄進(jìn)行實(shí)時(shí)監(jiān)測(cè),分別監(jiān)測(cè)工作目錄和日志目錄的子目錄創(chuàng)建事件,在各自子目錄創(chuàng)建其子目錄的創(chuàng)建事件,以此類推,直至監(jiān)測(cè)到“attempt_xxxx_xxx” 目錄和 “container_xxxx_xxx” 目錄; 對(duì)于工作目錄,監(jiān)測(cè)attempt_xxxx_xxx目錄下file.0ut.1ndex的創(chuàng)建事件,按照f(shuō)ile.0ut.1ndex的存儲(chǔ)格式解析出該map向每個(gè)reduce傳輸?shù)臄?shù)據(jù)量; 對(duì)于日志目錄,提取出container_xxxx_xxx目錄下的作業(yè)ID ;監(jiān)測(cè)container_xxxx_XXX目錄下syslog的修改事件,從syslog的修改事件中提取關(guān)于該map與reduce的發(fā)送日志信息,解析出目的地址,將提取的時(shí)間作為各對(duì)map/reduce網(wǎng)絡(luò)傳輸?shù)木W(wǎng)絡(luò)時(shí)間預(yù)測(cè); 3)將“源地址,數(shù)據(jù)量,目的地址,作業(yè)ID,時(shí)間”的五元組信息發(fā)送給中央控制器,中央控制器以作業(yè)ID為單位存儲(chǔ)預(yù)測(cè)信息,按照先來(lái)先服務(wù)的原則,將最先監(jiān)測(cè)到的網(wǎng)絡(luò)流所屬的作業(yè)設(shè)置為最高優(yōu)先級(jí),下一個(gè)監(jiān)測(cè)到的網(wǎng)絡(luò)流所屬的作業(yè)設(shè)置為次高優(yōu)先級(jí),依次類推,將監(jiān)測(cè)到的作業(yè)設(shè)置相應(yīng)優(yōu)先級(jí); 所述的源地址為本機(jī)IP地址; 第二步,根據(jù)網(wǎng)絡(luò)數(shù)據(jù)流之間的相互關(guān)系進(jìn)行調(diào)度 根據(jù)MapReduce編程模型的特點(diǎn),采用先來(lái)先服務(wù)的原則,將同屬一個(gè)作業(yè)的網(wǎng)絡(luò)數(shù)據(jù)流當(dāng)做一個(gè)整體,以作業(yè)為單位對(duì)網(wǎng)絡(luò)數(shù)據(jù)流進(jìn)行調(diào)度; 將交換機(jī)的每個(gè)端口的緩沖隊(duì)列虛擬為多個(gè)隊(duì)列;當(dāng)交換機(jī)接收數(shù)據(jù)包時(shí),根據(jù)數(shù)據(jù)包所屬作業(yè)的優(yōu)先級(jí)存入相應(yīng)緩沖隊(duì)列,每個(gè)優(yōu)先級(jí)的數(shù)據(jù)包進(jìn)入相應(yīng)虛擬緩沖隊(duì)列中;當(dāng)相應(yīng)的虛擬緩沖隊(duì)列所屬的端口發(fā)送數(shù)據(jù)包時(shí),按照優(yōu)先級(jí)的順序在有緩存的最高優(yōu)先級(jí)的隊(duì)列中,選擇該隊(duì)列的隊(duì)頭數(shù)據(jù)包轉(zhuǎn)發(fā)出去,達(dá)到按照作業(yè)的優(yōu)先級(jí)轉(zhuǎn)發(fā)數(shù)據(jù)包的目的。
【專利摘要】本發(fā)明提供一種基于Hadoop集群的網(wǎng)絡(luò)預(yù)測(cè)與調(diào)度方法,通過(guò)分析Hadoop運(yùn)行所產(chǎn)生的中間臨時(shí)文件,從應(yīng)用層角度預(yù)測(cè)網(wǎng)絡(luò)流量;根據(jù)預(yù)測(cè)的網(wǎng)絡(luò)流量信息,考慮Hadoop運(yùn)行時(shí)網(wǎng)絡(luò)流之間的相互依賴關(guān)系,以網(wǎng)絡(luò)流所屬Hadoop的作業(yè)(Hadoop程序)為單位,按照優(yōu)先級(jí)的高低對(duì)網(wǎng)絡(luò)流進(jìn)行調(diào)度。本發(fā)明區(qū)別于現(xiàn)有的通常在網(wǎng)絡(luò)層的預(yù)測(cè),采用從應(yīng)用層直接獲得對(duì)網(wǎng)絡(luò)需求,體現(xiàn)了預(yù)測(cè)的主動(dòng)性和透明性;采用linux系統(tǒng)提供的實(shí)時(shí)監(jiān)測(cè)機(jī)制,能夠快速反映相關(guān)文件的變化,在第一時(shí)間獲取有用信息,體現(xiàn)了快速、提前性的特點(diǎn)。
【IPC分類】H04L12/911, H04L12/801, H04L29/08
【公開號(hào)】CN105429893
【申請(qǐng)?zhí)枴緾N201510767233
【發(fā)明人】申彥明, 王志剛
【申請(qǐng)人】大連理工大學(xué)
【公開日】2016年3月23日
【申請(qǐng)日】2015年11月11日