本文介紹了什么
´ 電信級大數據分析典型需求
´ Vertica數據庫特點及與其他數據庫對比
´ Vertica核心技術介紹
´ 基於Vertica的典型分系統架構簡介
電信級大數據分析典型需求
´ 海量數據存儲:年分析數據量達到PB級
-
Counter數據:各網元收集的統計數據,可用於監控和測量網絡性能
-
MR詳單:即手機向網絡上報的無線性能測量報告,反映了用戶實時無線環境真實情況
-
CDR數據:呼叫詳單記錄,由各個接口中與該事件相關的信令綜合而成,是對用戶在移動網絡中的通話、短信、數據業務的事件記錄
-
IUPS數據:對Iu-PS接口上采集的PS域信令面和用戶面數據解析而成的話單數據
-
Gn數據:對Gn口原始碼流解析得到的數據,主要反映用戶使用各類數據業務的詳細情況
-
工參、投訴、設備告警、路測等其他數據
´ 高速數據匯總及分析:保證按天、按月滾動的分析模塊能夠及時完成
´ 少量的實時查詢需求:從海量詳單數據中迅速定位單個用戶,例如用戶軌跡查詢
´ 結論:需要一種兼具數據倉庫功能、數據分析功能的數據庫;對信息檢索速度要達到秒級;對超大數據集的匯總、關聯操作要下降到分鍾級(傳統數據庫如Oracle往往需要數小時)
Vertica特性
´ 大規模並行處理(MPP):基於廉價的X86服務器集群,獲得高性能的分析處理能力。
´ 列式存儲:為大多數分析型數據庫所采用,區別於傳統的交易型數據庫(如Oracle),適用於按列高速查詢,性能提升在50-1000倍。
´ 標准化的接口:基於SQL語句和傳統的JDBC和ODBC等程序接口,利於現有數據分析系統移植。
´ 靈活的部署方式:既可部署於傳統的本地硬盤存儲,也可部署在HDFS存儲系統上,方便與Hadoop系統集成。
´ 查詢優化器:根據用戶查詢特性優化存儲結構和查詢算法,進一步提升查詢性能(關聯、分組等查詢性能可再提高5-10倍)。
´ 豐富的管理和監控工具:為不同用戶(數據分析、實時查詢、數據導入等)分配各自系統資源(CPU、內存等),擁有圖形化的網頁監控界面。
Vertica與傳統交易型數據庫對比
傳統數據庫以交易型數據庫為主,比如Oracle、MySQL,這些數據庫的物理存儲格式都是行存儲,適合數據頻繁的增刪改操作(如股票交易系統),但對於統計分析類的查詢,行存儲其實效率很低。而以Vertica為代表的分析型數據庫,采用了MPP列式存儲方式,注重字段統計、匯總等分析操作,而弱化了記錄的插入、刪除操作。
下面對比兩類數據庫在執行分析任務時的差異。
Vertica與NoSQL數據庫對比
隨着“大數據”的興起,互聯網企業紛紛推出了所謂NoSQL的新型數據庫。這類數據庫最大的特點是不再使用SQL語句進行數據查詢,而采用Map/Reduce等技術處理數據,適合處理互聯網產生的海量 非結構化數據(不再以“表”來組織數據)。與之相比,Vertica數據庫更傾向於使用傳統的SQL語言,處理結構化的數據,最近幾個版本的Vertica也引入了Hadoop接口,使之具備了一定的非結構化數據處理能力。
下面對比Vertica與Hbase,一種典型的NoSQL數據庫。
Vertica與Impala對比
Impala是一款SQL on Hadoop開源數據庫,最顯著的特點是其結合了HDFS分布式存儲系統和SQL查詢語句,此外它采用“列式存儲”的設計,這使其成為了一款高速的分析型數據庫。盡管如此,Vertica與之相比,依然具有查詢效率更高、運行更穩定、資源管理更方便等優勢。
Vertica、Impala測試對比
針對日常分析常用的三類SQL查詢:記錄統計、關聯、分組匯總,我們使用相同硬件和數據源做了如下測試,可以看出Vertica具有明顯速度優勢。
測試環境:
5台HP-C7000刀片服務器組成的Vertica集群
1台主節點 + 5台從節點,HP-C7000刀片服務器組成的Impala集群
Vertica核心技術——大規模並行計算(MPP)
´ Vertica采用無資源共享的大規模並行處理架構,節點間通過TCP/IP網絡進行通信,每個節點采用本地磁盤來存儲數據。
´ Vertica根據數據表內容自動的在集群之間划分數據,查詢規划器決定如何應對查詢語句,並將相應的工作派發到不同的合作結點上,然后再收集每個結點的部分結果,最后將部分結果整理成最后的查詢結果,返回給查詢用戶。
´ 與Hadoop等集群采用的主-從節點規划不同,Vertica所有節點完全對等,數據加載可以並發在所有節點同時執行,數據的查詢也可以在任意節點發起。
´ Vertica支持在線集群擴展,並在完成節點添加/刪除后重新分配數據。
Vertica核心技術——Projection與列式存儲
對於典型的分析查詢而言,往往不需要讀取整張表的沒一行數據,而只需要獲取所有列數據的一個子集。列式存儲正是基於這一原則,在執行分析查詢時跳過無關的列,從而節省了大量的I/O資源消耗。
在Vertica中,“表”僅僅表示邏輯上的二維數據結構,真正存儲的數據結構是將表拆分得到的列的組合,稱為Projection。
Projection存儲的不僅僅是數據。為了優化查詢性能,Vertica系統針對每列數據的特點,會采用不同的編碼和壓縮算法、不同的排序方式及系統冗余設置等規則組織projection,再分散存儲到數據庫集群的各個節點上。
這些Projection的建立規則可以通過查詢優化器(下面會介紹)自動生成,也可以由有經驗的數據庫管理員手動設置。通過這一系列的壓縮及優化存儲,可以進一步降低系統I/O消耗,提高查詢效率。
Vertica核心技術——K-Safety容錯機制
Vertica通過維護數據的多個冗余備份來實現高可用性。Vertica保證冗余數據被散列存儲在不同的結點上,Vertica將其稱之為K級系數安全性(K-safety),K指的是Vertica能夠容忍的可能發生故障數據結點的個數。系統會按K的取值在各節點上設置數據備份。
上圖是一個典型的5節點集群,設置K=1,其中節點1存儲有節點2的備份projection,節點2存儲有節點3的備份projection,以此類推。在此設置下,任一節點宕機都不會影響數據庫的正常運轉。
通過合理的集群配置,可以在同時宕機數超過K值的情況下依然正常運轉,理論上最大宕機節點數可以達到集群節點總數的一半。例如上圖中,當節點2已經宕機,此時若節點4或5再發生宕機,依然不會發生數據丟失;但此時若節點1或3發生故障,數據丟失將不可避免。
Vertica核心技術——查詢優化器
查詢優化器通過分析數據庫的負載與常用數據分析的計算特性,調整庫內數據的存儲、壓縮、分布方式,從而根據用戶需求優化數據庫的數據裝載或查詢性能。
優化流程
-
首先根據數據平台常用查詢,結合日常數據庫監控數據,分析優化需求。
-
將優化需求(如樣例查詢及優化參數)提供給優化器,生成數據庫優化腳本。
-
檢查、部署優化腳本,測試優化效果。
優化關鍵點:
´ 存儲速度優先VS查詢速度優先
´ Projection建立數量和建立方式
´ 優化流程是一個循環、往復、不斷提升的過程
Vertica在分析系統中的定位
´ Vertica數據庫並不是用來取代傳統的數據庫(Oracle、MySQL等)或各類基於Hadoop的數據庫系統的,而更多地是互補與整合的關系。
´ 在一個完善的分析系統中,傳統的數據庫往往是那些規范化的數據來源,比如電信運營商的用戶帳單、工參信息等,又或者是互聯網行業的用戶資料、交易信息等。
´ Hadoop系統則是那些非結構化的數據來源,如電信運營商各網元、接口采集的數據,又或者是互聯網的各類XML、JSON文件。此外,Hadoop的Map/Reduce機制還非常適於各類海量數據的規整和縮減。
´ 在此基礎上,Vertica分析型數據庫利用其快速、靈活、易用的特性,完成各類數據的關聯、匯總等分析工作。
´ 在頂層采用SAS、R等擁有成熟的回歸、聚合模型工具做深度數據挖掘和數據可視化。
Vertica應用案例1:某電信運營商數據分析系統
電信運營商大數據分析的典型應用包括:
-
終端用戶行為分析
-
詳單分析
-
網絡優化/性能分析
-
信令分析
-
用戶粘性和ARPU分析
……
Vertica應用案例2:Twitter用戶分析系統
Twitter大數據分析典型應用:
-
客戶行為分析
-
交易分析
-
社交關系分析
-
個人需求識別和信息推送
……
What is More
´ 一個優秀的數據分析平台起始於高質量的數據歸整與數據引入。
´ 將Vertica與SAS、IBM SPSS Modeler等分析工具對接,利用這些工具搭建模型,實現更加靈活、深入的數據分析。
´ 利用Vertica提供的C++、Java和R語言接口,編寫用戶自定義擴展程序(User-DefinedExtensions, Udx),可以滿足那些使用SQL無法實現或對性能要求更高的分析需求。
´ 數據平台的搭建,僅僅是大數據分析的第一步,如何從這海量數據中發掘出真正的金礦,有賴我們打破固有思路,積極學習和探索,共同迎接這個大數據的時代!