于 琰
(作者單位:中央廣播電視總臺)
基于計算模型(MapReduce)的任務跟蹤器(TaskTracker)、作業(yè)跟蹤器(JobTracker)組件作為全局管理者,在服務端提取出設備運行狀態(tài)的不同特征信息,使用分布式聚類算法(MapReduce K-Means)掃描所有數(shù)據(jù)集合,挖掘分析Syslog數(shù)據(jù)的優(yōu)先級(PRI)、報頭(Header)、消息描述(MSG)等信息,統(tǒng)計數(shù)據(jù)樣本集作為網(wǎng)絡設備運行狀態(tài)的判定依據(jù),實現(xiàn)對網(wǎng)絡設備監(jiān)測數(shù)據(jù)的快速挖掘、分析與存儲管理。
Hadoop框架作為最常用的海量數(shù)據(jù)處理、存儲模型,在Apache開源云計算平臺基礎上,建構(gòu)起涵蓋分布式文件系統(tǒng)、計算模型(MapReduce)、數(shù)據(jù)挖掘庫(Mahout)、數(shù)據(jù)倉庫(Hive)、數(shù)據(jù)庫(HBase)、安裝與配置工具(Manager)、數(shù)據(jù)轉(zhuǎn)換工具(Sqoop)、任務協(xié)作組件(Zookeeper)等的數(shù)據(jù)管理系統(tǒng)。該管理系統(tǒng)可運行于配置較低的廉價計算機(PC)主機中,降低海量化數(shù)據(jù)處理與存儲的難度[1]。
HDFS系統(tǒng)采用主從結(jié)構(gòu)(Master/Slave, M/S),含有1個主節(jié)點(NameNode)、多個數(shù)據(jù)節(jié)點(DataNode)、客戶端(Client)等組成部分,負責為結(jié)構(gòu)化、非結(jié)構(gòu)化提供分布式緩存服務,具有高可靠性、高容錯性、低成本的特征。采用數(shù)據(jù)集流式訪問的模式批量寫入網(wǎng)絡端客戶文件、日志數(shù)據(jù)信息,分多次讀取每個數(shù)據(jù)文件分塊的身份認證(Identity document, ID)編碼、任務狀態(tài)監(jiān)控信息,緩存至NameNode、DataNode之中,并為MapReduce、HBase等組件的數(shù)據(jù)文件訪問、數(shù)據(jù)存儲提供接口。
MapReduce并行計算模型通常將數(shù)據(jù)項處理任務分為拆分(Split)、映射(Map)、派發(fā)(Shuffle)、聚合(Reduce)等多個階段(見圖1)[2]。在拆分階段將輸入數(shù)據(jù)集切分為大小相同的數(shù)據(jù)片段進行并行處理;映射階段是使用讀取器(RecordReader)讀取輸入的{0,1,2,…,n}數(shù)據(jù)片段,解析得到中間結(jié)果的鍵值(K表示鍵,V表示值)對(K0,V0),(K1,V1),(K2,V2),…, (Kn,Vn),組合成集合M{(K0,V0),(K1,V1),…,(Kn,Vn)};派發(fā)階段是將中間數(shù)據(jù)結(jié)果的鍵值對作為reduce的輸入,Reduce聚合階段是運行自定義reduce()函數(shù)的數(shù)據(jù)處理指令,從M{(K0,V0),(K1,V1),…,(Kn,Vn)}鍵值對集合中挑選具有相同鍵值的數(shù)據(jù)片段,合并為新的二元組數(shù)據(jù)集(K’,V’)并輸出。
圖1 MapReduce并行計算模型
Hive為基于Hadoop框架的數(shù)據(jù)映射工具,包括數(shù)據(jù)源、數(shù)據(jù)存儲及管理、聯(lián)機分析處理(Online Analytical Processing, OLAP)服務器、前端工具和HQL(Hibernate Query Language,面向?qū)ο蟮牟樵冋Z言)連接查詢接口等組成部分,負責使用OLAP服務器將需要分析的結(jié)構(gòu)化、非結(jié)構(gòu)化數(shù)據(jù)文件映射為數(shù)據(jù)庫表,以支持用戶的數(shù)據(jù)查詢、數(shù)據(jù)分析操作。
基于Hadoop、MapReduce、HDFS、HBase、Hive等集成平臺,以及日志數(shù)據(jù)集服務器(Syslog Server)、簡單網(wǎng)絡管理協(xié)議(Simple Network Management Protocol, SNMP)、MapReduce K-Means聚類算法的大數(shù)據(jù)技術(shù),建構(gòu)起面向網(wǎng)絡設備運行數(shù)據(jù)的監(jiān)測管理平臺,設置涵蓋數(shù)據(jù)采集層、數(shù)據(jù)存儲層、數(shù)據(jù)挖掘分析層等的多層結(jié)構(gòu)[3]。網(wǎng)絡設備運行監(jiān)測管理平臺結(jié)構(gòu)有以下幾個層級:
在網(wǎng)絡設備端安裝的傳感器裝置、日志數(shù)據(jù)采集服務器等組件,以不同速率對某一時段內(nèi)網(wǎng)絡主機設備的運行速度、內(nèi)存或存儲用量、故障告警等信息進行采集,記錄采集的互聯(lián)網(wǎng)協(xié)議(Internet Protocol Address, IP)地址、媒體存取控制(Media Access Control Address, MAC)地址、行鍵字符串、報頭、消息描述等日志數(shù)據(jù)集,并經(jīng)由無線傳感網(wǎng)絡回傳至網(wǎng)絡服務端、在Hadoop服務端進行存儲。
數(shù)據(jù)存儲層負責網(wǎng)絡設備監(jiān)測數(shù)據(jù)的寫入、讀取及存儲,依據(jù)Pig(Apache Pig,基于Hadoop的大規(guī)模數(shù)據(jù)分析平臺)流式訪問模式進行日志數(shù)據(jù)集訪問、批量寫入數(shù)據(jù)文件,使用Pig filter(一種數(shù)據(jù)預處理裝置,通常根據(jù)文件的特定條件選擇所需的元組)運算符過濾與選擇所需的日志數(shù)據(jù)元組;利用Sqoop BTL數(shù)據(jù)轉(zhuǎn)換工具,將數(shù)據(jù)字符串轉(zhuǎn)換為對象,生成與特定日志數(shù)據(jù)表名有相同名稱的類,保存表中每一行的字節(jié)序列記錄以供應用程序調(diào)用。隨后基于云數(shù)據(jù)倉庫、Hive Script分別創(chuàng)建不同的日志數(shù)據(jù)內(nèi)部表,生成hive表的定義后加載并緩存至HDFS系統(tǒng)中。HDFS系統(tǒng)、HBase為數(shù)據(jù)存儲的中心,依據(jù)HBase的表行鍵排序、列組設計規(guī)范,對海量化網(wǎng)絡設備狀態(tài)監(jiān)測日志數(shù)據(jù)、告警推送信息進行存儲。
數(shù)據(jù)挖掘分析層涵蓋MapReduce并行計算、K-Means聚類算法分析的兩個階段,MapReduce特征提取是將輸入日志數(shù)據(jù)分解成若干個大小相同的數(shù)據(jù)片段,對每個數(shù)據(jù)片段的鍵值對進行處理,并組合為M{(K0,V0),(K1,V1),…,(Kn,Vn)}的鍵值對集合。以HBase表數(shù)據(jù)作為MapReduce并行計算模型的輸入數(shù)據(jù),使用RecordReader讀取輸入的{0,1,2,…,n}數(shù)據(jù)片段,解析出包含{Key:“Mac:-Date”“Tower:Line:ID”,Value:(V1,V2,…,Vn)}的鍵值對,在Map、Reduce函數(shù)任務計算中輸入中間結(jié)果的鍵值對,由NameNode、DataNode參與計算,提取不同特征信息的有效值,最后輸出二元組特征值的數(shù)據(jù)集(K’,V’)[4]。其中JobTracker、TaskTracker組件負責監(jiān)控MapReduce計算的運行狀況,一旦發(fā)現(xiàn)某一節(jié)點的任務失敗后,會將任務轉(zhuǎn)移至其他節(jié)點重新運行;基于Hadoop服務框架的Zookeeper任務資源協(xié)調(diào)組件,用于解決分布式計算的數(shù)據(jù)節(jié)點選取、資源協(xié)調(diào)問題,為Hadoop集群任務提供統(tǒng)一數(shù)據(jù)節(jié)點命名、分布式與同步管理服務。
面對海量化網(wǎng)絡設備運行監(jiān)測數(shù)據(jù)的任務,選用已訓練好的、含有類別樣本數(shù)據(jù)的K-Means聚類算法作為實驗模型,對多種網(wǎng)絡設備同時運行的情況進行狀態(tài)監(jiān)測。當前網(wǎng)絡設備運行監(jiān)測的Syslog日志數(shù)據(jù)挖掘分析,通常包括優(yōu)先級、報頭、消息描述等組成信息。這里的優(yōu)先級是指設備狀態(tài)日志的優(yōu)先級,用于描述安全/授權(quán)消息、報警消息的嚴重等級。報頭包含設備主機名、時間戳等信息。消息描述是指日志消息的詳細描述信息[5]。
根據(jù)監(jiān)測日志數(shù)據(jù)樣本的不同類別、選擇與設定k個類別的聚類中心,假設所有日志數(shù)據(jù)c含有{x1,x2,…,xn}等n個樣本,設為c=(x1,x2,…,xn)T,所有數(shù)據(jù)樣本構(gòu)成的k個類別集合為C={c1,c2,…,ck},每個聚類集合只存在唯一的標識符。若某一類別cj中包含的所有日志數(shù)據(jù)樣本集為X={x1,x2,…,xi}、i為樣本的個數(shù)、聚類中心為Cj,則根據(jù)歐幾里得度量公式計算數(shù)據(jù)樣本與聚類中心Cj之間的歐氏距離,求取距離某一數(shù)據(jù)樣本最近的聚類中心Cij,將數(shù)據(jù)樣本分配到聚類中心Cij所對應的簇中,計算公式如式(1)所示:
其中,Cj表示第j個數(shù)據(jù)聚類中心、Cij表示具有第i個屬性值的聚類中心。利用極大似然估計法(Maximum likelihood estimation)建立目標函數(shù)、計算最小化誤差平方和,整個為X={x1,x2,…,xi}數(shù)據(jù)樣本集的誤差平方和(SSE)計算公式如式(2)所示:
SSE表示數(shù)據(jù)樣本集聚類的最小化誤差平方和,在確定初始聚類中心為Centerj的情況下,采用求取距離某一數(shù)據(jù)樣本最近的聚類中心Cij、將數(shù)據(jù)樣本分配到聚類中心Cij所對應簇的方式,來更新并形成新的聚類中心,直至相鄰兩次的聚類中心小于閾值時停止[6]。聚類計算方式如下:
Map:輸入:〈Object,日志數(shù)據(jù)〉
輸出:〈所屬類Cj,數(shù)據(jù)〉
Reduce:輸入:〈Cj,相應數(shù)據(jù)的集合〉
輸出:〈Cij,新的聚類中心〉
根據(jù)不同數(shù)據(jù)樣本的相似性作出聚類簇的粒子適應度計算,數(shù)據(jù)粒子更新后的所處位置x'1=xi+vi、更新速率為V'i=vi+c1×rand(Cjbest-xi)+c2×rand(Gjbest-vi),其中Cjbest為某一數(shù)據(jù)集的初始聚類中心、Gjbest表示數(shù)據(jù)粒子群最優(yōu)位置,c1、c2表示學習因子。判斷相鄰兩次的聚類中心位置是否小于閾值,若“是”則結(jié)束,若“否”則用新的聚類中心覆蓋原有聚類中心并重新迭代。
選用5臺網(wǎng)絡計算機搭建Hadoop分布式集群架構(gòu),每臺計算機的基本配置為Genuine Intel(R) CPU T2080 @1.73GHz CPU 16GB 2TB。在網(wǎng)絡計算機主節(jié)點安裝Hadoop分布式軟件,配置用戶登錄的公鑰授權(quán)文件authorized_keys、配置Kettle連接Hadoop集群的HDFS系統(tǒng)等環(huán)境變量,在Hadoop軟件的主對象樹中選擇Hadoop cluster、新建New ClusterGrid監(jiān)控服務,收集1小時內(nèi)監(jiān)測網(wǎng)絡設備運行狀態(tài)的日志數(shù)據(jù)文件。
輸入收集的日志數(shù)據(jù)文件,提取優(yōu)先級、報頭、消息描述等有用詞,統(tǒng)計每條日志的網(wǎng)絡設備編號、設備類型、設備吞吐量(CPU負載)、設備內(nèi)存狀態(tài)、設備運行帶寬狀態(tài)等單詞數(shù)目作為數(shù)據(jù)樣本集,進行MapReduce K-Means聚類分析,得出表1的實驗結(jié)果。
表1 網(wǎng)絡設備運行狀態(tài)監(jiān)測結(jié)果
從表1的實驗結(jié)果可得出,使用Hadoop分布式軟件程序框架、MapReduce分布式聚類模型,運行Hadoop分布式集群平臺的采集器、數(shù)據(jù)監(jiān)測與告警組件,監(jiān)測各網(wǎng)絡主機設備的中央處理器(Central Processing Unit, CPU)或內(nèi)存用量、運行帶寬速度、故障告警等信息,得到的實驗結(jié)果較為客觀準確。
近年來,網(wǎng)絡主機設備、工業(yè)制造及電氣設備的智能化發(fā)展,使得網(wǎng)絡設備運行狀態(tài)的數(shù)據(jù)監(jiān)測量由GB躍升至TB級別,海量化、低價值密度的網(wǎng)絡設備運行狀態(tài)數(shù)據(jù)需通過利用分布式計算技術(shù)作出處理?;贖adoop MapReduce計算模型、HDFS文件系統(tǒng)兩大核心技術(shù)搭建云服務平臺,利用主從數(shù)據(jù)節(jié)點采集系統(tǒng)日志信息,使用MapReduce、Sqoop數(shù)據(jù)轉(zhuǎn)換、Zookeeper任務協(xié)調(diào)、K-Means聚類模型進行特征提取分析,可實現(xiàn)對單個或多種網(wǎng)絡設備同步運行的監(jiān)測管理。