作者:汪明明,王巧玲
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团队
参考资料
Pulsar Reporting技术文档: http://gopulsar.io/html/reporting.html
Pulsar Reporting源码: https://github.com/pulsarIO/pulsar-reporting-ui
Pulsar技术文档: http://gopulsar.io/
Pulsar Pipeline技术文档: http://gopulsar.io/html/pipeline.html
eBay techblog: http://www.ebaytechblog.com/2015/11/05/announcing-pulsar-reporting-near-real-time-metrics-reporting-framework/
Druid:http://druid.io/
Kafka:http://kafka.apache.org/
JSON:http://www.json.org/
Hadoop:http://hadoop.apache.org/
AngularJS:https://angularjs.org/
AngularBootstrap: https://angular-ui.github.io/bootstrap/
Boostrap:http://getbootstrap.com/
jQuery: https://jquery.com/