大数据OLAP引擎

一、OLAP介绍

1. OLAP简介

OLAP(Online AnalyticalProcessing)是一种数据处理技术,专门设计用于支持复杂的分析操作,侧重对决策人员和高层管理人员的决策支持。数据仓库对外数据能力的一种重要的输出方式。

  1. OLAP遵循以下准则

    1. OLAP模型必须提供多维概念视图
    2. 透明性准则
    3. 存取能力准则
    4. 稳定的报表能力
    5. 客户/服务器体系结构
    6. 维的等同性准则
    7. 动态的稀疏矩阵处理准则
    8. 多用户支持能力准则
    9. 非受限的跨维操作
    10. 直观的数据操纵
    11. 灵活的报表生成
    12. 不受限的维与聚集层次
  2. OLAP场景的关键特征

    1. 大多数是读请求
    2. 数据总是以相当大的批(> 1000 rows)进行写入
    3. 不修改已添加的数据
    4. 每次查询都从数据库中读取大量的行,但是同时又仅需要少量的列
    5. 宽表,即每个表包含着大量的列
    6. 较少的查询(通常每台服务器每秒数百个查询或更少)
    7. 对于简单查询,允许延迟大约50毫秒
    8. 列中的数据相对较小:数字和短字符串(例如,每个URL 60个字节)
    9. 处理单个查询时需要高吞吐量(每个服务器每秒高达数十亿行)
    10. 事务不是必须的
    11. 对数据一致性要求低
    12. 每一个查询除了一个大表外都很小
    13. 查询结果明显小于源数据,换句话说,数据被过滤或聚合后能够被盛放在单台服务器的内存中

2. OLAP与OLTP

  • OLTP系统强调数据库内存效率,强调内存各种指标的命令率,强调绑定变量,强调并发操作,强调事务性。典型作为后端服务的数据来源。

  • OLAP系统则强调数据分析,强调SQL执行时长,强调磁盘I/O,强调分区。典型作为数据报表、数据产品的数据来源。

  • OLTP OLAP
    使用场景 在线业务服务 数据分析,数据挖掘
    DB设计 面向应用 面向主题
    数据存储 最新的数据 历史的,多数据源的
    DB大小 MB-GB GB-EB
    时间要求 实时响应 不严格要求
    数据模型 关系模型(3范式) 维度模型
    主要应用 数据库 数据仓库
    代表 MySQL SQL on Hadoop、Kylin

3. OLAP常规操作

  1. 上卷(Roll Up)/聚合:选定某些维度,根据这些维度来聚合事实,如果用SQL来表达就是select dim_a, aggs_func(fact_b) from fact_table group by dim_a.

  2. 下钻(Drill Down):上卷和下钻是相反的操作。它是选定某些维度(维度之间有层级关系,典型如年、月、日),将这些维度拆解出小的维度(如年拆解为月,省份拆解为城市),之后聚合事实。

  3. 切片(Slicing、Dicing):选定某些维度,并根据特定值过滤这些维度的值,将原来的大Cube切成小cube。如dim_a in (‘CN’, ‘USA’)

  4. 旋转(Pivot/Rotate):维度位置的互换。

大数据OLAP引擎_第1张图片

二、OLAP引擎分类

目前市面上主流的开源OLAP引擎包含不限于:Hive、Spark SQL、Presto、Kylin、Impala、Druid、Clickhouse、Doris等,可以说目前没有一个引擎能在数据量,灵活程度和性能上做到完美,用户需要根据自己的需求进行选型。

主流的 OLAP 可以分为3类:多维 OLAP ( Multi-dimensional OLAP )、关系型 OLAP ( Relational OLAP ) 和混合 OLAP ( Hybrid OLAP ) 三大类。

1. 多维OLAP

MOLAP的典型代表是:Druid、Kylin,MOLAP一般会根据用户定义的数据维度、度量(也可以叫指标)在数据写入时生成预聚合数据;Query查询到来时,实际上查询的是预聚合的数据而不是原始明细数据。

优点:数据预处理,将原始数据按照指定的计算规则预先做聚合计算,这样避免了查询过程中出现大量的即使计算,提升了查询性能。

缺点:限制后期数据查询的灵活性

2. 关系OALP

ROLAP的典型代表是:Presto,Impala,GreenPlum,Clickhouse,Elasticsearch,Hive,Spark SQL,Flink SQL,Doris。数据写入时,ROLAP并未使用像MOLAP那样的预聚合技术;ROLAP收到Query请求时,会先解析Query,生成执行计划,扫描数据,执行关系型算子,在原始数据上做过滤(Where)、聚合(Sum, Avg, Count)、关联(Join),分组(Group By)、排序(Order By)等,最后将结算结果返回给用户,整个过程都是即时计算,没有预先聚合好的数据可供优化查询速度,拼的都是资源和算力的大小。

优缺点,与MOLAP恰好相反

3. 混合OLAP

混合 OLAP,是 MOLAP 和 ROLAP 的一种融合。当查询聚合性数据的时候,使用MOLAP 技术;当查询明细数据时,使用 ROLAP 技术。在给定使用场景的前提下,以达到查询性能的最优化。

三、各引擎对比

1. 简单查询对比

简单查询指的是点查、简单聚合查询或者数据查询能够命中索引或物化视图。这样的查询经常出现在【数据产品服务】应用中,如阿里的生意参谋、腾讯的广点通等。这种查询通常有几个特点:对响应时间要求高;查询模型相对固定(可以通过数仓建模进行部分预计算);并发量大。从下图可以看出,这些场景最合适的是,Elasticsearch、Doris、Druid、Kylin这些。
大数据OLAP引擎_第2张图片

2. 复杂查询对比

复杂查询指的是复杂聚合查询、大批量数据SCAN、复杂的查询(如JOIN)。在ad-hoc场景中,经常会有这样的查询,往往用户不能预先知道要查询什么,更多的是探索式的。像ES、Druid、Kylin,几乎是不支持这种查询。
大数据OLAP引擎_第3张图片

3. 执行模型对比

大数据OLAP引擎_第4张图片

  • Scatter-Gather执行模型:相当于MapReduce中的一趟Map和Reduce,没有多轮的迭代,而且中间计算结果往往存储在内存中,通过网络直接交换。Elasticsearch、Druid、Kylin都是此模型。

  • MapReduce:Hive是此模型

  • MPP:MPP学名是大规模并行计算,其实很难给它一个准确的定义。如果说的宽泛一点,Presto、Impala、Doris、Clickhouse、Spark SQL、Flink SQL这些都算。

四、各引擎介绍

4. Hive

大数据OLAP引擎_第5张图片

Hive是一个分布式SQL on Hadoop方案,底层依赖MapReduce计算模型执行分布式计算。Hive擅长执行长时间运行的离线批处理,数据量越大,优势越明显。而且Hive需要的几乎仅仅是硬盘资源,节省成本,稳定性高,仍是OLAP引擎的主流选择之一。不过目前有被SparkSQL取代之势。

MapReduce计算模型执行分布式计算。Hive擅长执行长时间运行的离线批处理,数据量越大,优势越明显。而且Hive需要的几乎仅仅是硬盘资源,节省成本,稳定性高,仍是OLAP引擎的主流选择之一。不过目前有被SparkSQL取代之势。

  1. 未完待续…

你可能感兴趣的:(BigData笔记,大数据,数据仓库)