分析平台架构

数据仓库简介

数据仓库分为三个阶段:首先就是将海量的数据通过清洗、抽取,生成元数据进行存储;然后对元数据进行处理,根据我们的业务需要,生成想要的低级或者高级属性,通过检索系统对外提供查询(实时或者离线);最后进行数据可视化;

这是我所理解的数据仓库的三块内容,基础数据建设、检索端、数据可视化,相对独立,不过一些业务逻辑可能会同时存在于基础数据建设和检索端里面;

比如一个新的业务来了,首先是需求分析可行性和投入产出比;然后看如何去生成我们想要的数据,这些数据可能是来自之前的基础数据,也有可能需要重新统计生成新的数据;生成好数据之后,再根据需求看做实时还是离线,是用文件存储、还是mysql或redis;前端再根据具体业务需求,选择合适的数据展现方式;

数据可视化、检索、数据统计清洗、其他(如生成报表等)

拿查词的pv来做个例子:

1. 首先我们要去选择拿哪份日志做处理,日志拿出来之后,要做反作弊过滤,然后做数据清洗,生成我们想要的字段,如:地域、query、PV,这样会生成一份3个字段的文件,每天、每小时产出一份;

2. 检索端:

2.1 实时查询:

这份文件每天是很大很大的,因为是亿级别的检索量,所以需要做一个KV系统来存储和支持查询,单除了需要支持kv查询,还需要支持分时间段分地域的查询,所以又不是完全的kv查询,而且要保证性能,还需要是分布式的;

2.2 离线查询:

两种查询方式,一种是利用实时查询,另外一种是利用原始数据

2.2.1 方案1:

简单的生产者消费者模式,用户提一个任务,相关的数据信息插入到数据库的任务队列中;线下一个系统,每隔一段时间去查询数据库,更新已经完成的任务列表,同时将没有完成的任务拿下来,和之前没有完成的任务列表合并,开新进程,去做任务,每完成一个任务,更新线下的任务列表;

2.2.2 方案2:

每个任务都启动一个hadoop统计任务,根据需求和对应的日志进行提取和合并,这种方案一般在数据量比较大的情况下会使用;

3. 数据可视化

以前基本上是自己写的,现在用echarts,后端自己写ui去查数据库或者查redis

4. 其他

包括一些生成报表邮件的系统,基本上都在数据统计里面,会生成一些自动发邮件的任务

总结

分析平台我简单的认为就是1.提供最简单的核心数据供分析人员使用,2.提供稍微高级的辅助功能

因为数据分析这个事情的发散性很高,相关的同学也具有一定的编程功底,所以完全自动化的产品我觉得没必要;同时市场上也有挺多自动化的工具,虽然我反对闭门造车,但是具体的数据分析产品我认为需要根据具体的业务运用去做,臃肿或者时效性比较慢的产品,生存下来还是挺难的;

发表评论

电子邮件地址不会被公开。 必填项已用*标注