服務近2000家企業,依托一系列實踐中打磨過的技術和產品,根據企業的具體業務問題和需求,針對性的提供各行業大數據解決方案。
分布式海量日志存儲分析解決方案
來源:未知 時間:2022-37-1 瀏覽次數:640次
1 分布式日志存儲系統概述
日志存儲分析系統是在xx平臺下,針對業務系統產生的日志記錄進行存儲和分析,數據主要來源是軌跡日志,系統任務執行記錄,其他環節產生的運行日志數據等。系統對上述數據進行集中統一收集,并存儲在分布式關系型持久化存儲中(此過程根據業務需求對數據進行ETL轉化,實現數據的一致性和集中式管理),在集中管理的基礎上進行數據整合分析,一方面對外提供日志檢索與分析API服務,另一方面設計系統關鍵環節指標配置任務,通過對關鍵環節的日志分析輸出系統預警消息。2 技術路線
系統存儲和分析的日志數據從ElasticSearch中讀取到Kafka中。Kafka的消費者在偵聽到數據消息進入后,以流方式獲取數據寫入到HBase中。存儲在HBase中的數據則是為日志數據的檢索與分析提供服務。Web前端通過調用后端API檢索HBase中的數據,并進行透視表的可視化展現,展現后的數據支持CSV導出功能。Hbase數據庫
HBase是一個分布式的、面向列的開源數據庫,該技術來源于 Fay Chang 所撰寫的Google論文“Bigtable:一個結構化數據的分布式存儲系統”。就像Bigtable利用了Google文件系統(File System)所提供的分布式數據存儲一樣,HBase在Hadoop之上提供了類似于Bigtable的能力。HBase是Apache的Hadoop項目的子項目。HBase不同于一般的關系數據庫,它是一個適合于非結構化數據存儲的數據庫。另一個不同的是HBase基于列的而不是基于行的模式。
kafa消息隊列
Kafka是由Apache軟件基金會開發的一個開源流處理平臺,由Scala和Java編寫。Kafka是一種高吞吐量的分布式發布訂閱消息系統,它可以處理消費者在網站中的所有動作流數據。 這種動作(網頁瀏覽,搜索和其他用戶的行動)是在現代網絡上的許多社會功能的一個關鍵因素。 這些數據通常是由于吞吐量的要求而通過處理日志和日志聚合來解決。 對于像Hadoop一樣的日志數據和離線分析系統,但又要求實時處理的限制,這是一個可行的解決方案。Kafka的目的是通過Hadoop的并行加載機制來統一線上和離線的消息處理,也是為了通過集群來提供實時的消息。
系統架構圖

- LogData Collector
- LogData Searching
- Web UI前端
1Hbase日志存儲機制優化策略
Hbase本身索引查詢系統存在一定的缺陷,為了完成系統性能目標任務,實現海量日志存儲和海量日志數據分析查詢,最終實現集中,統一,一致性,高效管理,對Hbase做如下策略優化rowKey的優化
rowKey在這里絕對不能像傳統的RDBMS處理主鍵那樣,簡單地用UUID或自增ID來處理。HBase的rowKey是基于字典排序的,具體來說是基于key的ASCII碼來排序,我們的思路是要往rowKey中加入我們想要查詢的條件因子,通過多個因子相互組合,來一步步確定查找范圍。如時間是應該加到rowKey里的一個查詢因子,一個開始時間跟一個截止時間就形成了一個時間段范圍,就能固定一個結果集范圍。
rowkey里加入的查詢因子越多,查詢范圍定位的精確度越高。但查詢因子其實是從眾多日志中抽象而來(比如host,level,timestamp等),這要求每條日志記錄中共性的東西,系統日志大致劃分為下列兩大類型
(1)定格式的業務系統/框架日志(飛機飛行估計日志,任務運行日志等)
(2)不定格式的技術系統/組件/框架日志(比如nginx、redis、等中間件產生的格式化日志)
既定格式的日志采用
非既定個是日志采用
優化篩選器
在通過rowKey的范圍確定對結果集的掃描范圍之后,下一步就是通過內置的filter來進行更精確的篩選,HBase默認提供多種filter供使用者針對rowKey、column-family、qualifier等進行篩選。當然如果rowKey的篩選條件取值跨度比較大,還會產生接近類似于全表掃描的影響。因此需要對篩選條件做一定限制,比如:
(1)查詢時間區間的跨度只能限制在一定的范圍
(2)分頁給出查詢結果
- 上一篇: 大量視頻,圖片,文件分布式存儲技術方案
- 下一篇: 秒懂列式數據庫和行式數據庫

掃一掃