大数据一周回顾 | 青训营笔记

77 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第1天,回顾一下这几天学到的内容。

SQL查询优化器浅析

  1. 大数据体系和SQL
  • SQL 需要依次经过 Parser, Analyzer, OptimizerExecutor 的处理.
  • 查询优化器是数据库的大脑,在大数据场景下对查询性能非常重要.
  • 查询优化器需要感知数据分布,充分利用数据的亲和性·
  • 查询优化器按照最小化网络数据传输的目标把逻辑计划拆分成多个物理计划片段
  1. 查询优化器分类 分类方法:
  • 由上往下或由下往上

  • RBO(关系代数) & CBO(优化规则) RBO&和CBO的特点

  • 主流RBO实现一般都有几百条基于经验归纳得到的优化规则; RBO实现简单,优化速度快; RBO不保证得到最优的执行计划。

  • CBO使用代价模型和统计信息估算执行计划的代价; CBO使用贪心或者动态规划算法寻找最优执行计划; 大数据场景下CBO对查询性能非常重要

  1. 社区开源实践
  • 主流的查询优化器都包含RBO和CBO
  • Apache Calcite 是大数据领域很流行的查询优化器
  • Apache Calcite RBO 定义了许多优化规则,使用pattern 匹配子树,执行等价变换
  • Apache Calcite CBO 基于 Volcano/Cascade 框架
  • Volcano/Cascade的精髓:Memo、动态规划、剪枝

流/批/OLAP 一体的 Flink 引擎

  1. Apache Flink: 具有流批一体的特点
  2. 流批一体的 Apache Flink 架构: Shuffle就是用来连接上下游数据交互的过程。
  3. Apache Flink 的 OLAP 场景面临的问题及优化思路

流式计算中的 Window 计算

  1. 概述流式计算跟批计算,以及实时数仓和离线数仓的区别;引出流式计算中的window计算定义以及挑战
  2. 介绍实时计算中的Watermark概念,以及如何产生、传递,还有一些典型的生产实践中遇到的问题
  3. 介绍三种最基本的window类型,以及他们的实现原理;同时会结合业务场景介绍一些高级优化的功能和原理
  4. 两个真实业务场景的需求,抖音日活和计算大数据资源使用