看了许利杰老师的这本书,老师在理论层面讲的比较清楚了,读起来也容易理解,但看完但总是感觉还差点什么。于是动手起了个项目,定了个小目标:实现 RDD 的逻辑。
目前 RDD 的 MVP 已经完成,最大的收获是彻底理解了几个费解的问题:
1 ,Stage 的切分原理,为什么要这么做
2 ,Shuffle 是如何实现的,write/read 是如何衔接
3 ,Partition 为何如此的重要
有兴趣的同学一起 github 交个朋友吧,项目地址 https://github.com/changzhiwin/spark-core-analysis ,特点:
1 ,聚焦在 RDD 层面(这是 Spark 的根本)
2 ,入门明确,代码量小(保留逻辑),容易上手运行(运行起来,理解代码就容易了)
1
winchang OP 接下准备集成 rpc 部分,因为并行计算是 rdd 的核心特性; cache 和 checkpoint 也很重要,但可以看成是优化的部分。
1 ,官方在 2.0 时弃用了 akka ,所以也将不依赖这个库 2 ,本着理解核心逻辑,周边逻辑不考虑(例如 metrics ) |
2
winchang OP 又来更新了,通过这一阵时间的理解,算是吃透了 spark rpc 的实现( netty 本身不算哈)。
核心是理解 Dispatcher+MessageLoop+(Inbox/Outbox),项目已经集成了 Inbox 的特性,持续更新中... |
3
winchang OP update ,完整实现了 rpc 模块,可独立运行
|
4
winchang OP Update, 实现了 cluster 模式,支持一个 Driver 进程,多个 Executor 进程运行;
基本达成预设目标,开心一下😄 |
5
shiyanfei5 2022-10-25 22:22:09 +08:00
厉害!
|
6
alisdlyc 88 天前
666
|