这是我参与「第四届青训营 」笔记创作活动的第7天
1. 大数据与OLAP系统的演进
1.1 什么是大数据
大数据 = 大规模的数据量? 关于大数据这里我们参考马丁·希尔伯特的总结:大数据基实是在2000年后,因为信息化的快速发展。信息交换、信息存储、信息处理三个方面能力的大幅增长而产生的数据。
1.2 OLAP(OnLine Analytical Processing)
对业务数据执行多维分析,并提供复杂计算,趋势分析和复杂 数据建模的能力。是许多商务智能(BI)应用程序背后的技术。
1.3 OLAP VS MapReduce
- MapReduce代表了抽象的物理执行模型,使用门槛较高
- 与Mapreduce Job相比,OLAP引擎常通过SQL的形式,为数据分析、数据开发人员提供统一的逻辑描述语言,实际的物理执行由具体的引擎进行转换和优化。
1.4 OLAP核心概念:
- 维度
- 度量
1.5 常见的OLAP引擎:
- 预计算引擎:Kylin, Druid
- 批式处理引擎:Hive, Spark
- 流式处理引擎:Flink
- 交互式处理引擎:Presto, Clickhouse, Doris
2.Presto设计思想
Presto是Facebook开源的查询分析引擎,在国内京东用的比较成熟。Presto数据处理能力到达PB级别,支持查询数据源有Hive、Kafka、Cassandra、Redis、Mongodb、SQL server等,在工作应用当中,Presto的查询性能比Hive要高40%以上。
3. Presto基础原理
3.1 基础概念
3.2 特点
-
多租户任务的管理与调度:它支持并发执行数百个内存、I/O 以及 CPU 密集型的负载查询,并支持集群规模扩展到上千个节点;
-
多数据源联邦查询:它可以由开发者利用开放接口自定义开发针对不同数据源的连接器(Connector),从而支持跨多种不同数据源的联邦数据查询;
-
支持内存化计算:把计算嵌入到内存里面去,内存变成存储+计算的利器,在存储/读取数据的同时完成运算,减少了计算过程中的数据存取的耗费。把计算都转化为带权重加和计算,把权重存在内存单元中,让内存单元具备计算能力。
-
pipeline式数据处理:将许多算法模型串联起来,然后依次对数据进行处理,得到最终的分类结果。
4. Presto重要机制
4.1 多租户资源管理
-
Resource Group
- 类似Yarn 多级队列的资源管理方式
- 基于CPU、MEMORY、SQL 执行数进行资源使用量限制
-
优点:
- 轻量的Query级别的多级队列资源管理模式
-
缺点
- 存在一定滞后性,只会对Group中正在运行的 SQL进行判断
4.2 多租户下的任务调度
- Stage调度策略
- Task的节点选择策略
- Split调度策略
4.3 内存计算
-
Pipeline(按LocalExchange拆分) :
- Pipeline的引入更好的实现算子间的并行
- 语义上保证了每个Task内的数据流式处
-
Back Pressure Mechanism
- 控制split生成流程
- 控制operator的执行
总结
- 大数据与 OLAP 的演进之路,简单了解了 Presto 的设计理念;
- 了解了 Presto 的基础概念与原理,加深对Presto基础概念的理解;
- 深入剖析 Presto 的特色和重要机制;
- 了解了 Presto 常用的优化工具,以及 Presto 在字节内部的相关优化;