1. 程式人生 > >Ebay開源基於大資料的視覺化框架:Pulsar Reporting

Ebay開源基於大資料的視覺化框架:Pulsar Reporting

作者:汪明明,王巧玲

ebay又新添了一個開源專案PulsarReporting – 基於大資料的視覺化框架

Pulsar作為一個實時和近實時大資料分析處理系統,包含了Pulsar Pipeline和Pulsar Reporting. 在今年三月, eBay Pulsar團隊開源了實時大資料分析平臺– Pulsar Pipeline,作為一個實時大資料分析平臺,PulsarPipeline可以對海量資料進行實時收集,處理和分析,從而使eBay海量的資料實時分析成為可能;然而Pulsar又面臨一個新的挑戰,就是大資料的實時視覺化。使用者的需求就是Pulsar團隊的動力,經過半年多的努力,eBay Pulsar團隊研發了一個新的基於大資料的視覺化框架– Pulsar Reporting


Pulsar Reporting

Pulsar Reporting 是一個基於大資料的可擴充套件和可定製的視覺化平臺, 使用者通過Pulsar 可以提供更為清晰直觀的資料洞察力,將錯綜複雜的資料和資料之間的關係,通過圖形的形式呈現出來,從而給使用者帶來實時的洞察力和有效的決策力。同時Pulsar Reporting 也提供了非常友好的資料互動體驗以及從巨集觀到微觀的靈活切換,從而為使用者對資料進行實時多角度分析和視覺化成為可能。

主要特點

Ÿ   實時資料視覺化 – 基於實時資料生成報表,並支援定期重新整理

Ÿ   視覺化報表編輯器 – 通過視覺化介面生成自定義報表,且無需任何程式設計

Ÿ   豐富的圖形庫 – 可以建立各種圖形報表:線圖,餅圖,柱狀圖,趨勢圖等

Ÿ   Reporting API支援– 支援標準化SQL指令碼和結構化JSON格式

Ÿ   動態資料來源管理 – 支援‘熱插拔’增加和刪除資料來源

Ÿ   基於Angular JS的UI框架 – 易於增加和擴充套件現有的圖形庫

Ÿ   基於BootStrap的響應式設計 – 可以支援不同的終端裝置,如手機,平板等

使用場景

Pulsar Reporting框架作為Pulsar生態系統的一個部分,使得Pulsar可以提供一個端到端的實時大資料分析解決方案,包括從後端的資料收集,資料流處理分析到前端的資料實時展現。Pulsar Pipeline具有每秒百萬級流量的處理能力,而資料視覺化則是最好的途徑去直觀且有效得展現大資料的魅力。然而基於大資料進行實時分析並進一步為決策者提供有用的資料報表並非一件易事,Puslar Reporting正好解決這方面的困擾;它允許使用者通過Pulsar Reporting簡單便捷的介面來制定他們所需的報表而無需考慮後端複雜的資料處理和前段的介面展現的問題;另一方面,Reporting強大的API,允許開發人員自由得擴充套件現有的資料報表,從而定製自己特色的報表。

體系架構

在Pulsar Reporting,來自Pulsar Pipeline的原資料和session資料,通過Pulsar Kafka通道中指定的topics流入到Kafka叢集,然後再通過Kafka topics分別注入到Druid的原資料和Session資料表中,而資料匯入Druid之前,資料預先經過秒級粒度的聚合,從而保證在視覺化階段能達到實時秒級的響應。而且在Pulsar Reporting中,我們也支援Reporting API – 一組抽象的資料分析和查詢介面,使用者可以通過呼叫相應的介面來獲取處理過的原資料和Session資料,並生成不同維度的報表。圖中紅色部分就是Pulsar Reporting的主要功能模組。


案例分析

Ÿ   作為實時大資料處理視覺化平臺,Pulsar Reporting提供了豐富的API來支援對網站效能的分析需求

a)        網站活躍使用者分析:現在以網站活躍使用者分析為例,通過基於SQL介面,分析指定時間內基於流量來源(Traffic Source)維度的網站活躍使用者指標;包括基於指定流量來源(Traffic Source)維度的新使用者比率(New Session Rate), 使用者瀏覽的總頁面數(Total Pages),總活躍使用者數(Total Sessions)以及總活躍使用者停留時間(Total Sesssion Duration). 以下是實現細節,僅供參考。

Endpoint: http://<API_Server>/prapi/v2/sql

Method: POST

Body: {"sql" : "SELECT (count(session) - sum(retvisitor)) * 1.0 / count(session) newSessionRate, sum(sessionDuration) * 1000 totalSessionDurations, count(session) sessions, sum(sessionDuration) totalSessions, sum(totalpagect) totalPages, country, trafficSource FROM pulsar_session WHERE site=0 and country='usa' GROUP BY country, trafficSource ORDER BY sum(totalpagect) ASC limit 20",

"intervals": "2015-11-11 03:00:32/2015-11-18 01:00:32",

"granularity": "day"}

返回結果:

[

    {

                   "timestamp": "2015-11-11 03:00:32",

                   "result":

                   {

                            "sessions": 28465,

                            "trafficsource": "Social Media",

                            "newsessionrate": 0.7841,

                            "totalpages": 70911,

                            "totalsessions": 419763,

                            "totalsessiondurations": 419747000,

                            "country": "usa"

                   }

         },

         {

                   "timestamp": "2015-11-11 03:00:32",

                   "result":

                   {

                            "sessions": 40,

                            "trafficsource": "Paid Campaign",

                            "newsessionrate": 0.9840,

                            "totalpages": 51,

                            "totalsessions": 2631,

                            "totalsessiondurations": 226000,

                            "country": "usa"

                   }

         },

……

]

a)          網站瀏覽量分析:作為商業網站,網站瀏覽量是一個關鍵的指標來衡量一個網站的活躍程度,接下來介紹如何通過結構化的Json介面來獲取基於流量來源(Traffic Source)分類的網站瀏覽量的分析。以下是實現細節,僅供參考。

Endpoint: http://<API_Server>/prapi/v2/realtime

Method: POST

Body: {"metrics" : [ "pageviews" ], "dimensions" : [ "trafficsource" ], "filter" : "site=0" }

返回結果:

[

         {

                   "timestamp": "2015-11-17 19:38:20",

                   "result":

                   {

                            "pageviews": 272393,

                            "totaldwell": 670162705,

                            "trafficsource": "Direct"

                   }

         },

         {

                   "timestamp": "2015-11-17 19:38:20",

                   "result":

                   {

                            "pageviews": 186139,

                            "totaldwell": 781712501,

                            "trafficsource": "Referral"

                   }

         },

……

]

Ÿ   Pulsar Reporting也提供了視覺化編輯工具來幫助使用者快速生成基於特定需求的分析報表集。使用者可以通過Reports Creator來訂製自己的報表集;在可訂製報表頁面,使用者首先建立自己的報表集:


在建立的報表集內,根據業務需求制定報表:


最後通過調整報表的佈局,就能看到下面類似的報表集了。


後續計劃

繼往開來,Pulsarteam將繼續完善Pulsar Reporting,以下是我們未完成的功能:

1.  Pathing圖和漏斗圖

2.  報表輸出管理

3.  更多資料來源支援

同時我們也期待有更多的專案能採用我們Pulsar Reporting去解決大資料的視覺化問題,並熱切期待您的貢獻。瞭解更多Pulsar Reporting,請訪問http://gopulsar.io/html/reporting.html

關於作者

Ÿ   汪明明,PulsarReporting Commiter和架構師

Ÿ   王巧玲,PulsarReporting 產品經理

Pulsar團隊


參考資料

Ÿ  Boostraphttp://getbootstrap.com/