本發(fā)明屬于軟件健康監(jiān)測(cè)領(lǐng)域,主要涉及軟件健康的度量,適用于Hadoop的分布式系統(tǒng),具體地說,是指一種收集分布式系統(tǒng)軟件的健康表征數(shù)據(jù),應(yīng)用高斯模型計(jì)算軟件健康度的技術(shù)方案。
背景技術(shù):
:Hadoop的分布式系統(tǒng)是以Hadoop為基礎(chǔ)架構(gòu)進(jìn)行開發(fā)的。Hadoop是由Apache軟件基金會(huì)設(shè)計(jì)的分布式系統(tǒng)基礎(chǔ)架構(gòu),它的主要功能是用來存儲(chǔ)和計(jì)算海量數(shù)據(jù),用戶可以在不了解Hadoop分布式底層細(xì)節(jié)的情況下,以Hadoop為基礎(chǔ)開發(fā)分布式程序,充分利用集群的威力進(jìn)行高速運(yùn)算和存儲(chǔ)。Hadoop的分布式系統(tǒng)的典型結(jié)構(gòu)如圖1所示,它具有高可靠性、高可拓展性、高容錯(cuò)性和高效性的特點(diǎn),因此備受大企業(yè)的青睞,例如百度用Hadoop分布式系統(tǒng)處理每周200TB的數(shù)據(jù),從而進(jìn)行搜索日志分析和網(wǎng)頁數(shù)據(jù)挖掘工作;中國(guó)移動(dòng)研究院基于Hadoop開發(fā)了“大云”(BigCloud)系統(tǒng),不但用于相關(guān)數(shù)據(jù)分析,還對(duì)外提供服務(wù);淘寶的Hadoop分布式系統(tǒng)用于存儲(chǔ)并處理電子商務(wù)交易的相關(guān)數(shù)據(jù)等。隨著網(wǎng)絡(luò)發(fā)展的日新月異,人們面對(duì)的數(shù)據(jù)規(guī)模非常龐大,分布式系統(tǒng)的使用場(chǎng)景變化復(fù)雜,盡管Hadoop的分布式系統(tǒng)被設(shè)計(jì)成有著很高的容錯(cuò)機(jī)制,但是在使用過程中很少有方法能對(duì)它進(jìn)行故障預(yù)警,來提醒客戶及時(shí)對(duì)軟件系統(tǒng)進(jìn)行維護(hù),以免發(fā)生故障造成損失?;诖?,本發(fā)明的核心思想是引入“軟件健康”來表征Hadoop的分布式系統(tǒng)的使用情況是否正常,是“系統(tǒng)健康”在軟件研究領(lǐng)域的一個(gè)新分支。所謂的軟件健康是指在使用過程中,軟件完成規(guī)定任務(wù)的能力程度。目前系統(tǒng)健康度量技術(shù)主要是解決系統(tǒng)中硬件部件的健康度量和預(yù)警問題,并沒有應(yīng)用于解決系統(tǒng)中軟件的健康問題,比如如何利用軟件健康度來對(duì)12306火車訂票系統(tǒng)的軟件崩潰進(jìn)行提前告警。究其原因主要是因?yàn)椋壳暗难芯砍晒麅H僅將軟件健康度量與軟件質(zhì)量評(píng)估進(jìn)行籠統(tǒng)地研究,或者單純地從軟件是否失效來判斷軟件是否健康,不能起到提前為系統(tǒng)故障預(yù)警的作用。綜上,目前軟件健康領(lǐng)域已有的研究成果,并不是專門應(yīng)用于在使用過程中為基于Hadoop的分布式系統(tǒng)的使用情況進(jìn)行預(yù)警的,更沒有形成一套能夠直接應(yīng)用在基于Hadoop的分布式系統(tǒng)上的健康度量方法。技術(shù)實(shí)現(xiàn)要素:本發(fā)明針對(duì)Hadoop的分布式系統(tǒng)軟件尚不存在具體的軟件健康度量方法的問題,提出了一種基于Hadoop的分布式系統(tǒng)的健康度量方法,通過監(jiān)測(cè)分布式系統(tǒng)在使用過程中,由于Aging-relatedBugs(老化缺陷)的存在而引起的健康表征元素的變化,收集期望正常狀態(tài)和待度量運(yùn)行狀態(tài)下的數(shù)據(jù),建立健康度量模型,計(jì)算出軟件健康度,為軟件的故障告警和故障預(yù)測(cè)提供依據(jù)。一種基于Hadoop的分布式系統(tǒng)的健康度量方法,針對(duì)分布式系統(tǒng)軟件,實(shí)現(xiàn)步驟如下:步驟一、選取軟件健康表征元素??紤]老化缺陷的影響,選取的健康表征元素容易受到使用時(shí)間的影響,并且易于獲取數(shù)據(jù)。步驟二、數(shù)據(jù)收集。運(yùn)行軟件,分別在期望正常狀態(tài)下以及待度量運(yùn)行狀態(tài)下,收集健康表征元素的數(shù)據(jù)。步驟三、建立健康度量高斯混合模型。設(shè)共選取n個(gè)健康表征元素,表示為集合X=(X1,X2,...,Xi,...,Xn),其中第i個(gè)健康表征元素為Xi,1≤i≤n;第i個(gè)健康表征元素Xi的一組觀測(cè)值表示為(xi1,xi2,…,xij,…,xim),m為觀測(cè)值個(gè)數(shù),xij表示對(duì)健康表征元素Xi的第j次觀測(cè)值,1≤j≤m;用表示第i個(gè)健康表征元素的高斯分布概率密度,xi表示第i個(gè)健康表征元素的變量,μi表示第i個(gè)健康表征元素的均值,表示第i個(gè)健康表征元素的方差。軟件健康表征元素X的高斯混合模型的概率密度G(x1,x2,...,xi,...,xn)表示為:其中,wi為第i個(gè)健康表征元素的權(quán)重;分別利用期望正常狀態(tài)下和待度量運(yùn)行狀態(tài)下的健康表征元素的數(shù)據(jù)估計(jì)高斯混合模型的參數(shù)μi、和wi,得到對(duì)應(yīng)兩種情況下的高斯混合模型的概率密度G1(x1,x2,...,xn)和G2(x1,x2,...,xn)。步驟四、獲取分布式系統(tǒng)軟件的健康度h。根據(jù)步驟三獲得的期望正常狀態(tài)下的高斯混合模型的概率密度函數(shù)G1(x1,x2,...,xn),待度量運(yùn)行狀態(tài)下的高斯混合模型的概率密度函數(shù)G2(x1,x2,...,xn),確定軟件的健康度h如下:其中,Ci表示第i個(gè)健康表征元素的最大值,i=1,2,…,n。軟件健康度h的取值范圍是[0,1],當(dāng)軟件健康度h=1時(shí),表示軟件運(yùn)行正常,此時(shí)處于健康態(tài);當(dāng)軟件健康度h=0時(shí),表示軟件性能狀態(tài)惡化,此時(shí)的軟件處于失效態(tài);當(dāng)軟件健康度處于(0,1)之間時(shí),表示軟件穩(wěn)定性、可用性逐漸下降,此時(shí)的軟件處于亞健康狀態(tài)。根據(jù)軟件可接受的運(yùn)行狀態(tài),設(shè)置健康度的閾值,來判斷軟件是否需要進(jìn)行維護(hù)以防止性能狀態(tài)的進(jìn)一步惡化。當(dāng)高于該閾值時(shí),說明軟件運(yùn)行狀態(tài)處于可以接受的范圍之內(nèi),當(dāng)?shù)陀谠撻撝禃r(shí),說明軟件出現(xiàn)不可接受的衰退,應(yīng)采取相應(yīng)的軟件健康管理措施,防止進(jìn)一步惡化,這樣便方便了維護(hù)人員對(duì)軟件進(jìn)行維護(hù)。本發(fā)明方法的優(yōu)點(diǎn)和積極效果在于:首次提出了軟件健康的概念和在健康理論指導(dǎo)下的健康度量方法,提供了能直接應(yīng)用在基于Hadoop的分布式系統(tǒng)上的健康度量方法,通過監(jiān)測(cè)由于老化缺陷的存在而引起的健康表征元素的變化,收集期望正常狀態(tài)和當(dāng)前運(yùn)行狀態(tài)下的數(shù)據(jù),建立健康度量模型,計(jì)算出軟件健康度,為軟件的故障告警和故障預(yù)測(cè)提供依據(jù),從而在系統(tǒng)出現(xiàn)異常情況之前提前告警,使維護(hù)人員及時(shí)采取措施,保證系統(tǒng)的運(yùn)行穩(wěn)定。附圖說明圖1是典型的基于Hadoop的分布式系統(tǒng)架構(gòu)圖;圖2是Hadoop的體系結(jié)構(gòu)示意圖;圖3是HDFS的結(jié)構(gòu)圖;圖4是HDFS文件讀取流程圖;圖5是本發(fā)明的基于Hadoop的分布式系統(tǒng)的健康度量方法的步驟流程圖;圖6是虛擬機(jī)建立的Hadoop系統(tǒng)結(jié)構(gòu)圖;圖7是期望正常狀態(tài)下的標(biāo)準(zhǔn)數(shù)據(jù)示例圖;圖8是待度量運(yùn)行狀態(tài)的數(shù)據(jù)示例圖。具體實(shí)施方式下面結(jié)合附圖,將本發(fā)明的具體方法應(yīng)用于Hadoop的分布式文件系統(tǒng)(HDFS),此處所描述的實(shí)施例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。本發(fā)明提出的基于Hadoop的分布式系統(tǒng)的健康度量方法,用于度量Hadoop的分布式系統(tǒng)運(yùn)行狀態(tài)是否正常??赏ㄟ^設(shè)置系統(tǒng)故障預(yù)警閥值,在系統(tǒng)出現(xiàn)異常情況之前提前告警,使維護(hù)人員及時(shí)采取措施,保證系統(tǒng)的運(yùn)行穩(wěn)定。由于Aging-relatedBugs(老化缺陷)的存在而引起的健康表征元素的變化,因此本發(fā)明方法在分布式系統(tǒng)的使用過程中,收集期望正常狀態(tài)和當(dāng)前運(yùn)行狀態(tài)下的數(shù)據(jù),建立健康度量模型,計(jì)算出軟件健康度,為軟件的故障告警和故障預(yù)測(cè)提供依據(jù)。所謂的老化缺陷是指與軟件退化有關(guān)的缺陷,它產(chǎn)生的原因是軟件運(yùn)行時(shí)錯(cuò)誤條件的積累或者在系統(tǒng)交互過程中運(yùn)行環(huán)境的改變,而錯(cuò)誤的條件并沒有馬上導(dǎo)致失效,而是會(huì)有一個(gè)變化甚至延遲發(fā)生的過程。對(duì)于Hadoop的分布式系統(tǒng),這些缺陷會(huì)引起軟件使用資源的耗竭、數(shù)據(jù)損壞、錯(cuò)誤累積,最終導(dǎo)致系統(tǒng)服務(wù)癱瘓,可以說老化缺陷是導(dǎo)致系統(tǒng)資源的損耗和性能衰退的根本原因。如圖2所示,Hadoop的基礎(chǔ)架構(gòu)是由許多元素構(gòu)成的,框架最核心的設(shè)計(jì)就是:HadoopDistributedFileSystem(Hadoop的文件分布式系統(tǒng),HDFS)、MapReduce和Hbase(列式內(nèi)存數(shù)據(jù)庫)。Hadoop分布式文件系統(tǒng)HDFS的結(jié)構(gòu)如圖3所示。從圖中可以看到,多個(gè)DataNode節(jié)點(diǎn)與一個(gè)NameNode節(jié)點(diǎn)組成了HDFS集群,對(duì)外提供數(shù)據(jù)服務(wù)。其中,DataNode提供數(shù)據(jù)文件的存儲(chǔ)功能,是數(shù)據(jù)存放節(jié)點(diǎn)。一個(gè)DataNode節(jié)點(diǎn)是運(yùn)行在安裝有Linux操作系統(tǒng)的機(jī)器的一個(gè)進(jìn)程。當(dāng)用戶需要寫入文件的時(shí)候,寫入的這個(gè)文件會(huì)分成若干個(gè)數(shù)據(jù)塊,分放于多個(gè)DataNode節(jié)點(diǎn)上。DataNode節(jié)點(diǎn)可以運(yùn)行在任意一臺(tái)可以工作的、并安裝有HDFS軟件的機(jī)器上。NameNode節(jié)點(diǎn)是HDFS系統(tǒng)中的中心節(jié)點(diǎn),主要負(fù)責(zé)來自HDFS客戶端以及DataNode節(jié)點(diǎn)請(qǐng)求任務(wù)的調(diào)度。由上述分析可知HDFS的主要功能是為海量的數(shù)據(jù)提供了存儲(chǔ),在實(shí)際運(yùn)行過程中HDFS實(shí)現(xiàn)的文件讀取流程如圖4所示,客戶端向NameNode發(fā)起文件讀取的請(qǐng)求,NameNode返回DataNode存儲(chǔ)的文件信息,再由客戶端讀取文件信息。本發(fā)明提供的基于Hadoop的分布式系統(tǒng)的健康度量方法的實(shí)現(xiàn)流程如圖5所示,整體包括:選取健康表征元素、收集期望正常狀態(tài)及待度量狀態(tài)的數(shù)據(jù)、建立健康度量高斯混合模型以及計(jì)算獲取分布式系統(tǒng)的健康度。下面結(jié)合HDFS,通過計(jì)算它的健康度,來說明本發(fā)明方法的使用。步驟一、選取軟件健康表征元素。選取軟件健康表征元素的理由可作為元素選取的約束條件,通常都是能夠反映軟件健康的重要因素。對(duì)于Hadoop的分布式系統(tǒng)軟件,重點(diǎn)關(guān)注影響其存儲(chǔ)功能有關(guān)的元素以及計(jì)算功能的元素。步驟1.1,確定軟件的運(yùn)行環(huán)境。本實(shí)施例是在虛擬機(jī)Linux系統(tǒng)中運(yùn)行Hadoop,建立1臺(tái)主服務(wù)器(namenode),3臺(tái)子節(jié)點(diǎn)(datanode),運(yùn)行Hadoop軟件來模擬分布式系統(tǒng)的運(yùn)行,針對(duì)HDFS的使用情況來度量它的健康度。模擬的分布式系統(tǒng)的架構(gòu)如圖6,具體的主機(jī)規(guī)劃見表1,4臺(tái)虛擬機(jī)的配置見表2。虛擬機(jī)的建立可在同一臺(tái)物理機(jī)上建立,也可使用多臺(tái)物理機(jī)。表1HDFS主機(jī)規(guī)劃IP地址主機(jī)名角色192.168.1.128tong1NameNode,JobTracker192.168.1.129tong2DataNode,TaskTracker192.168.1.130tong3DataNode,TaskTracker192.168.1.131tong4DataNode,TaskTracker表2實(shí)驗(yàn)配置信息步驟1.2,選取HDFS軟件的健康表征元素。根據(jù)系統(tǒng)的不同特點(diǎn)以及軟件的使用功能,確定軟件的健康表征元素。由于主要考慮的是老化缺陷的影響,選取的健康表征元素應(yīng)該容易受到使用時(shí)間的影響。對(duì)于某些系統(tǒng)能夠使用Hadoop的分布式系統(tǒng),例如Windows系統(tǒng)、Linux系統(tǒng)等,主要考慮的健康表征元素可以在CPU、內(nèi)存、緩存、磁盤的使用情況中選取。在選取健康表征元素時(shí)并不是選取的表征元素越多越好,也不可能把全部表征元素都考慮進(jìn)去,只能選取一些最能反映軟件健康的表征元素,而且這些元素要易于獲取數(shù)據(jù)信息。對(duì)于HDFS軟件來說,主要是客戶端節(jié)點(diǎn)和系統(tǒng)軟件之間進(jìn)行數(shù)據(jù)存儲(chǔ)管理。當(dāng)HDFS軟件功能出現(xiàn)明顯的衰退現(xiàn)象時(shí),它通常會(huì)出現(xiàn)以下2種表現(xiàn):(1)系統(tǒng)內(nèi)存資源耗盡、導(dǎo)致HDFS響應(yīng)時(shí)間長(zhǎng)、存取數(shù)據(jù)效率低;(2)CPU長(zhǎng)時(shí)間處于高使用率、并且部分任務(wù)響應(yīng)時(shí)間過長(zhǎng)。內(nèi)存對(duì)HDFS軟件的影響是在發(fā)生內(nèi)存泄漏時(shí),HDFS軟件可用內(nèi)存被某個(gè)進(jìn)程逐漸消耗,最終耗竭,從而影響HDFS軟件任務(wù)的完成。CPU對(duì)HDFS軟件的影響是在發(fā)生CPU“泄漏”時(shí),指多個(gè)進(jìn)程搶占CPU,導(dǎo)致CPU無暇處理其他任務(wù),從而影響軟件任務(wù)的完成。通過分析內(nèi)存和CPU的使用情況來選取軟件健康表征元素,在具體選取軟件健康表征元素的過程中,可參照如表3所示的軟件健康表征元素。表3HDFS軟件健康表征類別及軟件健康表征元素由于老化缺陷的激活而導(dǎo)致HDFS對(duì)Java虛擬機(jī)(JVM)內(nèi)存不斷的消耗,當(dāng)JVM中的內(nèi)存不足以維持HDFS軟件運(yùn)行時(shí),就會(huì)觸發(fā)JVM的垃圾回收機(jī)制,垃圾回收機(jī)制的作用是為了后續(xù)HDFS軟件運(yùn)行提供更多的內(nèi)存。盡管有JVM垃圾回收機(jī)制的存在,但是在回收的階段所有運(yùn)行的Java線程都必須停止工作。如果內(nèi)存持續(xù)性的泄漏,頻繁地發(fā)生這種停止工作的情況,最直接的影響是服務(wù)的響應(yīng)時(shí)間不斷變長(zhǎng)、服務(wù)的吞吐量不斷的下降。并且老化缺陷引起的軟件使用內(nèi)存泄露而導(dǎo)致的內(nèi)存耗盡是影響軟件健康衰退的主要原因。因此內(nèi)存泄漏問題變得十分關(guān)鍵,即使每次運(yùn)行少量泄漏,長(zhǎng)期運(yùn)行之后,系統(tǒng)也會(huì)面臨崩潰的問題?;诖耍x取Java虛擬機(jī)(JVM)的內(nèi)存可用量作為HDFS健康的表征元素。步驟二、數(shù)據(jù)收集。針對(duì)健康表征元素收集相關(guān)的數(shù)據(jù),數(shù)據(jù)收集是后續(xù)軟件健康度量的基礎(chǔ)。對(duì)于Hadoop的分布式系統(tǒng),本發(fā)明方法收集來自于主服務(wù)器運(yùn)行狀態(tài)的數(shù)據(jù)。步驟2.1,運(yùn)行軟件,根據(jù)選取的健康表征元素收集數(shù)據(jù)。打開各系統(tǒng)里的終端,本發(fā)明實(shí)施例中打開表1所示的各主機(jī),使用root權(quán)限,輸入運(yùn)行Hadoop軟件的命令,命令中必須包含啟動(dòng)文件的存放路徑,否則會(huì)報(bào)錯(cuò)?;蚴怯媒K端打開路徑,輸入./start-all.sh,即可運(yùn)行軟件。步驟2.2,收集數(shù)據(jù)可使用分布式系統(tǒng)自帶的收集工具。也可以在系統(tǒng)里安裝一些輔助工具插件來采集數(shù)據(jù),使用的插件對(duì)系統(tǒng)的影響很小,可以忽略,不會(huì)影響到收集的數(shù)據(jù)的準(zhǔn)確性。為方便起見,也可以執(zhí)行操作系統(tǒng)提供的資源查看命令行來監(jiān)測(cè)Hadoop的分布式系統(tǒng)的運(yùn)行情況。不同的操作系統(tǒng)提供了不同的命令行工具,例如在Linux系統(tǒng)里可使用Jconsole命令、Jstat命令等來對(duì)JVM內(nèi)存進(jìn)行監(jiān)控。步驟2.3,在期望正常狀態(tài)下,收集軟件健康表征元素的數(shù)據(jù)。所述的期望正常狀態(tài)是由軟件開發(fā)人員給出的、健康度為1的系統(tǒng)狀態(tài),在這個(gè)狀態(tài)下,軟件不會(huì)出現(xiàn)功能異常,這種狀態(tài)是絕對(duì)正常狀態(tài)。在此狀態(tài)下可獲得軟件健康表征元素的數(shù)據(jù)。在本實(shí)例應(yīng)用中,在安裝配置完成Hadoop軟件,使其能夠穩(wěn)定運(yùn)行,這一狀態(tài)可近似看作期望正常狀態(tài)。使用sysstat軟件工具包(若Linux系統(tǒng)未裝有此工具包,可自行安裝)的pidstat命令來收集主服務(wù)器節(jié)點(diǎn)上的JVM內(nèi)存的使用量的數(shù)據(jù),實(shí)驗(yàn)數(shù)據(jù)采集的時(shí)間間隔為10s,共采集5500次。在主服務(wù)器的終端中運(yùn)行命令如下:pidstat-r-p3624105500收集的部分示例數(shù)據(jù)如圖7,其中:minflt/s:表示進(jìn)程每秒minorfaults的總數(shù)。majflt/s:表示進(jìn)程每秒majorfaults的總數(shù)。VSZ:表示進(jìn)程使用的虛擬內(nèi)存大小(KB)RSS:表示進(jìn)程使用的物理內(nèi)存大小(KB)%MEM:表示占用內(nèi)存比率。3624為主服務(wù)器namenode的進(jìn)程ID號(hào)碼,軟件每次運(yùn)行ID號(hào)碼是不同的,可通過jps命令查詢。經(jīng)過處理后,選取的數(shù)據(jù)如下表4所示。表4期望正常狀態(tài)下收集的標(biāo)準(zhǔn)數(shù)據(jù)序號(hào)內(nèi)存使用百分比(a%)內(nèi)存可用量百分比(b%)內(nèi)存可用量(1024*b%MB)114.0485.96880.2304214.2585.75878.08314.2585.75878.08414.2585.75878.08514.2685.74877.9776614.2685.74877.9776714.2785.73877.8752814.2785.73877.8752914.2785.73877.87521014.2885.72877.77281114.2885.72877.77281214.2985.71877.67041314.3285.68877.36321414.3285.68877.36321514.3285.68877.36321614.3385.67877.26081714.3485.66877.15841814.3585.65877.0561914.3585.65877.0562014.3785.63876.85122114.3885.62876.74882214.3985.61876.64642314.3885.62876.74882414.3885.62876.74882514.3985.61876.64642614.4185.59876.44162714.4185.59876.44162814.4285.58876.33922914.4285.58876.33923014.4285.58876.3392步驟2.4,收集待度量運(yùn)行狀態(tài)的健康表征元素的數(shù)據(jù)。收集待度量的運(yùn)行狀態(tài)下的數(shù)據(jù)是指收集軟件在使用過程中指定的任意一段時(shí)間內(nèi)的健康表征元素的數(shù)據(jù)。以軟件指定運(yùn)行的時(shí)間T作為起點(diǎn),通過命令設(shè)置獲取數(shù)據(jù)的規(guī)則,定位軟件的進(jìn)程,獲取軟件進(jìn)程對(duì)系統(tǒng)資源的使用情況,得到軟件健康表征元素的數(shù)據(jù)。確定時(shí)刻T為開始時(shí)刻,通過Hadoop自帶的nnbench軟件工具可以逐步加大對(duì)HDFS軟件訪問,模擬內(nèi)存泄漏,加速HDFS軟件衰退,使HDFS軟件執(zhí)行任務(wù)期間出現(xiàn)JVM可用內(nèi)存逐漸減少的現(xiàn)象。例如輸入nnbench命令使用12個(gè)mapper和6個(gè)reducer來創(chuàng)建1000個(gè)文件,代碼如下:$hadoopjarhadoop-2.6.3/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.6.3-tests.jarnnbench\-operationcreate_write-maps12-reduces6-blockSize1\-bytesToWrite0-numberOfFiles1000-replicationFactorPerFile3\-readFileAfterOpentrue-baseDir/benchmarks/NNBench-`hostname-s`使用mrbench命令來重復(fù)進(jìn)行上述任務(wù)5000次,代碼如下:$hadoopjarhadoop-2.6.3/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.6.3-tests.jarmrbench-numRuns5000收集到的示例數(shù)據(jù)如圖8所示,經(jīng)過處理后,選取的數(shù)據(jù)如下表5所示。表5收集指定運(yùn)行狀態(tài)下的數(shù)據(jù)步驟三、建立健康度量高斯混合模型。步驟3.1,建立軟件健康表征函數(shù)的高斯混合模型。高斯混合模型是概率論與數(shù)理統(tǒng)計(jì)中非常關(guān)鍵的模型,其本質(zhì)上是一個(gè)多維概率密度函數(shù),只要有足夠多的數(shù)據(jù),從理論的角度來講,就可以對(duì)數(shù)據(jù)空間的任何分布使用高斯混合模型來精確擬合。本發(fā)明采用高斯混合模型來度量Hadoop的分布式系統(tǒng)的軟件健康。假設(shè)選取的軟件健康表征元素為X=(X1,X2,...,Xi,...,Xn),即X是n維隨機(jī)變量,n為步驟1中選取的健康表征元素的個(gè)數(shù),1≤i≤n??梢愿鶕?jù)實(shí)際的軟件健康度量需求,收集每個(gè)健康表征元素Xi在(0,t)時(shí)間段內(nèi)的取值序列,設(shè)(xi1,xi2,…,xij,…,xim)表示對(duì)第i個(gè)健康表征元素Xi在(0,t)時(shí)間內(nèi)的一組觀測(cè)值,其中,xij表示對(duì)健康表征元素Xi的第j次觀測(cè)值,1≤j≤m,m表示對(duì)選取的健康表征元素Xi在(0,t)時(shí)間段內(nèi)共觀測(cè)了m次。用表示選取的第i個(gè)健康表征元素的高斯分布概率密度,其中μi表示第i個(gè)健康表征元素的均值,表示第i個(gè)健康表征元素的方差,xi是用于表示第i個(gè)軟件健康表征元素的變量,其概率密度表達(dá)式為:X由n個(gè)健康表征元素組成,其高斯混合模型的概率密度G(x1,x2,...,xi,...,xn),即簡(jiǎn)寫為G(x)表示為:其中,wi為第i個(gè)健康表征元素的權(quán)重,表示第i個(gè)健康表征元素的高斯分布概率密度。步驟3.2,估計(jì)兩種情況下高斯混合模型的參數(shù)。步驟3.2.1,使用最大似然估計(jì)計(jì)算中的μi和使用極大似然估計(jì)(MaximumLikehoodEstimation,MLE)是因?yàn)镸LE是一種具有漸進(jìn)最優(yōu)性質(zhì)的參數(shù)估計(jì)方法,其滿足的準(zhǔn)則是讓觀測(cè)值出現(xiàn)的概率最大??衫密浖】当碚髟豖i的觀測(cè)值(xi1,xi2,…,xij,…,xim)對(duì)第i個(gè)軟件健康表征元素的高斯概率密度函數(shù)進(jìn)行參數(shù)估計(jì),步驟如下:的對(duì)數(shù)似然函數(shù)如式(3)所示:通過對(duì)似然函數(shù)(3)的未知參數(shù)μi和求偏導(dǎo)數(shù),并令偏導(dǎo)函數(shù)等于0,得到如下表達(dá)式:解得μi和的參數(shù)估計(jì)結(jié)果如下:根據(jù)參數(shù)估計(jì)的無偏性對(duì)結(jié)果(8)進(jìn)行偏差修正,修正后的結(jié)果如下公式(8):使得將標(biāo)準(zhǔn)數(shù)據(jù)和收集到的數(shù)據(jù)代入上述過程(6)和(8),便可估計(jì)出兩種情況下的μi和的值。代入公式(1),即可求得兩種情況下的高斯混合模型。3.2.2,計(jì)算高斯混合模型公式中的權(quán)值wi。為求解權(quán)重系數(shù)wi,先求混合模型的似然函數(shù):為方便計(jì)算,且對(duì)求解的參數(shù)進(jìn)行驗(yàn)證,定義一個(gè)函數(shù)βi(xi1,xi2,…,xim),表達(dá)式如下:因其滿足引入拉格朗日乘子λ,然后得到新的目標(biāo)函數(shù),定義如下:對(duì)wi求偏導(dǎo)數(shù),并令其結(jié)果為零,如下:解得結(jié)果如下:將式(13)的左右項(xiàng)分別相加,可得:可知λ=m,因此可得:聯(lián)立n個(gè)wi(i=1,2,…,n)組成的方程組,求得w1,w2,…,wn的值。將根據(jù)(6)、(8)得到的μi和估計(jì)值和獲取的w1,w2,…,wn的值代入公式(2),即可求得兩種情況下的高斯模型G1(x1,x2,...,xn)、G2(x1,x2,...,xn),分別簡(jiǎn)寫為G1(x)、G2(x),G1(x)表示期望正常運(yùn)行狀態(tài)的軟件健康表征元素的標(biāo)準(zhǔn)概率密度函數(shù),G2(x)表示待度量運(yùn)行狀態(tài)下的健康表征元素的概率密度函數(shù)。對(duì)于本發(fā)明實(shí)施例,執(zhí)行如下過程:1.利用matlab軟件工具將表4中期望正常狀態(tài)下收集的數(shù)據(jù)代入。利用matlab計(jì)算得到的期望正常狀態(tài)下單高斯模型的參數(shù)估計(jì)為:θ1={μ,σ2}={877.339,0.6402};得到期望正常狀態(tài)下的基準(zhǔn)單高斯模型為:2.利用matlab軟件工具將表5中收集到的指定運(yùn)行狀態(tài)下的數(shù)據(jù)代入。得到當(dāng)前運(yùn)行狀態(tài)下的高斯模型的參數(shù)估計(jì)為:θ2={μ,σ2}={836.134,0.05954};得到當(dāng)前運(yùn)行狀態(tài)下的高斯模型為:步驟四,將上述求得兩個(gè)高斯模型代入軟件健康度公式,求得健康度。軟件健康度是對(duì)軟件健康一種定量化的評(píng)價(jià)指標(biāo),軟件偏離預(yù)期正常狀態(tài)的相對(duì)數(shù)值,它表征軟件健康能力的百分比,用符號(hào)h表示。預(yù)期正常狀態(tài)就是指的是期望正常狀態(tài)。令C=[C1,C2,…,Ci,...,Cn],分別對(duì)應(yīng)n個(gè)軟件健康表征元素x1,x2,...,xn的最大值,其中,Ci表示第i個(gè)健康表征元素的最大值。軟件健康度h的取值范圍是[0,1],當(dāng)軟件健康度h=1時(shí),表示軟件運(yùn)行正常,此時(shí)處于健康態(tài);當(dāng)軟件健康度h=0時(shí),表示軟件性能狀態(tài)惡化,此時(shí)的軟件處于失效態(tài);當(dāng)軟件健康度處于(0,1)之間時(shí),表示軟件穩(wěn)定性、可用性逐漸下降,此時(shí)的軟件處于亞健康狀態(tài)。不同運(yùn)行狀態(tài)下經(jīng)過計(jì)算得到的健康度有所不同,如果定義某一種狀態(tài)為“可接受”的狀態(tài),那么可以把這種狀態(tài)所對(duì)應(yīng)的健康度作為一個(gè)閾值,比如h=0.8。如果高于這個(gè)閾值,就說明運(yùn)行狀態(tài)處于可以接受的范圍之內(nèi),如果低于這個(gè)閾值,則說明軟件出現(xiàn)不可接受的衰退,應(yīng)采取相應(yīng)的軟件健康管理措施,防止進(jìn)一步惡化,這樣便方便了維護(hù)人員對(duì)軟件進(jìn)行維護(hù)。本發(fā)明實(shí)施例中由于只選取了一個(gè)健康表征元素,健康度量公式可簡(jiǎn)化如下:其中,C表示系統(tǒng)運(yùn)行時(shí)健康表征元素的最大值。此時(shí)C=1024MB,通過健康度公式計(jì)算HDFS的健康度,代碼如下:symsxy=normpdf(x,877.339,0.8001)g=normpdf(x,836.134,0.244)F=int(y*g,0,1024)G=sqrt(int(y^2,0,1024)*int(g^2,0,1024))h=F/G運(yùn)行后可得當(dāng)前HDFS健康度h=0.8233。當(dāng)前第1頁1 2 3