下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
HTCondor-orientedclusterresourcesandjobsinformationacquisitionAuthor:DENGZe-fengTutor:LUANZhong-Clustertopetflopperformanceinoperation,thenumberofnodesisalsogrowingrapidly.Inthefaceofsuchalargescaleofnodes,weneedasetofperfectclustermonitoringsystemtoassistthemanagertomanageandmonitorthewholeclusterstateofthework,toensurethattheclusteroperationefficiency,reliabilityandstability.HTCondorisanopen-sourcehigh-throughputcomputingsoftwareframeworkforcoarse-graineddistributedparallelizationofcomputationallyintensivetasks.HTCondorprovidesthejobqueuemechanism,schedulingpolicy,priorityplanning,resourcemonitoringandoperationmanagementfortheuser.TheusercaneasilyuseHTCondortoupload,queryandmanagementoftheirjob.Butwhentheuserwantstoresourcesandoperationinformationclustersystem,heneedstoinputalargenumberofinstructionstoachievethisaim.AndHTCondorgeneratedinformationisscattered,notintuitive,entryintheviewofhistoricalinformationoftoomuch,toomuchredundantdata.itdoesnotfavortheuserobservation.Theclustermonitoringinformationsystemofmulti-level,informationwillbemoreefficient,morescientificfeedbacktotheadministratorsandusers,caneffectivelyreducethestaffworkingpressure,improvethemanagement nelandthegeneraluserproductivity.Idesignandimplementationofaclusterresourceandassignmentinformationcollectionsystem,informationwillbecollectedbyHTCondor,screening,integrationandfurtherprocessing,withmoreefficient,morescientificwaytogivefeedbacktothefollow-platform,tocompletetheirrequiredtocompletetheThesystemcontainsfourmodules,triggermodule,datareadingmodule,datamoduleanddatagenerationmodule.ThetriggermoduleenablestheHTCondortogeneratedatalogfiles,readtheinformationanddatasimulatorplatformmoduleparsethedatalogfileinthefeedbackinformationandthecollectedinformationintothepreliminaryscreeningandstoredintotheclassobjectcorresponding,integrationandfurtherprocessingoftheinformationdataprocessingmoduleforthestorageofdatagenerationmodule,theprocessedafterthedataaccordingtothespecifiedoutputformattothespecifiedlocation.:cluster,HTCondor,resourceinformation,job緒 研究背 國內(nèi)外研究現(xiàn) Ganglia系 Nagios系 PARMON系 SuperMon系 研究目標(biāo)與內(nèi) 研究目 研究內(nèi) 研究方 的組織結(jié) 相關(guān)技術(shù)現(xiàn) JavaRuntime 數(shù)據(jù)生 本章小 面向HTCondor的集群資源和作業(yè)信息系統(tǒng)設(shè) 系統(tǒng)功能需 設(shè)計原 系統(tǒng)總體架構(gòu)設(shè) 系統(tǒng)流程設(shè) 系統(tǒng)模塊概要設(shè) 系統(tǒng)功能模塊詳細(xì)設(shè) 觸發(fā)器模塊設(shè) 數(shù)據(jù)模塊設(shè) 數(shù)據(jù)處理模塊設(shè) 數(shù)據(jù)生成模塊設(shè) 刷新機(jī)制設(shè) 本章小 面向HTCondor的集群資源和作業(yè)信息系統(tǒng)實 系統(tǒng)開發(fā)環(huán) 運(yùn)行環(huán) 開發(fā)環(huán) 系統(tǒng)實現(xiàn)概 觸發(fā)器模塊實 數(shù)據(jù)模塊實 信息模型實 信 信 數(shù)據(jù)處理模塊實 添加信息實 添加顏色標(biāo)注實 更改作業(yè)信息實 數(shù)據(jù)生成模塊實 輸出預(yù)測信息實 輸出結(jié)果信息實 輸出歷史日志信息實 刷新機(jī)制實 本章小 系統(tǒng)實 實驗環(huán) 功能實 實驗?zāi)?實驗過 功能實驗總結(jié)與分 性能實 實驗?zāi)?實驗過 性能實驗總結(jié)與分 本章小 總結(jié)與展 工作總 工作展 致 參考文 圖圖1.1Ganglia體系結(jié) 圖2.1機(jī)器的ClassAd查詢結(jié) 圖2.2作業(yè)隊列查詢結(jié)果 圖2.3作業(yè)與資源匹配情況查詢結(jié) 圖2.4作業(yè)歷史信息查詢結(jié) 圖3.1系統(tǒng)流程 圖5.1運(yùn)行結(jié) 圖5.2數(shù)據(jù)日志文 圖5.3指令查看HTCondor信 圖5. 圖5. 圖5.6模擬器反饋數(shù)據(jù)文 圖5. 圖5. 圖5.9系統(tǒng)性能測試 集群系統(tǒng)中的單個計算機(jī)通常稱為節(jié)點(diǎn),通常通過局域網(wǎng)連接,但也有其它的可能連接集群系統(tǒng)技術(shù)是一組相互獨(dú)立的服務(wù)器在網(wǎng)絡(luò)中表現(xiàn)為單一的系統(tǒng),并以單一系統(tǒng)的模式加以管理,此單一系統(tǒng)為客戶工作站提供高可靠性的服務(wù)。集群技術(shù)已經(jīng)成為高性能計算機(jī)體系結(jié)構(gòu)的發(fā)展趨勢之一,而且利用集群技術(shù)產(chǎn)生的集群系統(tǒng)以其良好的可擴(kuò)展性和性價比,在現(xiàn)實中已經(jīng)得到了廣泛的應(yīng)用。集群系統(tǒng)在運(yùn)算性能達(dá)到千萬億次時,其結(jié)點(diǎn)的數(shù)量也隨之迅速地增長。面對著如此龐大的節(jié)點(diǎn)規(guī)模,就需要一套完善的集群系統(tǒng)來輔助管理員來管理和整個集群的工作狀態(tài),以保證集群運(yùn)行的高效性、可靠性和穩(wěn)定性[1314]。采用多層次的集群信息系統(tǒng),將信息更高效、更科學(xué)的反饋給管理員與用戶,高通量計算技術(shù)(High-thrughputomputing,簡稱HTC)是一種使用大量資源通過較長時間來完成一個作業(yè)的計算機(jī)技術(shù)。不同于高性能計算(hgh-prorancecoutng,簡稱HPC),著重于在短時間完成大量的計算,高通量計算也需要執(zhí)行大量的計算,不過注重的是那些需要耗時更長的作業(yè)[2]。HTCondor是專門用于計算密集型作業(yè)的高通量開源作業(yè)批處理系統(tǒng)。它為用戶提業(yè)也可以提交并行作業(yè),HTCondor會把這些作業(yè)放到一個隊列中,之后根據(jù)作業(yè)的ClassAd與資源的ClassAd相匹配來確定調(diào)度的方案,之后仔細(xì)監(jiān)測作業(yè)執(zhí)行的進(jìn)展,個目的。而且HTCondor生成的信息分散、不直觀,在查看歷史信息時條目過多,冗余針對上述問題,我們很有必要設(shè)計實現(xiàn)一個系統(tǒng),該系統(tǒng)能夠?qū)TCondor反饋的數(shù)據(jù)收集起來,進(jìn)行匹配、整合以及再加工,將其中的冗余信息剔除、匹配作業(yè)與資源信息等等。設(shè)計靈活、可移植的信息數(shù)據(jù)結(jié)果保存機(jī)制,能夠?qū)⒓庸ず蟮馁Y源信息和作業(yè)信息保存到相應(yīng)的數(shù)據(jù)結(jié)果文件中,以供預(yù)測模擬器和交互式展示系統(tǒng),從而直觀的觀測系統(tǒng)的資源信息和作業(yè)信息。目前主流的集群信息系統(tǒng)主要來自國外,國內(nèi)由于起步較晚,發(fā)展不及國外。主要的集群系統(tǒng)有:Ganga、Nagios、ARMON、SuprMon等。GangliaGanglia系統(tǒng)是由加州大學(xué)伯克利分校開發(fā)的,用于大規(guī)模的機(jī)群和分布式網(wǎng)格等高性能計算系統(tǒng)?;赬ML技術(shù)的數(shù)據(jù)傳遞可以使系統(tǒng)的狀態(tài)數(shù)據(jù)不同的系統(tǒng)平臺進(jìn)行交互,采用簡潔緊湊的XDR方式,實現(xiàn)數(shù)據(jù)壓縮和傳輸”。Ganglia主要由gmetad和gmond兩部分組成:gmetad主要負(fù)責(zé)數(shù)據(jù)的匯集,每隔15秒會輪詢gmond,并向下層節(jié)點(diǎn)發(fā)送和接收用戶所需的信息,并對數(shù)據(jù)出錯做出相應(yīng)處理,最后使用RRDtool將這些信息在數(shù)據(jù)庫,并通過ApacheWeb服務(wù)器顯示它收集的信息。gmond則工作在每個集群節(jié)點(diǎn)上,主要負(fù)責(zé)節(jié)點(diǎn)信息的獲取,相當(dāng)于Ganglia的監(jiān)視守護(hù)進(jìn)程[4]。圖1.1Ganglia體系結(jié)NagiosNaos原名為NtSant由EthanGaltad開發(fā)并至今。Nagos是一個可運(yùn)行在inux/Uix平臺之上的開源監(jiān)視系統(tǒng),可以用來監(jiān)視系統(tǒng)運(yùn)行狀態(tài)和網(wǎng)絡(luò)信息。Nagios可以監(jiān)視所指定的本地或主機(jī)以及服務(wù),同時提供異常通知功能。Nagios相比Ganglia系統(tǒng)更加關(guān)注警告機(jī)制,Ganlia則更加關(guān)注收集和指標(biāo)。Nagios以前只是從目標(biāo)主機(jī)收集信息,但最近開發(fā)了可以在主機(jī)上運(yùn)行的插件。Nagos內(nèi)置了一個通知系統(tǒng)[5]。PARMON1999年高性能計算開發(fā)中心(C-DAC)成功研制了每秒計算速度達(dá)1千億次的高性能集群系統(tǒng)PARAM10000,它是由48個Ultra-4結(jié)構(gòu)的工作站而成的集群系Solaris,它的計算速度在當(dāng)時達(dá)到了世界先進(jìn)水平。為了實現(xiàn)對PARAM1000集群系統(tǒng)的實時,C-DAC同時也研制了一套集群系PARMON是一個非常典型的集群系統(tǒng),它采用了典型的Client/Server體系結(jié)構(gòu),它是由Parmon_server和Parmon_client兩個主要部分組成的。Parmon_server部署在每個計算節(jié)點(diǎn)上,它是用C語言和POSIX/Solaris開發(fā),用于提供節(jié)點(diǎn)服務(wù),Parmon_client部署在一個管理工作站,它是用Java開發(fā),主要用于每個節(jié)點(diǎn)的監(jiān)控信息,通過JavaGUI界面為管理員提供可視化展示。Parmon_server與Parmon_client之間采用TCP協(xié)議通信PARMON系統(tǒng)的內(nèi)容包括:處理器的健康狀況、資源利用率、系統(tǒng)日志、節(jié)點(diǎn)操作系統(tǒng)內(nèi)核、內(nèi)存、磁盤、網(wǎng)絡(luò)等SuperMonSuperMon是由California大學(xué)的LosAlamos國家高性能計算機(jī)研發(fā)的集群系統(tǒng),SuperMon是一個通用的應(yīng)用于大規(guī)模Linux集群的系統(tǒng)。Supermon是一個高速集群系統(tǒng),特點(diǎn)是低侵入、高采樣率和一個可擴(kuò)展的數(shù)據(jù)協(xié)議和編程接口。SuperMonTCPmonTCP端口上進(jìn)行偵聽,工作時Supermon順序的連接每一個mon,通過和mon進(jìn)行交互獲得數(shù)據(jù),這種結(jié)構(gòu)雖然使用了分層結(jié)構(gòu),但是因為只有一個Supermon,所以當(dāng)節(jié)點(diǎn)構(gòu)模變大時速度會SupermonSupermon是通過預(yù)先就知道的地址和每個mon連接所以在不改變Supermon配置的情況下很難做到結(jié)點(diǎn)的動態(tài)增加。同時由于Supermon是與Linux內(nèi)核版本相關(guān)的,所以它的可移植LML_da能目標(biāo)系統(tǒng)的資源管理系統(tǒng)中提取狀態(tài)數(shù)據(jù),LML_da支持的資源管理系統(tǒng)有很多,如slurmHTCondor等。它能解析系統(tǒng)特定令,如qstat,pbsnodes或LLQ,并將它們轉(zhuǎn)換成XML格式文件,該文件可以由LLview客戶端來處理。在數(shù)據(jù)檢索過程的第一個步驟產(chǎn)生LML格式的數(shù)據(jù)[8]。LML是用于傳輸集群系統(tǒng)的狀態(tài)數(shù)據(jù)而設(shè)計的XML格式。在本系統(tǒng)中,整個集群系統(tǒng)主要分為三個部分——多層次數(shù)據(jù)信息系統(tǒng),作業(yè)運(yùn)行的歷史追蹤/向HTodor的集群資源和作業(yè)信息系統(tǒng),負(fù)責(zé)的部分就是多層次數(shù)據(jù)信息系統(tǒng)。工作的目標(biāo):設(shè)計并實現(xiàn)整個信息系統(tǒng),該系統(tǒng)能將到的集群資源和作業(yè)信息進(jìn)行簡單處理后,按照規(guī)定的格式生成XML文件與JSON文件,存入指定位置供模擬本系統(tǒng)需要將HTCondor中的集群資源和作業(yè)信息結(jié)果重定向輸出為日志文件,對生成的日志文件進(jìn)行,將收集到的信息進(jìn)行匹配、整合,在此基礎(chǔ)上設(shè)計靈活、可移植的信息數(shù)據(jù)結(jié)果保存機(jī)制,能夠?qū)TCondor集群中的資源和作業(yè)信息保存到相應(yīng)的數(shù)據(jù)結(jié)果中,并對原始數(shù)據(jù)進(jìn)行適當(dāng)?shù)念A(yù)處理,例如作業(yè)和節(jié)點(diǎn)顏色第一,觸發(fā)器模塊。利用Java中runtime類中的exec()方法,使HTCondor生成第二,模塊。生成的數(shù)據(jù)文件,將HTCondor搜集到的資源信息和作業(yè)信息進(jìn)行匹配、整合及在相應(yīng)的變量中。能將搜集到的資源信息和作業(yè)信息數(shù)據(jù)準(zhǔn)確的匹配和是保證整個系統(tǒng)正確運(yùn)行的前提。第四,數(shù)據(jù)模塊。將處理完畢的數(shù)據(jù)按照指定格式生成相應(yīng)的數(shù)據(jù)文件以供交互式展示平臺和預(yù)測模擬器平臺。生成的數(shù)據(jù)分為三種:預(yù)測模擬器平臺所需的相應(yīng)數(shù)據(jù),格式為XML文件;交互式展示平臺所需要的相應(yīng)數(shù)據(jù),格式為JSON文件;交互式展示平臺所需的相應(yīng)數(shù)據(jù)的歷史備份,以供還原時,格式JSON文件。本文的主要內(nèi)容是設(shè)計一款面向HTCondor 的集群資源和作業(yè)信息系統(tǒng),該系統(tǒng)能將HTCondor所到的資源信息和作業(yè)信息提取出來并轉(zhuǎn)化成所需要的格式輸出到相應(yīng)的機(jī)制中。首先要明白HTCondor的運(yùn)行機(jī)理和生成的數(shù)據(jù)內(nèi)容與格式;再將HTCondor所的信息生成所需要的日志文件進(jìn)行解析;之后對解析到的數(shù)據(jù)進(jìn)首先,本文分析了將HTonor中的資源信息和作業(yè)信息進(jìn)行整合并二次加工的必要性,結(jié)合國內(nèi)外集群系統(tǒng)的現(xiàn)狀,了解了各類系統(tǒng)的優(yōu)缺點(diǎn),論述了HTCndor在顯示數(shù)據(jù)時數(shù)據(jù)分散于冗余較多的劣勢;然后,對相關(guān)理論基礎(chǔ)和所需要應(yīng)用的技術(shù)做出詳細(xì)論述;其次,明確提出面向HTCndr的集群資源和作業(yè)信息系統(tǒng)的功能需求和設(shè)計思路,給出系統(tǒng)的總體結(jié)構(gòu)設(shè)計和模塊概要設(shè)計;然后對原型系統(tǒng)進(jìn)行代碼第一章緒介紹課題的研究背景,闡述了國內(nèi)外現(xiàn)有的集群系統(tǒng)的特點(diǎn)與優(yōu)劣,同時也提出HTCondr在數(shù)據(jù)顯示端的劣勢和將其數(shù)據(jù)進(jìn)行再加工的必要性,提出本文的研究目標(biāo)和主要工作內(nèi)容和研究方法。第二章相關(guān)技術(shù)現(xiàn)狀介紹本文工作涉及到的主要相關(guān)理論及技術(shù),重點(diǎn)分析HTCondor的相關(guān)技術(shù)和指令和perl語言的應(yīng)用、javaruntime類的應(yīng)用、XMLJSON的語法的相關(guān)知識。第三章面向HTCondor的集群資源和作業(yè)信息系統(tǒng)設(shè)首先對系統(tǒng)的功能需求和設(shè)計目標(biāo)進(jìn)行進(jìn)一步的明確和總結(jié),然后根據(jù)功能需求,設(shè)計整個系統(tǒng)的結(jié)構(gòu)并進(jìn)行系統(tǒng)各個模塊的劃分,重點(diǎn)討論系統(tǒng)的設(shè)計原則以及各個模塊的總體設(shè)計概要。第四章面向HTCondor的集群資源和作業(yè)信息系統(tǒng)實詳細(xì)介紹集群系統(tǒng)的實現(xiàn)細(xì)節(jié)。首先介紹系統(tǒng)的開發(fā)環(huán)境概述,然后按照系統(tǒng)的模塊劃分:觸發(fā)器模塊、模塊、數(shù)據(jù)處理模塊和數(shù)據(jù)生成模塊這四大模塊的實現(xiàn)進(jìn)行闡述,最后對系統(tǒng)的模塊整合進(jìn)行介紹。第五章系統(tǒng)實完成系統(tǒng)的設(shè)計后,根據(jù)第三章功能需求對系統(tǒng)功能與性能進(jìn)試實驗并給出評價。功能測試主要以是數(shù)據(jù)是否準(zhǔn)確、生成數(shù)據(jù)是否完備、保存機(jī)制是否可靠為主,性能測試主要對是長時間大量作業(yè)是否仍能正確工作進(jìn)試。在最后的總結(jié)與展望中,總體評價整個原型系統(tǒng)的設(shè)計實現(xiàn),對本文提出并實現(xiàn)的面向HTConor的集群資源和作業(yè)信息系統(tǒng)進(jìn)行評估,對存在的問題進(jìn)行討論,并對下一步的工作進(jìn)行展望。本文主要研究并設(shè)計一種面向HTodor的集群資源和作業(yè)信息系統(tǒng),以及資源信息和作業(yè)信息匹配的相關(guān)算法,并生成XML與JON文件用于后續(xù)平臺解析。本章將分別針對與本系統(tǒng)設(shè)計過程相關(guān)的技術(shù)展開介紹。第一,要讓HTCondrHTCondr的運(yùn)作原理以及數(shù)據(jù)內(nèi)容與結(jié)構(gòu)有一定了解;第二,讓HTodr將當(dāng)前時刻所到的數(shù)據(jù)生成對應(yīng)日志文件,需要使用Java中Rutim.exe(將其數(shù)據(jù)重定向到對應(yīng)日志文件;第三,HTCondor所生成的日志文件資源信息和作業(yè)信息分開列出,需要設(shè)計相應(yīng)的算法進(jìn)行匹配;第四,為了建立可移植的、方便后續(xù)平臺的保存機(jī)制,采取了XML與JON格式來保存生成的數(shù)據(jù)。HTCondor是專門用于計算密集型作業(yè)的高通量開源作業(yè)批處理系統(tǒng)。它為用戶提業(yè)也可以提交并行作業(yè),HTCondor會把這些作業(yè)放到一個隊列中,并添加作業(yè)的編號,作業(yè)編號由clusterid與procid組成,clusterid表示其為第幾批上傳的作業(yè),procid表示的是這個作業(yè)是這一批作業(yè)的第幾個,之后根據(jù)作業(yè)的ClassAd與資源的ClassAd相匹配來確定調(diào)度的方案,之后仔細(xì)監(jiān)測作業(yè)執(zhí)行的進(jìn)展,用戶可以使用相應(yīng)指令查看系統(tǒng)資HTCondor的ClassAd類似于報紙上的分類專欄。機(jī)器擁有機(jī)器的ClassAd,作業(yè)也擁有自己的ClassAd。ClassAd中包含了其自身的很多信息[9]。RAM內(nèi)存,CPU類型、操作系統(tǒng)類型、虛擬內(nèi)存大小等等,機(jī)器還能通過ClassAd申明在什么條件下才愿意運(yùn)行Condor任務(wù)ClassAd可以通過HTCondor指令:condor_status–l來查詢[9],顯示結(jié)果如圖2.1。2.1ClassAd所有的作業(yè)也需要在自身的ClassAd中申明自身的屬性,比如作業(yè)批次、作業(yè)大小、作業(yè)占用內(nèi)存等等,同時作業(yè)也可以在ClassAd中需要在何種條件下運(yùn)行,這些需求都是用戶在上傳作業(yè)時能夠定義的,上傳作業(yè)后可以通過condor_q來查詢作業(yè)的隊列情況,查詢結(jié)果如圖2.2,也可以通過condor_q–l來查詢作業(yè)的ClassAd[9]2.2HTCndr通過扮演lassd中間人的方式來簡化任務(wù)提交,它好比是一個交易市場,將交易雙方(資源方和作業(yè)方的屬性與需求都放在一個平臺上,當(dāng)兩者的條件相滿足時,HTCndor就將相應(yīng)作業(yè)調(diào)度到相應(yīng)資源上去運(yùn)行。HTCondor通過condor_submit指令將作業(yè)提交到資源池,用戶需要提前建立一個提交描述文件(submitdescriptionfile)來用以提交作業(yè),在描述文件中需要添加作業(yè)運(yùn)行的程序以及HTCondor的運(yùn)行模式,用戶還可以通過描述文件來自定義作業(yè)的需求。當(dāng)作業(yè)上傳上去后,HTCondor就會根據(jù)資源和作業(yè)的ClassAd來調(diào)度作業(yè),用戶可以通過condor_q–run來查看上傳的作業(yè)與資源相互的匹配情況9查詢結(jié)果如圖2.2。2.3信息,需要通過condor_history來查看歷史作業(yè)信息[9]2.4。2.4我們可以發(fā)現(xiàn)在查詢自身想要的信息時,HTCondor在數(shù)據(jù)顯示時就體現(xiàn)出了它的ClassAd時會將整個ClassAd呈現(xiàn)在用戶面前,其中有許多用戶不關(guān)注的冗余信息,所以將HTCondor所產(chǎn)生的數(shù)據(jù)進(jìn)行再加工很有必要。JavaRuntimeRuntime類,是一個與JVM運(yùn)行時環(huán)境有關(guān)的類,這個類是Singletonutim.gtRuntim()可以取得當(dāng)前JVM的運(yùn)行時環(huán)境,這也是在Java中唯一一個得到運(yùn)行時環(huán)境的方法。untie上其他大部分的方法都是實例方法,也就是說每次進(jìn)行運(yùn)行時調(diào)用時都要用到gtRuntime方法。Runtime中的it方法是退出當(dāng)前JVM的方法。Runtime.exec()并不是s解釋器,在運(yùn)行命令時將額外的參數(shù)(">")傳到了命令中,導(dǎo)致了不能直接實現(xiàn)重定向的功能。為了解決這個問題,需要將你所需要執(zhí)行令字符串弄成一個字符串?dāng)?shù)組,并且將你想運(yùn)行的程序傳送到命令s[10]。在數(shù)據(jù)生成時,為了建立可靠并具有可移植性的保存機(jī)制,將處理完成后的數(shù)據(jù)存入相應(yīng)文件中,分別以XML與JON格式保存,XML文件供模擬器平臺,生成的顯示數(shù)據(jù)與歷史備份數(shù)據(jù)以JON格式保存,供交互式展示平臺。可擴(kuò)展標(biāo)記語言(eXtensibleMarkupLanguage,簡稱:XML,是一種標(biāo)記語言。標(biāo)HTML,也可以使用像XML這樣由相關(guān)自由決定的標(biāo)記語言,這就是語言的可擴(kuò)展性。XML是從標(biāo)準(zhǔn)通用XML的設(shè)計用來傳送以及攜帶數(shù)據(jù),不用來表現(xiàn)或展示數(shù)據(jù),所以XML用途的焦本系統(tǒng)將一些中間數(shù)據(jù)通過一些預(yù)處理后生成XML格式文件傳送給模擬器平臺,以便其與處理。JSON(JavaScriptObjectNotation)是一種輕量級的數(shù)據(jù)交換語言,以文字為基礎(chǔ),且易于讓人閱讀。JSONJavascriptJSON是獨(dú)立于語言的文本格式,并且采用了類似于C語言的一些習(xí)慣。它易于人編寫和閱讀,同時也方便機(jī)器解析JSON格式是1999年《JavaScriptProgrammingLanguage,StandardECMA-2623rdEditionJavaScripteval()函數(shù)讀入。不過這并不代表JSON無法使用于其他語言,幾乎所有與網(wǎng)頁開發(fā)相關(guān)的語言都有JSON庫。 (object“{”開始,并以“}”退出。一個對象包含一系列非排序的數(shù)組:一個或者多個值用“,”分區(qū)后,使用“[”,“]”括起來,取值方式和所有語言中一樣,使用索引獲取,字段值的類型可以是數(shù)字、字符串、數(shù)組、對象幾種[12]。以供交互式展示平臺選擇。本章主要介紹了本文實現(xiàn)的原型系統(tǒng)在設(shè)計與實現(xiàn)中所用到的相關(guān)技術(shù)和理論基礎(chǔ)。HTCondor是一個批作業(yè)管理系統(tǒng),它通過匹配系統(tǒng)和作業(yè)的ClassAd實現(xiàn)作業(yè)調(diào)度,在數(shù)據(jù)顯示端由于數(shù)據(jù)分散以及冗余信息的原因?qū)е缕湔故灸芰τ邢蕖@胘ava中runtime類可以完成讓HTCondor重定向生成數(shù)據(jù)日志文件,在實現(xiàn)過程中需要注意exec()方法在實現(xiàn)重定向時的問題。由于XML和JSON的可移植性特性,可以用來面向HTCondor的集群資源和作業(yè)信息系統(tǒng)設(shè)本章兩章內(nèi)容的基礎(chǔ)上,首先從目前已有的集群發(fā)現(xiàn)系統(tǒng)出發(fā),分析了HTCondor在數(shù)據(jù)展示端的劣勢,面向HTCondor的集群資源和作業(yè)信息系統(tǒng)的功能需隨著大數(shù)據(jù)時代的來臨,集群系統(tǒng)上所運(yùn)行的作業(yè)越來越多,需要運(yùn)行的時間也越來于資源信息和作業(yè)信息的收集,其特色是雙方的ClassAd中可以其固有屬性,用戶也可以通過ClassAd來機(jī)器的要求和作業(yè)的需求,所以應(yīng)該較為充分的發(fā)掘其中的信息。但是由于HTCondor在展示數(shù)據(jù)時較為分散,不利于用戶觀察系統(tǒng)的整個狀態(tài),需要本系統(tǒng)在對收集到的數(shù)據(jù)進(jìn)行再一次的匹配。再加上ClassAd中有許多用戶不需要知從以上描述中可以得出,面向HTCondor的集群資源和作業(yè)信息系統(tǒng)中應(yīng)包含原始數(shù)據(jù)。首先需要將HTCondor收集到的數(shù)據(jù)重定向輸出數(shù)據(jù)日志文件,在收集到數(shù)據(jù)后,數(shù)據(jù)。在數(shù)據(jù)時,需要對原始數(shù)據(jù)盡進(jìn)行篩選,明確哪些信息是需要提取出來的。要明確資源和作業(yè)的對應(yīng)關(guān)系,線程HTCondor所能到的最小運(yùn)相匹配,并做上顏色標(biāo)注,通過資源和作業(yè)的ClassAd來判斷作業(yè)能夠在哪些線程生成數(shù)據(jù)。由于要分別給模擬器平臺和交互式數(shù)據(jù)展示平臺生成其所需的數(shù)據(jù),所以生成的數(shù)據(jù)需要符合這兩個平臺的要求,分別采用了XML與JON的形式輸出。由于最終生成的數(shù)據(jù)類別不是太多,所以沒有考慮采用數(shù)據(jù)庫的方式來實現(xiàn)平臺的數(shù)據(jù)傳輸。定時。由于本系統(tǒng)屬于系統(tǒng),需要定時的對集群信息進(jìn)行,就在明確功能需求的基礎(chǔ)上,分析上述的系統(tǒng)功能需求可以得出三點(diǎn)要求:1)本系統(tǒng)需要在長時間運(yùn)行數(shù)據(jù)并生成數(shù)據(jù);2)系統(tǒng)需要對到的原始數(shù)據(jù)根據(jù)后模擬器平臺和交互式數(shù)據(jù)展示平臺的需求做出篩選、匹配和一定的預(yù)處理;3)生成的數(shù)據(jù)格式需要與模擬器平臺和交互式數(shù)據(jù)展示平臺相匹配。在設(shè)計系統(tǒng)時,我們?yōu)榱诉_(dá)到這些要求,可以明確系統(tǒng)設(shè)計原則如下:模塊化原則:本系統(tǒng)的各個獨(dú)立功能的分離要求了系統(tǒng)需要高度模塊化,需要對各個單個模塊進(jìn)行單獨(dú)設(shè)計、實現(xiàn),單元測試后與其他模塊集成,模塊化的原則也讓系統(tǒng)的復(fù)雜度有了很大的下降,降低了編寫時的難度,理清了編寫時的思路,但對模塊間通訊和耦合提出了更高的要求。數(shù)據(jù)一致性原則:本系統(tǒng)的由于數(shù)據(jù)對象較多,HTCondor所生成的數(shù)據(jù)日志文件也較為分散,所以在到原始數(shù)據(jù)后要進(jìn)行深度的匹配,不能出現(xiàn)數(shù)據(jù)前后規(guī)范化原則:本文最終實現(xiàn)的是將處理好的數(shù)據(jù)按照指定的格式輸出為目標(biāo)文件,以供后續(xù)平臺處理。因此與后續(xù)平臺的數(shù)據(jù)格式應(yīng)該嚴(yán)格一致,本系統(tǒng)將按照XML和JON格式輸出對應(yīng)文件。3.1圖3.1集群系統(tǒng)端動作,用戶通過HTCondor提交作業(yè)后,HTCondor匹配ClassAd并交的作業(yè)就會被本系統(tǒng)記錄,并建立可靠的保存機(jī)制與信息填充機(jī)制。HTCondor將作獲取日志文件。觸發(fā)器發(fā)送命令讓HTCondor生成日志文件,這個模塊的設(shè)計從觸發(fā)器發(fā)送命令開始,最終讓HTCondor將所到的數(shù)據(jù)重定向到日志文件中,為要其反饋文件,最終生成顯示數(shù)據(jù)和歷史備份數(shù)據(jù)供交互式展示平臺。數(shù)據(jù)處理。這是本系統(tǒng)的部分。首先應(yīng)將分散的數(shù)據(jù)整合進(jìn)所建立的對象數(shù)據(jù)生成。將格式化處理好過后的數(shù)據(jù)寫入對應(yīng)的文件中,并傳輸給后續(xù)平臺以供處理。根據(jù)以上功能需求和系統(tǒng)流程設(shè)計,我們可以初步得出需要四個模塊:觸發(fā)器模塊、數(shù)據(jù)提取模塊、數(shù)據(jù)處理模塊和數(shù)據(jù)生成模塊。觸發(fā)器模塊主要負(fù)責(zé)將HTCondor搜集到的數(shù)據(jù)生成為日志文件,輸出到指定路徑;數(shù)據(jù)提取模塊主要負(fù)責(zé)讀據(jù)好的數(shù)據(jù)按照指定格式生成為可讀文件,供后續(xù)平臺。在系統(tǒng)實時刷新過后,需要對需要刷新的對象進(jìn)行刷新,但對之前到的作業(yè)信息不能刷新。觸發(fā)器模塊。觸發(fā)器模塊需要完成與HTCondor進(jìn)行通信的功能,通過相應(yīng)的HTCondor生成數(shù)據(jù)日志文件。因此就需要通過java程序?qū)崿F(xiàn)讓終端執(zhí)行相關(guān)指令的功能。并且生成的日志文件要放入指定的位置,以供數(shù)據(jù)模塊正確。數(shù)據(jù)模塊。數(shù)據(jù)模塊的功能是將HTCondor生成的數(shù)據(jù)日志文件里的數(shù)據(jù)采用讀文件的方式,將數(shù)據(jù)存入相應(yīng)的對象中,以供后續(xù)處理。在數(shù)據(jù)時需要對冗余數(shù)據(jù)進(jìn)行初步篩除,用戶所關(guān)注的數(shù)據(jù)。數(shù)據(jù)模塊還需要模擬器平數(shù)據(jù)處理模塊。本系統(tǒng)模塊,雖然所做得預(yù)處理并不復(fù)雜,但是通過這一核心模塊實現(xiàn)了對原始數(shù)據(jù)的二次加工與整合。根據(jù)后續(xù)平臺的要求來處理相關(guān)數(shù)據(jù),將分散回來的數(shù)據(jù)進(jìn)行進(jìn)一步的整合與添加信息,有效的提高了數(shù)據(jù)的利用率與活度。數(shù)據(jù)生成模塊。將處理好的數(shù)據(jù)按格式輸出為指定文件,與后續(xù)文件格式要求一致。接口模塊主要完成的功能是通過程序向控制臺發(fā)送指令,將HTCondor收集并查詢到的信息重定向到數(shù)據(jù)日志文件中,以供數(shù)據(jù)平臺。每次程序執(zhí)行時都發(fā)送指令本模塊主要分為以下兩個部分設(shè)計:明確需要獲取的信息和通過runtimeexec()1)本系統(tǒng)主要關(guān)注的是系統(tǒng)內(nèi)的資源信息和作業(yè)信息,以及二者的匹配情況。需要查詢的是系統(tǒng)的節(jié)點(diǎn)信息和線程信息以及機(jī)器的lassAd信息,還需要獲得作業(yè)信息和作業(yè)的CassAd信息以及作業(yè)與資源的匹配信息,最后需要獲取作業(yè)的歷史信息以及歷史信息的lassd。了解了所需要的相關(guān)信息,便知道了需要用調(diào)用哪些指令來查看這些信息,最終實現(xiàn)重定向輸出數(shù)據(jù)日志文件。將所需要的信息重定向至工程所在的文件下,以供數(shù)據(jù)模塊。生成的數(shù)據(jù)日志文件有七個。分別保存資源信息、機(jī)器ClassAd信息、作業(yè)隊列信息、作業(yè)ClassAd信息、作業(yè)資源匹配信息、作業(yè)歷史信息、作業(yè)歷史ClassAd信息。數(shù)據(jù)模塊設(shè)對于數(shù)據(jù)模塊來說,直接采用讀文件操作的方式去觸發(fā)器模塊生成的數(shù)日志文件和預(yù)測模擬器平饋回來的作業(yè)時間預(yù)測信息,然后將對數(shù)據(jù)進(jìn)行初步的篩用以輔助的類——用以存放資源lassAd的類、用以存放作業(yè)ClssAd的類、用以存放匹配信息的類、用以存放歷史信息ClassAd的類以及存放預(yù)測反饋信息的類。其中為了方便數(shù)據(jù)將用以存放資源信息的類拆成了兩個類——用以存放節(jié)點(diǎn)信息的類和用以存放線程信息的兩個類。1)由于是主要的類,我希望類中應(yīng)該能包含生成數(shù)據(jù)時所需要用到的所有信息,減少對象的調(diào)用,這些信息有部分是從對應(yīng)的數(shù)據(jù)日志文件直接出來的,有的是從輔助類通過數(shù)據(jù)處理模塊添加進(jìn)去的。在設(shè)計這四個類時,他們的構(gòu)成相似度很高,這里我列舉出用以存放線程信息的類來進(jìn)一步說明我的設(shè)計思路。其包含的屬性有:A.threadid,標(biāo)記該線程的ID;B.name,線程的名稱跟id一樣是唯一的;C.nodeid,該線程所在的節(jié)點(diǎn)的ID;D.stats,線程的狀態(tài),是否被Claimed;E.activity,線程的活動狀態(tài),空閑(Idle(Running)或者暫停(Suspended.mem,在方法上,它包含以下基礎(chǔ)方法:A.getter、setter,提供對以上變量設(shè)置與的兩個;B.能夠?qū)r間數(shù)據(jù)的顯示量和計算量進(jìn)行轉(zhuǎn)換。2)用以輔助的對與輔助類來說,建立的目的是將從數(shù)據(jù)日志文件中發(fā)掘出用于實現(xiàn)數(shù)據(jù)匹配和數(shù)據(jù)擴(kuò)充的數(shù)據(jù)的。是對主要信息的補(bǔ)充,也是數(shù)據(jù)處理模塊不可或缺的數(shù)據(jù)。用于存取ClassAd.經(jīng)過篩選后的對應(yīng)對象的Clssd信息;.對應(yīng)資源信息、作業(yè)信息、歷史信息編號,以便處理模塊進(jìn)行匹配。用于作業(yè)與資源匹配信息的類中包含了作業(yè)編號、線程名稱、線程編號等信息。整個數(shù)據(jù)模塊,類似于語法分析器,具體實現(xiàn)方法,在之后的系統(tǒng)實現(xiàn)部分詳細(xì)對于數(shù)據(jù)處理模塊來說,是整個系統(tǒng)的功能模塊,是將原始數(shù)據(jù)轉(zhuǎn)化為可用數(shù)據(jù)的關(guān)鍵模塊。該模塊主要包含的功能有:1)將用以lassAd的類中的信息通過匹配算法添加至對應(yīng)的主要的類中;2)為作業(yè)添加顏色標(biāo)注,再根據(jù)匹配信息為線程添加對應(yīng)的顏色標(biāo)注;3)根據(jù)歷史信息,來更改作業(yè)列表中的作業(yè)信息。這些類在采用對象數(shù)組的方式來相應(yīng)的信息。該功能涉及到將用以資源ClassAd的類、用以作業(yè)ClassAd的類以及用以作業(yè)歷史ClassAd的類中所被后續(xù)平臺需求的數(shù)據(jù)添加入對應(yīng)的主要的類中。對于資源信息的添加來說,即對線程信息進(jìn)行添加,線程信息中,treadname,線程名稱是對于每個線程來說是獨(dú)立的,所以在確定lassAd中信息所添加的位置。首先遍歷所有的線程ClassAd信息,然后再遍歷線程信息,根據(jù)雙方信息共有的線程名稱來實現(xiàn)匹配,匹配完成后,確定了ClassAd中信息所添加的位置,將所需求對于作業(yè)信息與作業(yè)歷史信息添加來說,算法與資源信息添加相似,不過匹配時采用的特征量是lutrid與proid。oor對于尚未開始運(yùn)行和正在運(yùn)行的作業(yè)來說,首先遍歷作業(yè)信息,判斷作業(yè)信息中color字段是否為#FFFFFF(白色)即未添加顏色標(biāo)注的作業(yè),再遍歷顏色信息,查找出未被占用的且顏色編號最小的顏色,將對應(yīng)的顏色代碼添加到該作業(yè)的color字段首先遍歷匹配信息,通過每條匹配信息中的線程編號以及作業(yè)編號,可以獲得需要進(jìn)行顏色添加的線程所程對象數(shù)組中的具置,以及與其運(yùn)行的作業(yè)所在對象數(shù)組的具置,即可將該作業(yè)的oor字段添加到該線程的oor字段。該功能主要是修改完成作業(yè)的信息,HTCondor所生成的作業(yè)隊列數(shù)據(jù)日志文件中,clusteridprocid來對作業(yè)信息與作業(yè)歷史信息進(jìn)行匹配,可以獲得已完成的作業(yè)所在作業(yè)對象數(shù)組中的具置,將其stat字段設(shè)置為Complteru_im_display字段設(shè)置為目標(biāo)作業(yè)歷史信息中的對應(yīng)字段,并計算出運(yùn)行時間的計算量的值,將run_time_caculate字段設(shè)置為該值;通過color與顏色信息中的顏色代碼進(jìn)行匹配,得出需要修改的顏色所在顏色信息對象數(shù)組中的位置,colr字段設(shè)置為#CCCCCC(灰色 于預(yù)測模擬器平臺說,輸出的數(shù)據(jù)格式為XML,需要輸出的信息是處理后的系據(jù)格式需要滿足后續(xù)平臺的要求。system_time,系統(tǒng)時間,其數(shù)據(jù)格式為yyyy-mm-ddhh:MM:ss;thread_count,線程od_id,節(jié)點(diǎn)編號;nd_thra_id,該節(jié)點(diǎn)所包含的線程所對應(yīng)的線程編號,編號之間以逗號隔開。job_id,作業(yè)編號,這里的編號與本系統(tǒng)給作業(yè)信息添加的編號不同,此編號由clusterid與procid組成,是HTCondor為作業(yè)添加的編號;job_state,作業(yè)的狀態(tài),有三(Complte(Idle)與掛起(Hold)job_runime,作業(yè)運(yùn)行時間,未開始的作業(yè)數(shù)據(jù)值設(shè)為-1;job_size,作業(yè)所占物理內(nèi)存大??;ob_thread_id業(yè)CssAd的匹配情況得出;ob_ppn,作bsbrtime,開始數(shù)據(jù)時的系統(tǒng)時間,數(shù)據(jù)格式為yyyy-mm-ddhh:MM:ss;2)info_num,信息數(shù)量;JobNumber,作業(yè)總數(shù);Runningjobs,正在運(yùn)行的作業(yè)的數(shù)量;Heldjobs,被掛起的作業(yè)數(shù)量;Suspendedjobs,被暫停的作業(yè)數(shù)量;Completedjobs,開啟本系統(tǒng)后,已完成的作業(yè)數(shù)量;Idlejobs,空閑作業(yè)的數(shù)量;Resourceutilization,task_num,作業(yè)總數(shù);id,作業(yè)編號,其格式為task+作業(yè)編號數(shù)字;name,用以顯job和其作業(yè)編號組成;submitter,作業(yè)的提交用戶名;update_time,作業(yè)的提交時間;數(shù)據(jù)格式為MM/ddHH:mm;run_time,作業(yè)運(yùn)行時間,格式為(Complete(Runing閑(Idle、暫停(Suspended)與掛起(Hold;color,作業(yè)顏色標(biāo)記,由#和顏色代碼graph_num,作業(yè)圖表元素數(shù)量;name,由job和作業(yè)編號數(shù)字組,已經(jīng)結(jié)束的作業(yè)不在圖表信息中體現(xiàn);s_time,作業(yè)開始時間,相對于當(dāng)前時間的時間計算量,已經(jīng)開始值,單位是秒;e_time,作業(yè)的結(jié)束時間,值均為負(fù)值,均由預(yù)測模擬器平臺提供;color,對于輸出的日志文件,以供交互式展示原數(shù)據(jù),生成的日志文件時在其文件名中添加在信息時的系統(tǒng)時間。由于本系統(tǒng)要對集群信息實現(xiàn),不能只一次數(shù)據(jù)就結(jié)束,需要循環(huán)執(zhí)行。系統(tǒng)按規(guī)定時間間隔對數(shù)據(jù)進(jìn)行收集,就需要對相應(yīng)的對象以及設(shè)置的臨時變量進(jìn)行刷新,但作業(yè)信息由于需要顯示歷史信息,所以不對用以保存作業(yè)信息的對象進(jìn)行刷新。在本系統(tǒng)開始運(yùn)行后,首先需要對變量與對象進(jìn)行初始化。然后開始逐步執(zhí)行每一個功能模塊,直至數(shù)據(jù)生成模塊運(yùn)行完成,最終生成以供交互式展示平臺的數(shù)據(jù)以及歷史數(shù)據(jù)備份后,本系統(tǒng)完成一次流程。在等待規(guī)定時間后,準(zhǔn)備運(yùn)行下一個流程,再功能模塊執(zhí)行前需要對除用以保存作業(yè)信息的對象以及保存作業(yè)數(shù)量的變量以外的對象與變量進(jìn)行刷新,確保每一次到的都是當(dāng)前HTodr所生成的資源信息和作業(yè)信息。本章著重介紹了面向HTCodnor的集群資源和作業(yè)信息系統(tǒng)的需求和設(shè)計。首面向HTCondor的集群資源和作業(yè)信息系統(tǒng)實根據(jù)第三章介紹的面向HTCondor的集群資源和作業(yè)信息系統(tǒng)的總體設(shè)計和功能模塊詳細(xì)設(shè)計,本章將給出觸發(fā)器模塊、數(shù)據(jù)模塊、數(shù)據(jù)處理模塊和數(shù)據(jù)生成模塊本系統(tǒng)屬于系統(tǒng),運(yùn)行在安裝了HTCondor的linux系統(tǒng)上開發(fā)環(huán)境是Ubuntu個人計算機(jī)。整個系統(tǒng)使用JavaHTCondor版本:7.8.2Sep302012開發(fā)語言:Java,JDK本系統(tǒng)總體實現(xiàn)一個集群資源和作業(yè)信息系統(tǒng),包括從觸發(fā)器發(fā)送命令使HTCondor輸出數(shù)據(jù)日志文件、數(shù)據(jù)日志文件、處理數(shù)據(jù)、最終到生成數(shù)據(jù)文件。HTCondor系統(tǒng)通過獲Java的Runtime類的exec()方法,執(zhí)行相應(yīng)令,使HTCondor生成數(shù)據(jù)日志文件。由于采用重定向的方式產(chǎn)生數(shù)據(jù)日志文件,故需要將所需要執(zhí)行令字符串弄成一個字符串?dāng)?shù)組,并且將你想運(yùn)行的程序傳送到命令s。以及數(shù)據(jù)信息的實現(xiàn)1)信息。采用Java讀文件的方式,將文件中的數(shù)據(jù)以空格作為分界線按照詞出來,類似于詞法分析器的功能,不過為對出來的單詞進(jìn)行分類標(biāo)注。2)信息。類似于語法分析器的方式,對每一個出來的單詞進(jìn)行分析匹配,添加信息、添加顏色標(biāo)注以及的實現(xiàn)添加信息。通過特征量匹配,得到ClassAd的類中的相關(guān)字段應(yīng)該添加的添加顏色標(biāo)注。先對作業(yè)信息做出顏色標(biāo)注操作,再通過匹配信息將作業(yè)的顏色字段添加入運(yùn)行該作業(yè)的線程的顏色字段。更改作業(yè)信息。通過作業(yè)歷史信息,將已經(jīng)運(yùn)行完成的作業(yè)信息進(jìn)行對應(yīng)的修改,并對占用的顏色進(jìn)行釋放。輸出用以預(yù)測數(shù)據(jù)。按照XML的格式輸出預(yù)測模擬器平臺需求的數(shù)據(jù),采用輸出顯示數(shù)據(jù)。按照J(rèn)SON格式輸出交互式展示平臺需求的數(shù)據(jù),亦采用寫文輸出歷史日志數(shù)據(jù)。在輸出顯示數(shù)據(jù)后,將顯示數(shù)據(jù)再輸出一遍,文件名中添加本系統(tǒng)開始時的系統(tǒng)時間。觸發(fā)器模塊較為簡單,調(diào)用了Runtime類中的exec()將所需要執(zhí)行令字符串弄成一個字符串?dāng)?shù)組,并且將你想運(yùn)行的程序傳送到命令s 歷史作業(yè)信息、作業(yè)匹配信息、資源ClassAd信息、作業(yè)隊列ClassAd信息以及歷史作業(yè)ClassAd信息分別重定向到condor_source.txtcondor_job.txtcondor_history.txt、condor_match.txt、condor_sourceCA.txt、condor_jobCA.txt以及condor_historyCA.txt這些數(shù)據(jù)日志文件中,以供數(shù)據(jù)模塊。Processprocess=Runtime.getRuntime().exec(newString[]{"sh","->condor_job.txt&&condor_q-run>condor_match.txt&&condor_status>condor_source.txt&&condor_history>condor_history.txt&&condor_status-l>condor_souceCA.txt&&condor_history-l>condor_historyCA.txt&&condor_q-l>condor_jobCA.txt"});}catch(java.io.IOExceptionSystem.err.println("IOException"+}數(shù)據(jù)模塊實從觸發(fā)器模塊生成的數(shù)據(jù)日志文件,經(jīng)過本模塊操作后,存入相應(yīng)的類對象中,以供數(shù)據(jù)處理模塊進(jìn)行對數(shù)據(jù)的進(jìn)一步處理。在本模塊中,除了將數(shù)據(jù)從數(shù)據(jù)日志文件中按單詞讀入后,還要根據(jù)數(shù)據(jù)排列規(guī)則,通過類似語法分析器的方式將數(shù)據(jù)至對應(yīng)的類對象中,其中還涉及了冗余信息的去除。信息模型即系統(tǒng)所收集到的資源、作業(yè)、歷史、匹配信息和他們的ClassAd信息以信息來說,使用MachineStat類對象machine,來節(jié)點(diǎn)信息。對于線程信息,使用ThreadStat類對象thread,來線程信息,使之可以根據(jù)nodename來映射到他屬于的對于作業(yè)信息來說,使用JobStat類對象job來其信息,對于作業(yè)歷史信息來說,使用HistoryStat類對象history來其信息,使其能根據(jù)clusterid和procid來映射他所在作業(yè)隊列的具置。MatchStatmatch來其信息,根據(jù)其中的jobid和nodeid實現(xiàn)了作業(yè)信息和線程信息的匹配。JobCAStat類對象jobca以及HistoryCAStat類對象historyca來其信息,SourceCAStat類根據(jù)nodeid與threadid來映射他屬于的節(jié)點(diǎn)和線程;JobCAStat類根據(jù)clusterid和procid來映射他屬于的作業(yè);HistoryCAStat類根據(jù)clusterid和procid來映射他屬于的歷對于預(yù)測信息來說,使用SimulatorStat類來,使其能根據(jù)clusterid和procid來映射他匹配的作業(yè)所在作業(yè)隊列的具置。采用類似于詞法分析器的方法來實現(xiàn)信息功能。由于每個數(shù)據(jù)日志文件時采用的方式都較為類似,將文件內(nèi)容以單詞的形式讀入一個寄存字符串變量wrd中,以空格、換行符、制表符來隔開每個單詞。reader=newInputStreamReader(newFileInputStream(f));inttempchar;while((tempchar=reader.read())!=-1){while(tempchar!=32&&tempchar!=1&&tempchar!=10){tempchar=讀文件時,每次讀入一個字符tempchar,將字符添加字符串word的尾部,直至tempchar的值為空格符、換行符或結(jié)束符時,停止向字符串添加,獲取到一個新的單詞word,進(jìn)行信息處理。在信息時,用以節(jié)點(diǎn)信息的類MachineStat、用以線程信息的類ThreadStat、用以作業(yè)信息的類JobStat、用以歷史信息的類HistoryStat、用以匹配信息的類MacthStat以及用以模擬器反饋信息SimulatorStat的類所采用的方式的機(jī)制是相同的,每次一個word時對計數(shù)器進(jìn)行加一操作,根據(jù)單詞所在文件中的位置,即計數(shù)器的數(shù)量來判斷其是否應(yīng)該被到對應(yīng)的類中,以及判斷其應(yīng)該被的字段。publicstaticbooleanmatchnodename(Strings,inta,MachineStat[]n){inti;for(i=0;i<=a;i++){if(com(s,n[i].getname()))returntrue;}return}publicstaticintgetjobposition(inta,intb,intc,JobStat[]j){inti;tprocid()==b){returni;}}return-}資源、作業(yè)和歷史的ClassAd信息的數(shù)據(jù)日志文件由于內(nèi)容較多,采用類似于語法分lassAd之后對賦值語句進(jìn)行判斷,讀入下一個單詞,若下一個單詞為"=",則繼續(xù)讀入下一個單詞,并將該單詞添加到對應(yīng)的類的相應(yīng)字段。這個模塊實現(xiàn)了三大功能:1)將用以 的三個類SourceCAStatJbCAtatHsoryCAtat中的信息通過匹配算法添加至對應(yīng)的主要的類中;2為作業(yè)添加顏色標(biāo)注,再根據(jù)匹配信息為線程添加對應(yīng)的顏色標(biāo)注;3)根據(jù)歷史信息,來更改作業(yè)列表中的作業(yè)信息。這些類在采用對象數(shù)組的方式來相應(yīng)的信息。數(shù)據(jù)處理模塊根據(jù)信息模型中各個類的依附關(guān)系來進(jìn)行匹配處理。該功能實現(xiàn)了將ClassAd的類中所被后續(xù)平臺需求的數(shù)據(jù)添加入對應(yīng)的主要的對于資源信息的添加來說,即對線程信息進(jìn)行添加,線程信息中,threadname,線程名稱是對于每個線程來說是獨(dú)立的,所以在確定lassAd中信息所添加的位置。首先遍歷所有的線程ClassAd信息,然后再遍歷線程信息,根據(jù)雙方信息共有的線程名稱來實現(xiàn)匹配,匹配完成后,確定了ClassAd中信息所添加的位置,將所需求對于作業(yè)信息與作業(yè)歷史信息添加來說,算法與資源信息添加相似,不過匹配時采用的特征量是lutrid與proid。貼出添加作業(yè)ClassAdpublicstaticvoidAddJobInfo(int[]array,JobStat[]jo,JobCAStat[]joca){inti,j=0;for(i=0;i<array[2];i++){for(j=0;j< ].sethost_num(joca[j].gethost_num());jo[i].setsize(joca[j].getsize());}}}}實現(xiàn)了對依次對到的作業(yè)信息的顏色標(biāo)注,根據(jù)匹配信息中的jobid和oor對于尚未開始運(yùn)行和正在運(yùn)行的作業(yè)來說,首先遍歷對象job,判斷該類中oor字段是否為#FFF(白色)即未添加顏色標(biāo)注的作業(yè),再遍歷對象olrino,查找出未被占用的且顏色編號最小的顏色,將對應(yīng)的顏色代碼添加到該對象的oor字段中。對于已完成的作業(yè)來說,不需要再添加顏色標(biāo)注。首先遍歷對象match,通過每條匹配信息中的threadid以及jobid,可以獲得需要進(jìn)行顏色添加的線程所程對象數(shù)組中的具置,以及與其運(yùn)行的作業(yè)所在對象數(shù)組的具置,即可將該作業(yè)的color字段添加到該線程的color字段。主要實現(xiàn)對作業(yè)隊列信息中已完成的作業(yè)的信息的修改,根據(jù)作業(yè)歷史信息中的clusterid與procid映射到他所屬于的作業(yè)信息所在作業(yè)隊列中的位置,修改對應(yīng)位置作job,再遍歷對象historyclusteridprocid來對作業(yè)信息與作業(yè)歷史信息進(jìn)行匹配可以獲得已完成的作業(yè)所在作業(yè)對象數(shù)組中的具置將其stat字段設(shè)置為Complete;run_time_display字段設(shè)置為目標(biāo)作業(yè)歷史信息中的對應(yīng)字段,并計算出運(yùn)行時間的計算量的值,將run_time_caculate字段設(shè)置為該值;通過color字color字段設(shè)置為#333333(灰色輸出系統(tǒng)時間和線程數(shù)量,系統(tǒng)時間利用java.util.Date,java.text.SimpleDateFormat包中的sdf.format()方法與SimpleDateFormat類來獲取。而線程數(shù)量根據(jù)本系統(tǒng)所設(shè)輸出節(jié)點(diǎn)編號和其擁有的線程編號,通過線程信息中的nodename可以映射到該線對應(yīng)的節(jié)點(diǎn),并獲取該線程的id。輸出作業(yè)編號、作業(yè)狀態(tài)、作業(yè)運(yùn)行時間、作業(yè)大小、作業(yè)運(yùn)行的可執(zhí)行程序、作業(yè)提交者以及作業(yè)可調(diào)度的線程編號。這些信息均在經(jīng)數(shù)據(jù)處理模塊整合處理后的作業(yè)信息的類對象job中。輸出節(jié)點(diǎn)編號以及其擁有的節(jié)點(diǎn)的編號以及顏色信息。這些信息均在經(jīng)數(shù)據(jù)處理模塊整合后的節(jié)點(diǎn)信息和線程信息的類對象中。通過線程信息中的nodame可以映射到該線對應(yīng)的節(jié)點(diǎn),并獲取該線程的id和顏色信息。這里的信息作為統(tǒng)計信息,本系統(tǒng)設(shè)置了計數(shù)變量來對作業(yè)數(shù)量進(jìn)行統(tǒng)計,遍歷整個作業(yè)信息,按作業(yè)狀態(tài)來進(jìn)行匹配,匹配成功的將對應(yīng)計數(shù)器進(jìn)行加一操作。作業(yè)利用率也是通過計算得出,設(shè)置計數(shù)器來統(tǒng)計被占用的線程數(shù),遍歷整個線程信息,按線程活動狀態(tài)進(jìn)行匹配,若線程活動狀態(tài)為被占用狀態(tài)即Idle(空閑)狀態(tài),則對計數(shù)器進(jìn)行加一操作,最終用計數(shù)器值除以線程總數(shù)得出資源利用率。均在經(jīng)數(shù)據(jù)處理模塊整合處理后的作業(yè)信息的類對象job中。輸出作業(yè)編號、作業(yè)開始時間、作業(yè)結(jié)束時間以及作業(yè)運(yùn)行時占用的線程數(shù)量。這些信息均在經(jīng)處理器模塊整合處理后的作業(yè)信息的類對象job中。對于結(jié)束時間來說,是作業(yè)結(jié)束運(yùn)行時間和當(dāng)前時間的差值,單位為秒,其值為正數(shù)。所有作業(yè)的結(jié)束時間都是通過模擬器平饋的作業(yè)運(yùn)行總時間減去作業(yè)開始時間與輸出結(jié)果信息的實現(xiàn)方法一樣,不過輸出的歷史日志信息的文件名是帶有時的在系統(tǒng)每運(yùn)行完一個系統(tǒng)周期后,對除了作業(yè)信息的對象和顏色信息的對象的變根據(jù)上一章節(jié)的需求說明和設(shè)計,本章介紹了整個集群資源和作業(yè)信息系統(tǒng)的實現(xiàn)。分別介紹了系統(tǒng)四大模塊——觸發(fā)器模塊、數(shù)據(jù)模塊、數(shù)據(jù)處理可模塊以及前兩個章節(jié)分別介紹了面向HTCondor的集群資源和作業(yè)信息系統(tǒng)的詳細(xì)設(shè)計及功能模塊的具體實現(xiàn)過程。本章將對本系統(tǒng)的功能和性能進(jìn)試和分析。首先介紹實驗環(huán)境,然后針對系統(tǒng)功能設(shè)計具體的實驗,實施實驗并分析,驗證本系統(tǒng)根據(jù)系統(tǒng)需要,實驗服務(wù)器系統(tǒng)選用Ubuntu系統(tǒng),關(guān)于驗證本系統(tǒng)功能和性能測1) HTCondor版本:7.8.2Sep302012,驗證以下功能,并測定本系統(tǒng)的數(shù)據(jù)是否正確,是否完備:觸發(fā)器讓 生成數(shù)據(jù)日志文件,以供數(shù)據(jù)模塊數(shù)據(jù)模塊從數(shù)據(jù)日志文件中信息,并保存到相應(yīng)的類對象中數(shù)據(jù)處理模塊,對已經(jīng)保存在相應(yīng)類對象的數(shù)據(jù)進(jìn)行操作,有三種操作:添加信息,添加顏色標(biāo)注以及修改作業(yè)信息;數(shù)據(jù)生成模塊先生成模擬器平臺所需要的數(shù)據(jù),經(jīng)模擬器模塊處理后反饋?zhàn)鳂I(yè)的時間預(yù)測信息,再交由數(shù)據(jù)模塊與數(shù)據(jù)處理模塊處理;在生成完交互式展示平臺可數(shù)據(jù)文件據(jù)生成模塊生成歷史日志文件,以供交互展示平恢復(fù)備,在文名中上時系統(tǒng)時間。器平饋回來的預(yù)測信息由我根據(jù)數(shù)據(jù)格式編寫。編寫好若干submitfile以通過HTCondor提交作業(yè),HTCondor模式均為vanilla,不輸出log文件。編寫預(yù)測模擬器平饋數(shù)為測試本系統(tǒng)的功能,根據(jù)作業(yè)隊列信息,編寫預(yù)測模擬器平饋數(shù)據(jù)。反饋的數(shù)據(jù)為作業(yè)的clusterid、作業(yè)的procid、作業(yè)開始時間、作業(yè)總運(yùn)行時間,對于已經(jīng)開始用戶僅需要通過HTCondor觸發(fā)器讓HTCondor打開所有配置環(huán)境,用戶開始通過HTCondor 初始化后結(jié)束后,進(jìn)入到觸發(fā)器模塊,讓HTCondor重定向輸出數(shù)據(jù)日志文件到指定位5.1系統(tǒng)運(yùn)行終端輸出如圖5.15.2由圖 信息和資源、作業(yè)以及作業(yè)歷史的 5.3HTCondorHTCondor中實驗步等待數(shù)據(jù)模塊與作業(yè)處理模塊運(yùn)行完畢,數(shù)據(jù)生成模塊生成模擬器平臺所需要5.5如圖5.5所示,實驗結(jié)果表明,數(shù)據(jù)生成模塊按照預(yù)測模擬器平臺的需求輸出了對實驗步等待數(shù)據(jù)模塊和數(shù)據(jù)處理模塊對模擬器平饋數(shù)據(jù)進(jìn)行操作后,生成交互式5.65.7實驗結(jié)果如圖5.6、5.7所示,實驗結(jié)果表明,數(shù)據(jù)生成模塊成功輸出滿互式展5.8實驗結(jié)果如圖5.8所示,實驗結(jié)果表明,本次輸出的日志文件與數(shù)據(jù)結(jié)果文件內(nèi)容觸發(fā)器模塊成功讓 數(shù)據(jù)模塊正確運(yùn)行,的信息是正確的、完備的,與HTCondor中所查本系統(tǒng)的性能驗證,即實驗驗證本系統(tǒng)在多個刷新時間內(nèi)對集群資源和作業(yè)信息本實驗的目的是,在配置好實驗環(huán)境之后,本系統(tǒng)在多個刷新時間內(nèi)的系統(tǒng)運(yùn)行性能如何,由于驗證了系統(tǒng)的功能已經(jīng)基本完善,所以在性能測試時,主要觀測數(shù)據(jù)時數(shù)據(jù)生成模塊所生成的數(shù)據(jù)日志文件:能否正確體現(xiàn)作業(yè)在系統(tǒng)中的運(yùn)行流程。本系統(tǒng)隨著時間刷新,生成多個歷史日志文件,通過查看歷史日志文件里的信息,能夠了解提交的任務(wù)在集群系統(tǒng)中的運(yùn)行
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 庫存轉(zhuǎn)讓協(xié)議合同
- 家人代簽協(xié)議書
- 戰(zhàn)爭協(xié)議書模板
- 營員安全協(xié)議書
- 薪酬補(bǔ)貼協(xié)議書
- 蝎子合伙協(xié)議書
- 蝦塘投資協(xié)議書
- 自來水借用協(xié)議書
- 自行協(xié)議協(xié)議書
- 展會合作協(xié)議書
- 2025年吉林省直機(jī)關(guān)公開遴選公務(wù)員筆試題參考解析
- 科研項目財務(wù)專項審計方案模板
- 退伍留疆考試題庫及答案
- 數(shù)據(jù)倫理保護(hù)機(jī)制-洞察及研究
- 2025年鋼貿(mào)行業(yè)市場分析現(xiàn)狀
- 2025數(shù)字孿生與智能算法白皮書
- 鄉(xiāng)村醫(yī)生藥品管理培訓(xùn)
- 2025春季學(xué)期國開電大專科《管理學(xué)基礎(chǔ)》一平臺在線形考(形考任務(wù)一至四)試題及答案
- 財務(wù)保密意識培訓(xùn)
- 辦公室裝修改造工程合同書
- 教師節(jié)學(xué)術(shù)交流活動策劃方案
評論
0/150
提交評論