馬超 黃良毅 張鐵剛 李偉寧
[摘 要]隨著信息時代的來臨,企業的日常運營越來越依賴于IT系統的日常運行。企業對信息系統的依賴越深,系統的復雜度越高,IT運維的難度也隨之加大,但由于受制于建設時期的技術制約,電力行業在大數據的分析處理方面已逐漸無法適應新環境、新運維模式下的管理要求。基于此,本文重點分析海南電網海量機器數據實時流處理技術。
[關鍵詞]海南電網;海量機器數據;實時流處理技術
doi:10.3969/j.issn.1673 - 0194.2019.02.033
[中圖分類號]TM76;TP311.13 [文獻標識碼]A [文章編號]1673-0194(2019)02-00-03
0 引 言
大數據是近年來受到廣泛關注的新概念,是指通過對大量來源復雜的多種數據進行高速地捕捉、發現和分析,用經濟的方法提取其價值的技術體系或技術架構。機器大數據是在大數據處理分類中,由機器直接生成的數據,也是發展最快、最為復雜,同時又極具商業價值的大數據組成形式,并且機器大數據具有數量大、增長速度快、復雜性高、多樣化等特點。除了來自服務器、存儲、網絡中的傳統IT數據以外,來自移動互聯網、物聯網中的大量非結構化數據也都屬于機器數據,能夠機器數據進行深入挖掘,充分利用數據價值,提升數據分析質量,保證IT系統穩定運行。
借助大數據流式處理技術,技術人員能夠對全網范圍內的主機、服務器、網絡設備、數據庫以及各種應用服務系統等產生的各類大數據進行規范采集,規范數據格式,統一持久化存儲,統一策略制定,并進行分析,實時和準實時的可視化呈現。
1 國內外海量數據的流處理技術
目前,國內外主流的海量機器數據流式處理技術包括數據攝取技術和序列化技術。
1.1 數據攝取技術
(1)Flume。Flume從其他應用程序收集機器數據,然后將這些數據送入Hadoop,功能比較強大,具有容錯性,還可以調優化及故障切換。
(2)Kafka。Kafka是一種高吞吐量的分布式發布訂閱消息系統,負責處理消費者規模網站中的所有動作流數據。
(3)Sqoop。企業在關系數據庫與Hadoop之間傳輸數據,Sqoop可以將數據導入Hive或HBase,并從Hadoop導出到關系數據庫管理系統(RDBMS)。
1.2 序列化技術
(1)Protocol Buffers。Protocol Buffers可以把結構化數據串行化,很適合做數據存儲或RPC數據交換格式。它可用于通訊協議、數據存儲的序列化結構數據格式。
(2)Avpro。這個Apache項目提供了數據序列化系統,擁有豐富的數據結構和緊湊格式。
1.3 ETL(萃取、轉換)技術
(1)Apache Falcon。Apache Falcon是一個面向Hadoop的數據處理和管理平臺,設計用于數據移動、數據管道協調、生命周期管理和數據發現。它使終端用戶可以快速地將數據及其相關業務上傳到Hadoop集群中。
(2)Crunsh。Crunch是一個用Go語言開發的基于Hadoop的ETL和特性的抽取工具,特點是速度快。
2 海量機器數據處理在海南電力的技術研究及運用
2.1 項目背景
海南電網海量日志平臺科技項目中的網絡環境比較復雜,在日常的運維過程中,IT管理員經常需要提取日志信息以追蹤系統故障及其他問題,但目前面臨的問題包括以下幾個方面。①海量的日志沒有進行集中管理,管理員需要登錄每一臺服務器,使用腳本命令或程序查看日志,操作煩瑣,效率低下,容易出錯。②只能做簡單搜索和統計,無法針對海量日志的多維度檢索和統計分析,不能滿足分析要求。③沒有實時監控和報警,如針對程序出錯、網絡設備故障、業務響應超時不能第一時間獲取報警信息并進行故障排查。④故障定位常常需要多個環節的日志進行關聯分析,各設備之間的日志是孤立分散的,無法關聯。⑤海量數據日志無法進行統一歸檔,不方便問題追溯。
目前,海量機器數據處理可以分為以下3個類型。①復雜的批量數據處理(Batch Data Processing),通常的時間跨度在數十分鐘到數小時之間。②基于歷史數據的交互式查詢(Interactive Query),通常的時間跨度在數十秒到數分鐘之間。③基于實時數據流的數據處理(Streaming Data Processing),通常的時間跨度在數百毫秒到數秒之間。
Spark Streaming提供了一套高效、可容錯的準實時大規模流式處理框架,將流式計算分解成一系列短小的批處理作業。整個流式計算根據業務需求可以對中間的結果進行疊加,或者存儲到外部設備,具備實時性和擴展性,而且吞吐量比Storm高出幾倍。
2.2 試驗驗證
2.2.1 模塊設計
模塊設計如圖1所示,包括數據接入、數據緩存。
2.2.2 模塊說明
日志易系統基于分布式集群設計,即使采用單機安裝,未來橫向擴展也非常容易。
①Nginx。用于日志易系統內模塊(Collector,Frontend,Yottaweb)負載均衡和容災。②Collector。處理Agent采集的數據,做轉換后存入消息隊列Kafka。③Zookeeper。用于存儲很重要的配置信息和模塊Leader選舉。④Kafka。分布式消息隊列。⑤Logriver。日志易的日志分析處理模塊。⑥Yottaweb。日志易的Web模塊。
2.2.3 測試方法
采集海南電網機器海量數據日志,數據接收端為單Collector,以5000 eps為基準值,每隔固定時間10分鐘,逐級增加2 000 eps,通過Manager界面收集測試數據,直到數據接收性能達到拐點。測試方法如表1所示。CPU總體變化趨勢如圖2所示。內存總體變化趨勢如圖3所示。I/O總體變化趨勢如圖4所示。
如圖2、圖3、圖4所示,5個凸起波紋分別為5次測試區間內的CPU/內存/磁盤IO的趨勢變化,單臺磁盤寫入峰值可達到50 000 KBps,并未達到性能拐點。
3 結 語
經過實際測試,在總量1 000萬條的海量數據,經過實時流處理,存在5類不同格式的樣本數據量環境。①系統響應時間小于3秒;②并發用戶數大于100個;③性能數據采集時間≤300秒;④資源利用率:CPU<50%、磁盤I/O<25%、網絡吞吐量<20%
主要參考文獻
[1]齊劍雄.分布式日志采集系統數據傳輸分析研究[J].軟件,2012(10).
[2]朱璐.淺談電網公司一體化、可視化、智能化的信息通信調度理論體系[J].中國新通信,2013(20).
[3]夏海元.面向Big Data的數據處理技術概述[J].數字技術與應用,2012(3).