大数据
大数据体系
基础设施
存储系统
资源调度
分析引擎:
批式分析 Spark Hive MR 实时分析 Flink 交互分析 presto、click house 、doris
权限管控
数据开发
业务应用
1.1 大数据体系
SQL非常流行,非常简单,很多都支持SQL接口
sql经过parser处理成为ast,再经过analyzer成为logical plan也就是逻辑计划,再经过optimizer(优化器处理)出来physical plan(物理执行计划)最后交给executor去做。
1.3 sql处理流程-parser
从string到ast
词法分析 : 拆分字符串,得到关键词、数值常量、字符串常量、运算符号等 token
语法分析: 将 token 组成 AST node,最终得到一个 AST实现 : 递归下降
1.3 sql处理流程-analyzer和logical plan
analyzer:检查并绑定database,table,column等元信息
sql的合法性检查,比如min/max/avg的输入是数值
ast转化为logical plan
logical plan:逻辑地描述sql对应的分步骤计算操作
计算操作 算子
1.3 sql处理流程-查询优化
sql是一种声明式语言,用户只描述做什么,没有告诉数据库怎么做
目标:找到一个正确且执行代价最小的物理执行计划
查询优化器是数据库的大脑,最复杂的模块,很多相关问题都是np的
一半sql越复杂,join的表越多,数据量越大,查询优化的意义就越大,因为不同执行方式的性能差别可能有成百上千倍
1.3 sql处理流程-Physical Plan和Executor
plan fragment:执行计划子树
目标:最小化网络数据传输
利用上数据的物理分布(数据亲和性)
增加shuffle算子
executor:
单机并行:cache,pipeline,simd
多机并行:一个fragment对应多个案例
小结
One SOL rules big data all
SQL 需要依次经过 Parser,Analyzer,Optimizer 和 Executor 的处理
查询优化器是数据库的大脑,在大数据场景下对查询性能至关重要
查询优化器需要感知数据分布,充分利用数据的亲和性
查询优化器按照最小化网络数据传输的目标把逻辑计划拆分成多个物理计划片段