【工作】Spark 3.0 源码目录结构

2019-12-27  本文已影响0人  苏柏亚的星空

工作用的最多的框架了。3.0 release 在即,先开个坑。

3.0 增加了很多新特性,包括

    动态分区裁剪(Dynamic Partition Pruning)、

    自适应查询执行(Adaptive Query Execution)、

    加速器支持(Accelerator-aware Scheduling)、

    支持 Catalog 的数据源API(Data Source API with Catalog Supports)、

    SparkR 中的向量化(Vectorization in SparkR)、

    支持 Hadoop 3/JDK 11/Scala 2.12 等等。

准备花一个星期梳理代码框架,随后挑一些关注的重点内容分析源码。

主要是spark core + sql 相关。

spark源码目录还算分明,毕竟那么多顶级程序员写了10年的工业级开源框架。

包的层次结构最多3层,不会嵌套很深。

按个人理解的重要程度,分为:

★  辅助类,不重要 ,帮助框架能跑,如配置相关。

★ ★  串连与实现,整个代码的血肉,组成最多的部分,如RPC收发,Block管理。

★ ★ ★  核心概念与框架的定义,计算的源头与驱动,如RDD定义与TaskSet/Job调度。


一、spark-core 代码全景

二、spark-sql 代码全景

    sql是社区最热门与投入最大的版块,当然理解难度也最大。

    尤其是catalyst涉及大量数据库概念与优化思路。 

    spark一直在做的事就是把数据表示统一,从RDD => DataFrame => DataSet,

    然后在统一的结构化数据层面做框架上的优化,(毕竟SQL是最广泛与简便的分析模式)

    包括数据结构、内存、序列化、CPU/现代编译器耦合、代码生成等各种措施。

    与这些比起来,上面的core模块似乎简单得是个弟弟。。。

    sql下又有4个包,其中hive/hive-thriftserver没啥好记的,

    只是一些兼容支持,元数据相关,与jdbc服务的实现层。

    主要看catalyst与sql-core。

上一篇下一篇

猜你喜欢

热点阅读