这是我参与「第四届青训营 」笔记创作活动的的第1天
1.大数据体系
1.基础设施,主要是ESC,存储,VPC,主要有日志查询管理组件。
2.存储设施,有HDFS,HBase,等自研的存储系统,有监控报警功能。
3.资源调度,有YARN,K8S,主要有用户管理功能。
4.分析引擎,主要分为三类,有批式分析,Spark,Hive,MR;有实时分析Flink;有交互分析Presto等。消息队列主要用Kafka等,主要用于存储的计算的解耦。主要功能是集群管理,服务管理。
5.权限管控,有Apache Ranger,GDPR,用来集群创建。
6.数据开发,主要有一个DAG任务流调度系统和Airflow,用来集群创建。
7.业务应用,有BI报表,数据挖掘,营销分析等,用来管控运维。
2.SQL处理流程
- Parser(String -> AST (Abstruct Syntax Tree))
词法分析:将拆分字符串得到token
语法分析:将token祖成AST node,再祖成AST
- Analyzer
检查并绑定Database, Table, Column等元信息
SQL的合法性检查,比如min/max/avg的输入是数值
AST -> Logical Plan
- Logical Plan
逻辑地描述SQL对应的分步骤计算操作
计算操作:算子( operator )
- Executor
单机并行: cache,pipeline, SIMD
多机并行: 一个fragment对应多个实例
3.SQL查询优化器
1.RBO(Rule-Based Optimization)
基于启发式规则
1.关系代数(略)
2.优化原则
- I/O
- NetWork
- CPU/memory
3.列裁剪(剔除无用列)
4.谓词下推(将Filter向下推)
5.传递闭包(逻辑上利用Filter减少join数据)
6.Runtime Filter
小结
优点:实现简单,优化速度快
缺点:不保证得到最优的执行计划
2.CBO(Cost-Based Optimizer)
基于动态规划和贪心算法
1.统计信息
2.计算算子代价
3.计算执行计划代价(通过RBO得到所有可能的执行计划)
4.执行计划枚举