这是我参与「第四届青训营 」笔记创作活动的的第8天
-
概述
- 大数据:大数据其实是在2000年后,因为信息化的快速发展。信息交换、信息存储、信息处理三个方面能力的大幅增长而产生的数据。
- Hadoop:基于廉价机器的存算分离的大规模分布式处理系统
- OLAP VS MapReduce
- MapReduce代表了抽象的物理执行模型,使用门槛较高
- 与Mapreduce Job相比,OLAP引擎常通过SQL的形式,为数据分析、数据开发人员提供统一的逻辑描述语言,实际的物理执行由具体的引擎进行转换和优化。
- Presto设计思想
- 多租户任务的管理与调度
- 多数据源联邦查询
- 支持内存化计算
- Pipeline式数据处理
-
Presto 基础原理与概念
- Query相关
- Query:基于SQL parser后获得的执行计划
- Stage:根据是否需要shuffle将query拆分成不同的subplan,每一个subplan便是一个stage
- Fragment:基本等价于Stage,属于在不同阶段的称呼
- Task:单个Worker节点上的最小资源管理单元:在一个节点上,一个Stage只有一个Task,一个Query可能有多个Task
- 通信机制
- Presto Client/JDBC Client与Server间通信 Http
- Coordinator与Vorker间的通信 Thrift Http
- Vorker与Vorker间的通信 Thrift/Htp
- Query相关
-
Presto重要机制
-
多租户资源管理 - Resource Group
-
类似Yarn多级队列的资源管理方式
-
基于CPU、MEMORY、SQL执行数进行资源使用量限制
-
优点:轻量的Query级别的多级队列资源管理模式
缺点:存在一定滞后性,只会对Group中正在运行的SQL进行判断
-
-
多租户下的任务调度
- Stage调度
- Task调度
- Split调度
-
内存计算
- Pipeline化的数据处理
- Pipeline的引入更好的实现算子间的并行
- 语义上保证了每个Task内的数据流式处理
- Back Pressure Mechanism
- 控制split生成流程
- 控制operator的执行
- Pipeline化的数据处理
-
-
性能优化实战
-
常用性能分析工具
-
Grafana:埋点、系统指标如CPU、内存、网络等的可视化界面,时序化的数据展示
-
Java相关指令
Jstack 查看Java线程栈信息,排查是否有死锁或者一场线程
-
Flame Figure/火焰图
用于分析热点代码占用大量gpu,从而导致服务器性能下降的情况
-
-