劉樹(shù)仁,馮超敏,文 玲,蔡長(zhǎng)寧,趙書(shū)貴
(中國(guó)石油勘探開(kāi)發(fā)研究院西北分院 計(jì)算機(jī)技術(shù)研究所,甘肅 蘭州730020)
地震處理技術(shù)是油氣勘探部署中的主要手段,目前石油行業(yè)普遍采用高性能計(jì)算機(jī)集群 (high performance computer cluster)作為地震處理平臺(tái)[1]。隨著數(shù)據(jù)處理量增加、集群規(guī)模增大以及各種應(yīng)用軟件的交叉使用,集群中頻繁發(fā)生各類(lèi)故障,穩(wěn)定性問(wèn)題日趨突出[2]。原有的人工巡查及故障被動(dòng)處理的模式,由于處理速度慢、故障漸進(jìn)累加[3,4]等原因,直接影響了勘探生產(chǎn)任務(wù)的進(jìn)行。因此亟需引入智能化的預(yù)測(cè)機(jī)制,及時(shí)發(fā)現(xiàn)與定位集群中的故障隱患,在節(jié)點(diǎn)崩潰之前進(jìn)行維護(hù),將對(duì)生產(chǎn)的影響降到最低。
Hadoop是一個(gè)開(kāi)源的云計(jì)算模型[5,6],用于大數(shù)據(jù)的存儲(chǔ)與處理。通過(guò)把應(yīng)用程序分割成小工作單元,并將這些工作單元放到集群的任何節(jié)點(diǎn)上執(zhí)行,實(shí)現(xiàn)數(shù)據(jù)的分布式存儲(chǔ)與并行計(jì)算。其具備可靠性高、數(shù)據(jù)處理量大、靈活可擴(kuò)展等優(yōu)勢(shì),被廣泛應(yīng)用于搜索引擎、機(jī)器學(xué)習(xí)、語(yǔ)義分析[7]和圖像處理[8,9]等領(lǐng)域。然而,在高性能集群狀態(tài)監(jiān)測(cè)領(lǐng)域,如何使用Hadoop 這一熱點(diǎn)工具,仍然處于空白。
HDFS (Hadoop distributed file system)為Hadoop上的分布式的文件系統(tǒng),HBase是基于其上的NoSQL 數(shù)據(jù)庫(kù)[10];MapReduce[11,12]本質(zhì)為 函 數(shù) 式 編 程,是 一 個(gè) 并 行 計(jì)算模型與框架,實(shí)現(xiàn)大規(guī)模的機(jī)器學(xué)習(xí)。
通過(guò)上述技術(shù),可利用低成本設(shè)備搭建一個(gè)獨(dú)立的系統(tǒng)。通過(guò)HBase實(shí)現(xiàn)大量高性能集群狀態(tài)數(shù)據(jù)的存儲(chǔ),使用MapReduce實(shí)現(xiàn)相關(guān)聚類(lèi)算法進(jìn)行數(shù)據(jù)分析,為實(shí)現(xiàn)高性能集群狀態(tài)監(jiān)測(cè)的智能化提供了可能性。
通過(guò)集群里L(fēng)inux系統(tǒng)各部件的運(yùn)行狀況量來(lái)描述整個(gè)集群,這些部件的運(yùn)行狀態(tài)集合就形成了集群的狀態(tài)。根據(jù)Hadoop平臺(tái)工具的特點(diǎn),結(jié)合高性能集群系統(tǒng)狀態(tài)數(shù)據(jù),構(gòu)建狀態(tài)數(shù)據(jù)存儲(chǔ)與分析平臺(tái),平臺(tái)架構(gòu)如圖1所示。
圖1 狀態(tài)數(shù)據(jù)存儲(chǔ)與分析平臺(tái)架構(gòu)
平臺(tái)由三部分構(gòu)成:狀態(tài)采集模塊完成高性能集群狀態(tài)數(shù)據(jù)的采集,主要通過(guò)Linux的/proc等其他部分獲?。粻顟B(tài)數(shù)據(jù)存儲(chǔ)模塊采用HBase,實(shí)現(xiàn)動(dòng)態(tài)時(shí)序、歷史數(shù)據(jù)龐大的狀態(tài)數(shù)據(jù)高效存儲(chǔ);狀態(tài)數(shù)據(jù)的分析處理模塊通過(guò)MapReduce實(shí)現(xiàn)的聚類(lèi)算法,達(dá)到狀態(tài)數(shù)據(jù)的分類(lèi)及故障預(yù)警。
從存儲(chǔ)使用的角度上來(lái)說(shuō),狀態(tài)數(shù)據(jù)的存儲(chǔ)層由Master管理,同時(shí)也是客戶(hù)端訪問(wèn)文件系統(tǒng)的接口;應(yīng)用層包括HDFS文件系統(tǒng)上的HBase數(shù)據(jù)庫(kù)和MapReduce編程模型。
通過(guò)虛擬化技術(shù),在Windows 7操作系統(tǒng)的PC 機(jī)上,安裝Virtual Box,虛擬Linux 環(huán)境,在各機(jī)上安裝JDK、SSH 和Hadoop,搭建一個(gè)完全分布模式下的Hadoop平臺(tái)。
集群狀態(tài)數(shù)據(jù)的存儲(chǔ)客戶(hù)端由兩部分組成:數(shù)據(jù)采集部分和數(shù)據(jù)存儲(chǔ)部分。本文中,兩部分都由Java程序?qū)崿F(xiàn),通過(guò)嵌入程序中的Linux系統(tǒng)命令 (如vmstat、top),完成對(duì)集群狀態(tài)數(shù)據(jù)的采集;采集完成后,調(diào)用HBase API接口,將數(shù)據(jù)存儲(chǔ)到HBase的分布式數(shù)據(jù)庫(kù)里。
狀態(tài)數(shù)據(jù)采集存儲(chǔ)流程如圖2所示。
圖2 狀態(tài)數(shù)據(jù)采集存儲(chǔ)流程
圖2中,為減少系統(tǒng)負(fù)載,不影響生產(chǎn)作業(yè),設(shè)置一個(gè)閾值,該閾值為節(jié)點(diǎn)cpu利用率的大小,只有在利用率低于閾值的情況下,程序才采集、存儲(chǔ)進(jìn)狀態(tài)數(shù)據(jù)。
高性能集群系統(tǒng)處于同一時(shí)鐘,傳到客戶(hù)端存儲(chǔ)的各個(gè)節(jié)點(diǎn)狀態(tài)數(shù)據(jù)是同步與并發(fā)的,故狀態(tài)數(shù)據(jù)的類(lèi)型為動(dòng)態(tài)時(shí)序。綜合上述,設(shè)計(jì)狀態(tài)數(shù)據(jù)的HBase表的整體邏輯見(jiàn)表1。
表1 狀態(tài)數(shù)據(jù)HBase表整體邏輯
表1 中,RowKey 為行關(guān)鍵字,用于數(shù)據(jù)的檢索;TimeStamp為采集時(shí)刻的時(shí)間戳;由于高性能集群的正常運(yùn)行受到機(jī)房溫度和濕度影響,設(shè)置Climate列族實(shí)現(xiàn)對(duì)溫度和濕度的存儲(chǔ);Cluster-state列族為收集到的節(jié)點(diǎn)狀態(tài),如cpu-usr為cpu在用戶(hù)狀態(tài)下的利用率、bread為每秒從硬盤(pán)讀入系統(tǒng)緩沖區(qū)buffer的物理塊數(shù),最后一列state為經(jīng)過(guò)機(jī)器學(xué)習(xí)之后,寫(xiě)入到數(shù)據(jù)庫(kù)里的狀態(tài)值。
通過(guò)MapReduce實(shí)現(xiàn)的聚類(lèi)算法實(shí)現(xiàn)狀態(tài)數(shù)據(jù)的分析處理,文中,采用k-means聚類(lèi)算法[12],該算法是以距離作為相似性的評(píng)價(jià)指標(biāo)。
從HBase數(shù)據(jù)庫(kù)中獲取的待分類(lèi)的數(shù)據(jù)集作為算法的輸入,分為健康、一般與故障3 個(gè)類(lèi)別 (a、b、c),隨著數(shù)據(jù)庫(kù)的擴(kuò)大,再細(xì)化不同的類(lèi)別;算法的輸出為不再變化的k個(gè) (初始為3)聚類(lèi)中心。
算法是一個(gè)迭代的過(guò)程:
(1)從數(shù)據(jù)集中選取k個(gè)數(shù)據(jù)作為中心。
(2)測(cè)量所有數(shù)據(jù)到每個(gè)中心的距離,找出一個(gè)最小距離,并將其劃入該類(lèi)中。
(3)重新計(jì)算各類(lèi)中心。重復(fù)進(jìn)行2、3的步驟,直至滿(mǎn)足設(shè)定的閾值。
依據(jù)上述流程,使用MapRduce 框架進(jìn)行實(shí)現(xiàn):由HBase的Java API獲取輸入數(shù)據(jù),并將其轉(zhuǎn)化為Sequence-File文件,中間生成的聚類(lèi)中心數(shù)據(jù)也采用SequenceFile文件存儲(chǔ)。
Map函數(shù)格式:
(1)輸入:<狀態(tài)數(shù)據(jù)樣本序號(hào)index,狀態(tài)數(shù)據(jù)D>
(2)輸出:<所屬類(lèi)別C,狀態(tài)數(shù)據(jù)D>
Reduce函數(shù)格式:
(1)輸入:<某類(lèi)別C,該類(lèi)狀態(tài)數(shù)據(jù)集合list>
(2)輸出:<某類(lèi)別C,新的聚類(lèi)中心>
圖3為K-mean聚類(lèi)算法MapReduce實(shí)現(xiàn)流程,流程由數(shù)據(jù)獲取部分、Map部分、Ruduce部分和主函數(shù)構(gòu)成。
圖3 K-mean聚類(lèi)算法MapReduce實(shí)現(xiàn)流程
主函數(shù)中,需要設(shè)計(jì)恰當(dāng)?shù)拈撝?,并通過(guò)迭代程序,實(shí)現(xiàn)對(duì)Map函數(shù)和Reduce函數(shù)的不斷調(diào)用,直至滿(mǎn)足設(shè)定的閾值。
文中,平臺(tái)由4個(gè)虛擬節(jié)點(diǎn)組成,包括一個(gè)NameNode和3個(gè)DataNode。每個(gè)節(jié)點(diǎn)的配置為單核CPU,2G 內(nèi)存,硬盤(pán)100G。操作系統(tǒng)為Centos6.4,JDK 使用jdk1.7.0_25,Hadoop版本為1.2.0,HBase版本為0.94.1,監(jiān)控對(duì)象為128節(jié)點(diǎn)的某高性能集群。
為了對(duì)設(shè)計(jì)的HBase表進(jìn)行測(cè)試,使用第三方開(kāi)源軟件YCSB[13]。通過(guò)重寫(xiě)core文件里的CoreWorkload.java文件,實(shí)現(xiàn)對(duì)HBase數(shù)據(jù)操作的實(shí)際化,即針對(duì)表1 中的HBase表進(jìn)行操作。其默認(rèn)數(shù)據(jù)庫(kù)名稱(chēng)為 “HPC”,包括2個(gè)列 族 “Cluster-state”和 “Climate”,重 新 編 譯 開(kāi) 始 壓力測(cè)試。
(1)數(shù)據(jù)導(dǎo)入測(cè)試
在HBase數(shù)據(jù)庫(kù)的HPC 表中,導(dǎo)入50萬(wàn)條數(shù)據(jù) (副本數(shù)為3,大小為73.5GB),總體運(yùn)行時(shí)間為4367.211s、系統(tǒng)吞吐率達(dá)到150.3ops/sec,單條數(shù)據(jù)的導(dǎo)入平均延時(shí)為87.03ms,說(shuō)明平臺(tái)能夠承受長(zhǎng)時(shí)間大量數(shù)據(jù)的寫(xiě)入。相對(duì)于已搭建的其他平臺(tái),并未達(dá)到最佳效果,這由于該平臺(tái)的從節(jié)點(diǎn)個(gè)數(shù)較少導(dǎo)致。
(2)數(shù)據(jù)讀寫(xiě)測(cè)試
本文中,集群狀態(tài)數(shù)據(jù)為一次存儲(chǔ)多次讀取,針對(duì)已存儲(chǔ)的50 萬(wàn)條數(shù)據(jù),實(shí)現(xiàn)1 萬(wàn)次的讀寫(xiě)操作 (讀寫(xiě)比例95:5)。
圖4為5次單個(gè)指令執(zhí)行的平均延遲實(shí)驗(yàn),從圖中可以看出,數(shù)據(jù)變化平緩,系統(tǒng)穩(wěn)定運(yùn)行。5 次指令執(zhí)行的平均時(shí)間為3938ms,吞吐率接近253ops/sec。由于數(shù)據(jù)寫(xiě)的延遲時(shí)間為數(shù)據(jù)讀的2倍左右,在數(shù)據(jù)讀占多數(shù)的應(yīng)用場(chǎng)景下,滿(mǎn)足性能要求。
圖4 數(shù)據(jù)讀寫(xiě)延遲
(3)訪問(wèn)HBase并發(fā)能力測(cè)試
在已存有50萬(wàn)條集群狀態(tài)數(shù)據(jù)的HBase數(shù)據(jù)庫(kù),進(jìn)行1萬(wàn)次的數(shù)據(jù)讀取和更新操作;更改訪問(wèn)線程個(gè)數(shù),從10到100進(jìn)行變化。實(shí)驗(yàn)過(guò)程中,考慮到程序執(zhí)行的延緩性,每次指令執(zhí)行都是在一定時(shí)間間隔后進(jìn)行了,這樣保證了數(shù)據(jù)的真實(shí)性。
圖5為HBase并發(fā)度測(cè)試,圖中表明,隨著線程數(shù)量從10增長(zhǎng)到30,數(shù)據(jù)庫(kù)的吞吐率逐漸增加,并在30時(shí)達(dá)到最大,約為410ops/sec;30到100 階段,吞吐率呈下降趨勢(shì),最低點(diǎn)100時(shí)的吞吐率為362ops/sec。
圖5 HBase訪問(wèn)并發(fā)度測(cè)試
30即為該系統(tǒng)的最優(yōu)并發(fā)值,因此在訪問(wèn)過(guò)程中用戶(hù)個(gè)數(shù)應(yīng)以30為上限值。即同一時(shí)刻并發(fā)采集與存儲(chǔ)狀態(tài)的最優(yōu)節(jié)點(diǎn)個(gè)數(shù)為30,完全符合128節(jié)點(diǎn)的高性能集群狀態(tài)監(jiān)測(cè)要求。
對(duì)存儲(chǔ)在HBase上的10萬(wàn)條集群狀態(tài)數(shù)據(jù) (每條數(shù)據(jù)的屬性項(xiàng)為10),運(yùn)行MapReduc程序進(jìn)行聚類(lèi)分析,統(tǒng)計(jì)聚類(lèi)中心位置,圖6為K-means聚類(lèi)中心對(duì)比圖。
圖6 K-means聚類(lèi)中心
圖6中可以看出,聚類(lèi)效果比較好,平均聚類(lèi)中心和最大聚類(lèi)中心都劃分清楚。為了確定該聚類(lèi)算法在實(shí)際應(yīng)用中的效果,統(tǒng)計(jì)不同迭代次數(shù)之后,聚類(lèi)結(jié)果與實(shí)際情況相比的準(zhǔn)確率見(jiàn)表2。
表2 不同迭代次數(shù)下的故障預(yù)測(cè)準(zhǔn)確率
表2中,隨著迭代次數(shù)的增加,故障預(yù)測(cè)的準(zhǔn)確率一直升高,16次之后增長(zhǎng)程度逐漸減小,20次的時(shí)候達(dá)到最優(yōu)效果。沒(méi)有取得更高準(zhǔn)確率主要原因是樣本數(shù)量少、每條狀態(tài)數(shù)據(jù)屬性項(xiàng)較少,但是在實(shí)際應(yīng)用中,已經(jīng)能夠達(dá)到了主動(dòng)預(yù)測(cè)故障的要求。
針對(duì)油氣勘探中高性能集群的穩(wěn)定性問(wèn)題,以Hadoop為平臺(tái)實(shí)現(xiàn)了高性能集群狀態(tài)數(shù)據(jù)的存儲(chǔ)與分析。搭建具有4個(gè)虛擬節(jié)點(diǎn)的Hadoop平臺(tái),實(shí)現(xiàn)對(duì)高性能集群狀態(tài)數(shù)據(jù)采集與HBase存儲(chǔ),通過(guò)壓力測(cè)試,確定設(shè)計(jì)的方案能夠滿(mǎn)足大量狀態(tài)數(shù)據(jù)導(dǎo)入、多次讀取及并發(fā)訪問(wèn);應(yīng)用MapReduce模型實(shí)現(xiàn)了k-means算法,并對(duì)采集到集群狀態(tài)數(shù)據(jù)進(jìn)行聚類(lèi),聚類(lèi)中心劃分清楚,隨著迭代次數(shù)的增加,故障預(yù)測(cè)的準(zhǔn)確率增高。因此,平臺(tái)能達(dá)到主動(dòng)方式的故障預(yù)測(cè),可以有效地應(yīng)用于高性能集群管理。
[1]Krueger J,Donofrio D,Shalf,J.Hardware/software co-design for energy-efficient seismic modeling [C]//Proceedings of International Conference for High Performance Computing,Networking,Storage and Analysis,2011:443-449.
[2]CHEN Liang.Arge-scale high-performance computer clusters fast fault diagnosis and automatic recovery system development[D].Chengdu:University of Electronic Science and Technology,2012 (in Chinese). [陳良.大型高性能計(jì)算機(jī)集群故障快速診斷與自動(dòng)恢復(fù)系統(tǒng)開(kāi)發(fā) [D].成都:電子科技大學(xué),2012.]
[3]WU Linping,ZHANG Xiaoxia.Degin of runtime state monitoring software for cluster system [J].Journal of Huazhong University of Scicence and Technology,2011,39 (1):148-152(in Chinese).[武林平,張曉霞.集群系統(tǒng)運(yùn)行狀態(tài)監(jiān)控軟件設(shè)計(jì) [J].華中科技大學(xué)學(xué)報(bào),2011,39 (1):148-152.]
[4]YE Jun,LONG Zhiqiang.State monitor software general framework mediator pattern observer pattern [J].Computer Simulation,2008,25 (4):271-273 (in Chinese).[葉俊,龍志強(qiáng).狀態(tài)監(jiān)控軟件通用框架設(shè)計(jì)及應(yīng)用 [J].計(jì)算機(jī)仿真,2008,25 (4):271-273.]
[5]Tom Wbite.Hadoop definitive guide [M].2nd ed.Beijing:Tsinghua University Press,2011:43-44 (in Chinese).[Tom Wbite.Hadoop權(quán)威指南 [M].2 版.北京:清華大學(xué)出版社,2011:43-44.]
[6]What is Apache Hadoop [EB/OL]. [2014-01-02].http://hadoop.apache.org/.
[7]Newman A,Li YF,Hunter J.Scalable Semantics-the Silver Lining of Cloud Computing [C]//IEEE Fourth International Conference on eScience.IEEE,2008:111-118.
[8]YU Ge,GU Yu,BAO Yubin,et al.Graph processing cloud computing data management distributed computing [J].Chinese Journal of Computers,2011,34 (10):1753-1767 (in Chinese).[于戈,谷峪,鮑玉斌,等.云計(jì)算環(huán)境下的大規(guī)模 圖 數(shù) 據(jù) 處 理 技 術(shù) [J].計(jì) 算 機(jī) 學(xué) 報(bào),2011,34 (10):1753-1767.]
[9]He B,F(xiàn)ang W,Luo Q,et al.Mars:A mapreduce framework on graphics processors [C]//17th International Conference on Parallel Architectures and Compilation Techniques.New York,NY,USA:ACM,2008:260-269.
[10]Hbase architecture[EB/OL]. [2014-01-02].http://wiki.apache.org/hadoop/Hbase/Hbase Architecture.
[11]HUANG Bin,XU Shuren,PU Wei.Design and implementation of MapReduce based data mining platform [J].Computer Engineering and Design,2013,34 (2):495-501 (in Chinese).[黃斌,許舒人,蒲衛(wèi).基于MapReduce的數(shù)據(jù)挖掘平臺(tái)設(shè)計(jì)與實(shí)現(xiàn) [J].計(jì)算機(jī)工程與設(shè)計(jì),2013,34 (2):495-501.]
[12]WU Hao,NI Zhiwei,WANG Huiying.MapReduce-based ant colony optimization [J].Computer Integrated Manufacturing Systems,2012,18 (7):1503-1509 (in Chinese).[吳昊,倪志偉,王會(huì)穎.基于MapReduce的蟻群算法 [J].計(jì)算機(jī)集成制造系統(tǒng),2012,18 (7):1503-1509.]
[13]ZHANG Jing,DUAN Fu.Improved k-means algorithm with meliorated initial centers[J].Computer Engineering and Design,2013,34 (5):1691-1694 (in Chinese). [張靖,段富.優(yōu)化初始聚類(lèi)中心的改進(jìn)k-means算法 [J].計(jì)算機(jī)工程與設(shè)計(jì),2013,34 (5):1691-1694.]
[14]Cooper BF,Silberstein A,Tam E,et al.Benchmarking cloud serving systems with YCSB [C]//Proceedings of the 1st ACM Symposium on Cloud computing.ACM,2010:143-154.