大数据数仓之OLAP总结(一)

大数据数仓之OLAP总结(一)

1. 背景

  1. 在企业生产中,由于现有商业环境和业务越来越复杂和庞大,没有准确及时的数据支撑,在做企业经营决策和分析时,是无法得到很好的现实反馈,甚至会导致企业经营失败,项目关闭,公司破产。
  2. 现有企业中,各个部门密切合作,运营,销售部门对接客户,技术部门做技术支撑,老板根据业务数据做企业决策。在这个过程中,如何快速,准确获取企业经营相关各类数据就显得非常重要。而随着互联网,特别是移动互联网发展,联网用户越来越多,企业业务一旦涉及到互联网,所需要处理分析的数据剧增,这时候如何从这些数据中快速准确获取所需要的信息,就轮到大数据技术登场。

2. OLAP需求

  1. OLAP,在传统OLAP领域,数据存储和数据分析一般都是由传统数据库承担,如Oracle,WIndows Server等集群,既可以存储数据,也可以做数据分析。注意,OLAP就是在线联机分析,这种场景对于数据存储要求是一次存入,多次查询,和业务数据库要求不太一样。
  2. OLAP的数据查询结果,可以分为2类,一类是直接做展示,一类是用于业务场景的优化策略的,这种场景下数据一般不做可视化。
  3. OLAP可以划分OLAP引擎和OLAP可视化工具,可视化工具也就是所说的BI。注意,OLAP是需要支持交互的,因为查询数据很多时候需要从各个角度对数据做分析提取。
  4. 因为OLAP一般都是用于商业数据分析,也就是常说的BI,商业智能。所以需要数据分析处理快,存储数据多(要从各类数据中提取出有效信息),分析结果准确。
  5. 分析出来的结果有时候还需要做可视化展示,给老板,客户,运营,销售等做数据的动态变化显示。这时候就需要有一个足够强大的框架,可以支持各类报表,多种维度和数据可视化框架。

3. OLAP引擎

  1. OLAP引擎,也就是俗话说的在线联机分析处理引擎。其实划分了2个不同的思路,因为OLAP分析,需要先从数据存储的地方取出数据,再使用各种技术对数据做分析。这时候OLAP就划分了2个流派:
  • 一个流派只做数据分析,
  • 一个流派除了数据分析还把把数据存储功能也加上

有些像是武侠里面的气宗和剑宗之间路线分裂
其实现在presto社区也出现这种分歧,不过不影响使用。

  1. 而为了提升OLAP数据分析处理速度,其实各个公司,优秀程序员,专家从理论到实践都提出了很多种思路来加快数据分析处理速度
  • 预计算流派

例如Kylin就是典型的预计算,我先把可能会用于查询的各类维度数据,先提前计算出来,需要查询时,从这些维度数据中做组合提取即可。这样可以省去数据分析处理的耗时。druid也有提前聚合的机制来提升数据查询速度

  • 内存计算流派

例如将数据计算和中间结果都放在内存,省去中间计算结果落盘磁盘的IO时间消耗,并且采用分布式集群处理,这样也可以有非常强大的即席查询性能。impala和presto就是这样的路线,tez则是在mapreduce基础上参考了DAG对任务做优化,纯内存执行,也有很不错的性能(一般结合hive使用)。snappydata也是一样的思想

  • 介于传统计算和内存计算中间流派(改良派)

例如针对以往数据处理要把中间结果落地磁盘,就出现了改进的框架spark,除了shuffle会把中间结果落地磁盘,其他时候数据都是放在内存,加上对执行流程的优化,生成逻辑计划,物理计划,配合集群分布式计算,也可以得到比传统OLAP更快的效果。

  • 还有数据存储计算二合一流派

clickhouse,纯列式存储,配合强大的OLAP分析处理引擎,比传统OLAP分析方案快100到1000倍。实测同样数据分析,比hive快接近2000倍(个人测试,并不是很严谨,但已经非常直观了)

  • 搜索引擎派

主要就是elasticsearch,利用倒排索引,对文件做扫描。也可以有不错的查询性能,结合DSL语言,可以做中等数据量的OLAP处理任务。但数据量无法和kylin处理数据量对比。kylin结果存储在hbase,理论上是无限的
在这里插入图片描述

4. OLAP BI框架

  1. 当数据分析处理得到结果之后,就需要结果数据的存储和展示
  2. 结果数据如果只是对内部业务使用,则一般放在能够快速访问的数据存储工具如HBase、Mysql集群、MongoDB、Clickhouse等等中,然后对外提供数据查询服务即可。

注意,大数据处理的结果,一般可以分为2大类,聚合结果和明细结果。明细结果往往数据量比较大,聚合结果小很多只不过维度信息会比较多一些,方便从不同维度做数据查询分析。

  1. 结果数据需要做可视化,这时候就需要用到BI框架。从免费到开源都有现成的框架,当然,如果需要做更多自定义功能并且公司有比较完善的前后端开发团队,其实完全可以自行开发一套BI可视化框架。
  2. 注意,在很多BI框架中,常见的功能就是可视化以及ETL,抽取,转换,装载。通俗来说,可以将其理解为通过一系列操作,将需要的信息从存储数据的容器中提取,转换出来。例如数仓中存放了1,2,3,4,分别代表红枣,苹果,李子,葡萄。我将1,2从数仓中抽取出来,再转换为对应的红枣,苹果,最后装载到一个可视化web页面上做展示,装载到一个mysql数据库中存起来以备后用。

4.1 免费BI框架

  1. superset(并不算完善,企业使用往往需要进一步完善)

4.2 商业BI框架

  1. FineBI (国内)
  2. Tableau(国外)
  3. powerBI(微软)

BI框架因为做了可视化,配合提供的ETL功能,结合对接的OLAP引擎,使用ETL功能,其实可已经以做一些常规的数据分析工作。只不过复杂一些的数据分析还是需要使用框架结合SQL甚至代码脚本来处理。但将技术的使用门槛逐步降低,为用户提供便利性本身就是技术发展趋势之一