錢 濤,李建元
(1.浙江工業(yè)大學(xué)信息工程學(xué)院,浙江 杭州 310023;2.浙江銀江股份有限公司,浙江 杭州 310030)
?
基于Nagios的Hadoop集群性能監(jiān)控
錢濤1,李建元2
(1.浙江工業(yè)大學(xué)信息工程學(xué)院,浙江 杭州 310023;2.浙江銀江股份有限公司,浙江 杭州 310030)
摘要:以Hadoop架構(gòu)作為云平臺(tái)的實(shí)現(xiàn)形式已經(jīng)得到了廣泛的應(yīng)用。隨著Hadoop集群內(nèi)節(jié)點(diǎn)數(shù)量的增加,集群內(nèi)部的復(fù)雜程度和故障率以幾何級(jí)數(shù)增加,集群故障監(jiān)控越來越重要。集群監(jiān)控是云計(jì)算平臺(tái)的重要組成部分,對(duì)提高云計(jì)算平臺(tái)的穩(wěn)定性發(fā)揮重要作用。文中提出一種可擴(kuò)展集成化的云平臺(tái)監(jiān)控的實(shí)現(xiàn),運(yùn)維人員可以根據(jù)需求集成特定監(jiān)控插件,通過一體化的監(jiān)控界面,獲取云平臺(tái)的運(yùn)行信息,確保云平臺(tái)在Linux主機(jī)上的正常運(yùn)行。
關(guān)鍵詞:網(wǎng)絡(luò)監(jiān)控;云計(jì)算;分布式
0引言
Hadoop是一個(gè)高效、可靠、可擴(kuò)展的開源分布式計(jì)算平臺(tái),能通過分布式的方式高效處理海量數(shù)據(jù)[1]。Hadoop集群運(yùn)行時(shí)必須保證分布于各個(gè)節(jié)點(diǎn)的進(jìn)程都能正常運(yùn)行,當(dāng)要確保節(jié)點(diǎn)上程序進(jìn)程和硬件設(shè)備發(fā)生故障后能夠及時(shí)發(fā)現(xiàn)并處理,這時(shí)就需要一款監(jiān)控集群的網(wǎng)絡(luò)監(jiān)控軟件,它采集Hadoop集群運(yùn)行時(shí)的狀態(tài)信息以及各個(gè)節(jié)點(diǎn)(數(shù)據(jù)節(jié)點(diǎn)和名稱節(jié)點(diǎn))所在的物理機(jī)硬件的狀態(tài)信息。本文選取開源軟件Nagios作為Hadoop集群的監(jiān)控,它具有跨平臺(tái)、接口標(biāo)準(zhǔn)化、高度擴(kuò)展性、松散耦合等特點(diǎn),可以集成多種監(jiān)控功能并提供異常通知功能,滿足對(duì)Hadoop云平臺(tái)資源的監(jiān)控需求。
1Hadoop云平臺(tái)的介紹
云計(jì)算是隨著計(jì)算、存儲(chǔ)以及通信技術(shù)的快速發(fā)展而出現(xiàn)的一種嶄新的共享基礎(chǔ)資源的商業(yè)計(jì)算模型,被譽(yù)為“革命性的計(jì)算模型”[1]。Hadoop作為一種云計(jì)算的實(shí)現(xiàn)方式,其核心包括兩個(gè)部分。
1)Hadoop分布式文件系統(tǒng)(Hadoop Distributed File System,HDFS)。HDFS集群由一個(gè)負(fù)責(zé)集群管理的名稱節(jié)點(diǎn)和若干個(gè)負(fù)責(zé)數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)節(jié)點(diǎn)構(gòu)成。它具有高容錯(cuò)的特性,可以部署于價(jià)格低廉的硬件設(shè)備上,通過分布式的存儲(chǔ)方式提高整個(gè)文件系統(tǒng)的IO性能,適合那些需要處理海量數(shù)據(jù)的程序。
2)MapReduce分布式計(jì)算模型。MapReduce是一種并行編程模式,MapReduce的計(jì)算模型概括而言,就是將海量數(shù)據(jù)集劃分為許多個(gè)顆粒度較小數(shù)據(jù)集,分別由Hadoop集群中的數(shù)據(jù)節(jié)點(diǎn)進(jìn)行并行處理生成中間數(shù)據(jù),然后將數(shù)據(jù)節(jié)點(diǎn)中產(chǎn)生的中間數(shù)據(jù)進(jìn)行合并處理,形成最終結(jié)果。計(jì)算模型的核心是兩個(gè)由用戶實(shí)現(xiàn)的框架,分別是Map框架和Reduce框架。首先在Map中實(shí)現(xiàn)任務(wù)的分配,將任務(wù)分發(fā)到各個(gè)數(shù)據(jù)節(jié)點(diǎn)進(jìn)行計(jì)算,最后通過Reduce從各個(gè)節(jié)點(diǎn)進(jìn)行匯總處理完成計(jì)算[2]。
2開源監(jiān)控軟件Nagios原理
監(jiān)控軟件既要盡量減少系統(tǒng)開銷、又要保證監(jiān)控能力,滿足一定用戶的監(jiān)控需求。因此,監(jiān)控軟件的選取需要考慮以下幾個(gè)方面:
1)低干擾、低開銷,系統(tǒng)監(jiān)控應(yīng)不以犧牲過多的系統(tǒng)資源為代價(jià),監(jiān)控進(jìn)程的優(yōu)先級(jí)設(shè)置為較低,保證被監(jiān)控系統(tǒng)的資源的較少占用。
2)可擴(kuò)展性,監(jiān)控軟件能及時(shí)加載或卸載相應(yīng)的監(jiān)控模塊,動(dòng)態(tài)擴(kuò)展其監(jiān)控能力。
3)實(shí)時(shí)性,監(jiān)控軟件需要實(shí)時(shí)獲取系統(tǒng)的運(yùn)行信息,反映被監(jiān)控端的狀態(tài)變化,在故障發(fā)生后能及時(shí)通知相關(guān)人員。
4)數(shù)據(jù)采集頻率可控,監(jiān)控軟件可以根據(jù)不同用戶監(jiān)控需求靈活配置系統(tǒng)信息的采集頻率。
5)安裝、配置簡單。為方便用戶使用,監(jiān)控軟件的部署、配置、運(yùn)行需簡單易行。
Nagios是一個(gè)監(jiān)控系統(tǒng)運(yùn)行狀態(tài)和網(wǎng)絡(luò)信息的監(jiān)控軟件,能監(jiān)控所指定的本地或遠(yuǎn)程主機(jī)以及服務(wù),同時(shí)提供異常通知功能。Nagios運(yùn)行在Linux平臺(tái)之上,同時(shí)提供基于Web瀏覽器顯示功能方便維護(hù)人員查看系統(tǒng)日志,網(wǎng)絡(luò)狀態(tài)問題等[3]。
Nagios的功能是監(jiān)控服務(wù)和主機(jī),作為一個(gè)插件化的軟件,它可以通過編寫插件的方式來完成特定的監(jiān)控和檢測(cè)功能[4]。Nagios通過Nagios遠(yuǎn)程執(zhí)行插件(Nagios Remote Plugin Executor,NRPE)的方式獲取遠(yuǎn)程主機(jī)的信息。
當(dāng)系統(tǒng)啟動(dòng)Nagios后,Nagios的運(yùn)行原理如圖1所示,Nagios core執(zhí)行check_nrpe 插件,并通過配置文件配置check_nrpe所需檢測(cè)的服務(wù)(如disk,load),通過安全套接層(Secure Sockets Layer,SSL),check_nrpe與遠(yuǎn)程被監(jiān)控端的5666端口進(jìn)行通信,在被監(jiān)控主機(jī)NRPE daemon運(yùn)行本地的插件去輪詢本機(jī)的狀態(tài)和服務(wù),通過5666端口將相關(guān)監(jiān)控參數(shù)發(fā)送給監(jiān)控主機(jī)的check_nrpe,監(jiān)控主機(jī)將返回信息添加到Nagios狀態(tài)隊(duì)列,Nagios可以識(shí)別4種返回的狀態(tài)信息,即0(OK)、1(WARNING)、2(CRITICAL、3(UNKNOWN),分別表示狀態(tài)正常、出現(xiàn)可控異常,出現(xiàn)嚴(yán)重錯(cuò)誤,出現(xiàn)未知錯(cuò)誤或監(jiān)控停止。Nagios core根據(jù)被監(jiān)控端返回來的運(yùn)行參數(shù),判斷監(jiān)控對(duì)象的狀態(tài),處理后通過Web顯示出來,以供管理員及時(shí)發(fā)現(xiàn)[5]。
圖1 Nagios NRPE基本原理
3監(jiān)控平臺(tái)的搭建
Hadoop運(yùn)行格式化分布式文件系統(tǒng)的腳本hdFs namenode -Format格式化完成后,運(yùn)行啟動(dòng)Hadoop集群腳本start-all.sh,將會(huì)在master節(jié)點(diǎn)啟動(dòng)NameNode、Resource Manager、Secondary NameNode進(jìn)程,在slave節(jié)點(diǎn)上將會(huì)出現(xiàn)DataNode NodeManager進(jìn)程。通過瀏覽器訪問:http://master:50070和http://master:8080頁面,web頁面將會(huì)分別顯示HDFS的狀態(tài)信息和MapReduce的情況。
在監(jiān)控端中Nagios的基本組件的運(yùn)行依賴于httpd,gcc和gd通過yum安裝所需的依賴包,添加nagios運(yùn)行所需的組(nagioscmd)和用戶(nagios),將apache和nagios用戶加入到nagioscmd用戶組,編譯安裝nagios核心安裝包nagios-4.0.6.tar.gz,nagios插件包nagios-plugins-2.0.2.tar.gz和Nagios NRPE插件包nrpe-2.12.tar.gz。
被監(jiān)控端只需編譯安裝nagios plugin和nagios nrpe,安裝編譯完畢后,被監(jiān)控端開啟nrpe deamon守護(hù)進(jìn)程監(jiān)聽5666端口,與遠(yuǎn)程的監(jiān)控主機(jī)通信,配置監(jiān)控端nagios.cFg和被監(jiān)控端nrpe.cFg配置文件,使用shell指令nagios-v /etc/nagios.cFg校驗(yàn)etc目錄下的配置文件,無誤后使用service nagios start命令在監(jiān)控端啟動(dòng)Nagios,至此nagios安裝完畢。
4實(shí)驗(yàn)結(jié)果分析
安裝完畢后,訪問http://master/nagios,將從web端監(jiān)控Hadoop各個(gè)節(jié)點(diǎn)硬件信息和狀態(tài)。
Nagios自身不具備監(jiān)控Hadoop集群的功能,但Nagios作為一個(gè)高度插件化軟件,用戶可以通過編寫插件的方式實(shí)現(xiàn)所需的監(jiān)控目標(biāo),Nagios的插件可以用Perl,Python等語言進(jìn)行編寫,但必須滿足以下兩個(gè)條件:
1)插件的返回值為Nagios可檢測(cè)到的4種狀態(tài)中的1種;
2)插件至少向標(biāo)準(zhǔn)輸出設(shè)備(STDOUT)輸出性能數(shù)據(jù)(perFdata)描述狀態(tài)。
本文通過編寫shell腳本作為插件獲取Hadoop集群運(yùn)行情況,腳本首先定義4種狀態(tài)常量(OK、WARNING、CRITICAL、UNKOWN),通過hdFs dFsadmin -report獲得整個(gè)集群的狀態(tài)信息的文本,后通過shell腳本中管道(pipe)、grep、sed、awk等腳本命令對(duì)文本進(jìn)行篩選、匹配和截取,獲得Hadoop集群的狀態(tài)信息如capacity(集群的容量)、totalnode(集群的節(jié)點(diǎn)數(shù))、livingnode(集群正在運(yùn)行的節(jié)點(diǎn)數(shù))、usage(集群的使用狀況)等,通過echo方式返回性能數(shù)據(jù)(perFdata),并通過條件判斷語句比較性能數(shù)據(jù)(perdata)與預(yù)設(shè)閾值的大小,從4種輸出的狀態(tài)確認(rèn)1種作為腳本退出代碼。shell腳本的簡化代碼如圖2所示。
圖2 shell腳本的簡化代碼
當(dāng)Nagios集成pnp4nagios插件后,Nagios從插件上傳中選擇符合一定規(guī)則的輸出性能數(shù)據(jù)(perFdata)通過rrdtool處理,之后pnp就會(huì)以圖表的形式在web端展現(xiàn)。Hadoop集群中文件系統(tǒng)的使用狀況如圖3所示,圖3中,橫坐標(biāo)表示時(shí)間,縱坐標(biāo)表示HDFS_USAGE(文件系統(tǒng)的使用情況),在2:05和3:40左右,分別將數(shù)據(jù)導(dǎo)入HDFS中后,縱坐標(biāo)HDFS_USAGE隨即從最初的462.02 MB上升至986.72 MB最后直至1.52 GB,能夠準(zhǔn)確監(jiān)控文件系統(tǒng)使用情況。
圖3 HDFS文件系統(tǒng)的使用狀況
5結(jié)束語
本文給出了一種良好的Hadoop集群監(jiān)控方案,發(fā)揮Nagios作為一種插件化監(jiān)控軟件優(yōu)勢(shì),不僅可以利用Nagios進(jìn)行故障監(jiān)控,包括集群節(jié)點(diǎn)的監(jiān)控,同時(shí)通過Nagios和pnp4nagios插件相結(jié)合,可以將抽象數(shù)字化的狀態(tài)信息變?yōu)橹庇^的圖表樣式。下一步工作是將Nagios和MySQL等相結(jié)合,將Nagios歷史數(shù)據(jù)存入MySQL數(shù)據(jù)庫中,通過對(duì)歷史數(shù)據(jù)進(jìn)行分析,預(yù)測(cè)被監(jiān)控端的遠(yuǎn)程主機(jī)下一步的狀態(tài)信息,在出現(xiàn)故障之前進(jìn)行預(yù)警和修復(fù),保證整個(gè)集群的穩(wěn)定性和可靠性。
參考文獻(xiàn)
[1] 匡勝徽,李勃.云計(jì)算體系結(jié)構(gòu)及應(yīng)用實(shí)例分析[J].計(jì)算機(jī)與數(shù)字工程.2010(03):60-63.
[2]孫廣中,肖鋒,熊曦.MapReduce模型的調(diào)度及容錯(cuò)機(jī)制研究[J].微電子學(xué)與計(jì)算機(jī).2007,24(9):178-180.
[3]劉東君.基于Nagios的綜合監(jiān)視系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用.2013,(8):18-20.
[4]魏根芽.基于Linux的Nagios服務(wù)器監(jiān)控系統(tǒng)的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)與現(xiàn)代化.2010,(6):170-172.
[5]王帆.基于Nagios的服務(wù)器監(jiān)控平臺(tái)構(gòu)建與實(shí)現(xiàn)[J].實(shí)驗(yàn)室研究與探索.2010,(12):51-57.
Hadoop Cluster PerFormance Monitoring Based on Nagios
Qian Tao1, Li Jianyuan2
(1.InstituteoFInFormation,ZhejiangUniversityoFTechnology,HangzhouZhejiang310023,China;
2.ResearchInstituteoFEnjoyorCo.LTD,HangzhouZhejiang310030,China)
Abstract:In the Form oF Hadoop architecture as the realization oF the cloud platForm has been widely used. With an increase in the number oF nodes within the Hadoop cluster, the cluster oF internal complexity and Failure rate increase in geometric series. Cluster monitoring is an important part oF the cloud computing platForm, to improve the stability oF cloud computing platForms play an important role.This paper presents a scalable integrated cloud platForm monitoring methods, operation and maintenance personnel can be integrated with speciFic monitoring plugin complete demand. Through the integration oF monitoring interFace, maintenance personnel obtain the operating state oF cloud platForms, to ensure normal operation oF Hadoop cluster in Linux hosts.
Key words:network monitoring; cloud computing; distributed
中圖分類號(hào):TP277
文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1001-9146(2015)03-0064-04
作者簡介:錢濤(1989-),男,浙江紹興人,在讀研究生,信息與通信工程.
收稿日期:2014-11-06
DOI:10.13954/j.cnki.hdu.2015.03.013
杭州電子科技大學(xué)學(xué)報(bào)(自然科學(xué)版)2015年3期