1现在源码分析
MiniSpark
- thrift安装
1 | ./configure --prefix=/usr/local/ --with-boost=/usr/local --with-libevent=/usr/local --without-csharp --without-erlang --without-go --without-haskell --without-ruby --without-cpp --without-perl --without-php --without-php_extension --without-python |
- 源码分析
1 | 总体流程 |
Spark源码
- 运行流程简析
1 | 从WordCount看源码 |
- 分模块解析
1 | 1. 存储模块 |
- shuffle相关
1 | shuffle_shffleId_mapId_reduceId |
remote shuffle service
传统Shuffle存在以下问题。
1 | - 本地盘依赖限制了存算分离。存算分离是近年来兴起的新型架构,它解耦了计算和存储,可以更灵活地做机型设计:计算节点强CPU弱磁盘,存储节点强磁盘强网络弱CPU。计算节点无状态,可根据负载弹性伸缩。存储端,随着对象存储(OSS, S3)+数据湖格式(Delta, Iceberg, Hudi)+本地/近地缓存等方案的成熟,可当作容量无限的存储服务。用户通过计算弹性+存储按量付费获得成本节约。然而,Shuffle对本地盘的依赖限制了存算分离。 |
Spark SQL源码
查hive
1 | spark.sql("select deptno,dname from default.dept_part where dt='2021-08-02'").show() |
全阶段代码生成
1 | public Object generate(Object[] references) { |
表达式代码生成
1 | public java.lang.Object generate(Object[] references) { |
Celeborn
源码分析
1. 读写主要过程
1 | Shuffle Write(写) |
2. 角色通信
1 | Master |
3. 概念理解
1 | TransportClient 对应客户端 |
4. shuffle完整过程
1 | Shuffle Write(写) |
5. 角色详细解读(涉及属性)
1 | Master(端) |
Kyuubi
1.主流程
1 | KyuubiBeeLine入手 |
2.角色解读
1 | KyuubiHiveDriver |
Calcite
1.主流程
1 | 1.SqlToRelConverter |
CMU15445源码阅读
1 | 1. buffer pool manager |
Gluten源码分析
1 | 入口 |
6.824源码阅读
1 | lab1 mapreduce |
Mini-lsm源码阅读
1 | Week1: |