天天看點

應用Tableau、Vertica的可視化大資料分析架構

大資料分析、企業bi、資料可視化等話題在壇子裡日趨火熱,新的技術,架構也層出不窮,今天借此文跟大家分享一款大資料下的聯機分析(rolap)解決方案,它應用了目前主流的資料可視化工具tableau及列存儲資料庫vertica, 采用了ibm platform analytics資料采集架構和資料etl(extract, transform, load)架構完成對原始資料的采集和處理,提供可用于資料可視化處理的資料倉庫,完成對業務資料的可視化分析。

資料可視化工具-tableau

tableau主要是面向企業資料提供可視化服務, 企業運用tableau授權的資料可視化軟體對資料進行處理和展示。

tableau目前有三大軟體産品:tableau desktop、tableau server以及tableau public。其中tableau desktop是一款pc桌面作業系統上(隻支援windows系統)的資料可視化分析軟體。tableau server則是完全面向企業的商業智能應用平台,基于企業伺服器和web網頁,使用者使用浏覽器進行分析和操作,還可以将資料釋出到tableau server與同僚進行協作,實作了可視化的資料互動。而tableau public是完全免費的,不過使用者隻能将自己運用tableau public制作的可視化作品釋出到網絡上即tableau public社群,而不能儲存在本地,每個tableau public使用者都可以檢視和分享,而且tableau public所能支援的接入資料源的類型和大小都有所限制,是以tableau public更像是tableau desktop的公共網絡版,重在體驗和分享。

圖1 tableau desktop 編輯界面

tableau 與spss、matlab、excel等軟體的差別

spss、matlab、excel是幾個大家比 較熟知的資料分析軟體,也都能進行資料的可視化。但tableau desktop可以說是一款完全的資料可視化軟體,而spss、matlab、excel則各有側重。tableau desktop與之的差別是,spss作為三大統計分析軟體,比較偏重于統計分析,使用者需要一定的數理統計基礎,雖然其也是功能強大且操作簡單友好,但 其輸出的圖表在與辦公軟體的相容性及互動方面有所欠缺,而tableau desktop專注的是結構化資料的快速可視化,使用者可以快速建構美觀有效的資料可視化作品,并建構互動界面(通過釋出到server),但隻是輔助分 析,輔助人們進行視覺化的思考,并沒有像spss那樣強大的統計分析功能。matlab的功能更加強大,但需要較為深厚的程式設計基礎,比較适合科學方面的可 視化項目。excel是最流行最常用的資料分析、資料繪圖軟體,但因其大量糟糕的圖表設計案例進而在可視化領域廣受诟病,而tableau desktop不僅圖表美觀,而且更加智能,可以自動地進行可視化形式的選擇,而且excel作為一款電子表格工具,其不适用大型資料集。

總之,快速、易用、可視化還是tabeleau desktop最大的特點,其能滿足大多數企業、政府機構資料分析和展示的需要以及部分大學、研究機構可視化項目的要求,而且特别适合于企業,畢竟tableau自己的定位也是業務分析和商業智能。

列存儲式的資料庫-vertica

veritica作為列存儲資料庫,提供了比傳統行式存儲資料庫更快的查詢操作。vertica不僅僅按列式存儲資料,還主動地根據列資料的特點和查詢的要求選用最佳的算法對資料進行培續和壓縮,這就大大降低磁盤i/o消耗。

圖2 vertica的列式存儲機制

在vertica中,每列資料式獨立地存儲在連續的硬碟存儲塊中。這與傳統行式資料庫按行的順序來連續存儲資料有根本的不同。 veritica支援延遲物化技術。對于大多數的分析查詢而言,往往隻需要擷取所有列資料的一個子集。veritca列式優化器和執行引擎可以在列式存儲中跳過無關的列,進而節省了大量的i/o資源消耗。

從實際情況上來看,基于行存儲的資料庫更适合oltp(聯機事務處理系統),而基于列存儲的資料庫更适合olap(聯機分析處理系統),比如資料倉庫。除此之外,由于同一列必定是同一類型大小,基于列存儲的資料庫更容易使用高效的存儲方式,與之相比較,基于行存儲的資料庫則隻能采用随機方式處理列值了。

資料采集與etl內建架構

資料采集與資料加工(etl)應用了ibm platform analytics(以下簡稱pa)開放式架構,它內建vertica和tableau,實作了從資料采集,資料分析到最終可視化的完整解決方案,其架構如圖3所示:

圖3 pa的內建架構圖

platform analytics通過analytics data collectors 進行原始資料的采集,并将采集到的資料寫入資料庫,存放在原始資料表中,analytics data collectors被部署在一台主機上,一個analytics data collectors包括不同的資料采集器,我們稱之為dataloader。不同的dataloader負責采集不同類型的資料,這些loader 可以分為events loader,polling loader和database loader。events loader通過對log檔案的解析,polling loader通過與系統api的互動定期采集實時資料,database loader則采集資料庫中已經存儲的資料。這些資料通過通過plc(platform loader controller)對dataloader進行管理,plc作為loader的主程序負責各個loader的定期排程。與此同時,還有一個wsm程序負責ha控制,檢測plc的運作狀況,在發現plc停止工作的情況下,wsm會自動重新開機plc,保證資料的及時采集。

除了單節點的pa node,pa node還采用了failover機制,一個loader可以被部署在多台主機上,一旦某台機子當機,plc會以此被運作在下一個指定的host上。

原始資料寫入到資料庫後,platform analytics server會排程etl對資料進行extract、transform和load,生成最終可用來資料分析的分析資料,這些分析資料存放在以rpt 開頭的表中,不同的etl根據自己特有的業務邏輯對原始資料有價值的資訊進行提取和聚合。

在platform analytics server上,每個etl被定義為不同的task,在pa console上,可以對這些task 的運作周期進行配置,定期排程這些task完成原始資料的roll up、drill down、slice、dice、filter等操作。與此同時,platform server端還提供其他的功能,比如,資料的清洗,資料延遲的檢測,使用者資料的合并以及對資料庫表中重複的資料進行删除操作。

最終的資料通過可視化工具tableau server展現,終端使用者可以通過浏覽器通路workbook,對workbook進行條件查詢和資料篩選來檢視符合條件的業務資料,可以通過定義email notification定時收到系統事件的回報。

platform 通過以上的過程,完成資料的采集,加工及可視化展現,最終使用者可以通過web 浏覽器友善浏覽workbook,也可以通過與lsf的其他第三方産品(比如pac)內建,友善使用者定制和浏覽workbook。

圖4 workbook 用例展示

結束語

pa目前利用自身提供的資料采集和etl處理,以及與tableau和vertica的內建能夠快速相應業務變化的需求,并滿足目前的系統性能需求。下一步需要考慮的方向是:在日益增長的資料需求下,如何與其他開源架構的內建,進一步提高資料分析的效率,比如利用elk來替代現有元件分析系統日志以及采用spark架構并行處理etl, 來降低資料周轉時間,提高系統的運作效率, 這些都是pa下一步的研究方向。

本文轉自d1net(轉載)