Code Monkey home page Code Monkey logo

spark-code-analysis's Introduction

Spark源码分析

该专题主要分为两个大的章节,第一章是关于spark core的源码分析,第二章是关于spark sql的源码分析。

spark core

该章主要从两个角度分析了spark core的源码:计算和存储。

计算

计算方面涉及到的内容主要包含:作业及任务的调度和shuffle。这里默认读者已经了解了RDD的概念和原理,所以并未对RDD作分析。

Spark基础知识:该节主要介绍了Job,Stage,Task,Dependency等概念,并且从一个简单实例入手,阐述了这些概念间的关系。主要对Job的调度做了分析。最后简单介绍了Shuffle过程中涉及到的概念和流程。

Spark的Shuffle机制:该节主要分析了Spark中各种Shuffle的实现过程。

Spark的任务调度机制:该节介绍的是Task的调度机制,包括核心概念和实现流程。

存储

存储管理分两节讲解,第一节是从用户角度,即数据的存储单位Block的角度进行阐述,第二节是从实现方式的角度,即内存管理来阐述。

Spark Block管理:对于很对涉及到与存储打交道的操作(如Shuffle、broadcast等)来说,都会涉及到BlockManager。本节主要对BlockManager及相关概念进行分析。

Spark内存管理:BlockManager落实到具体的存储(内存,磁盘等)方面是利用MemoryManager来完成的。所以该节是对Spark的内存管理的实现进行分析。

spark sql

该章分为两部分:Catalyst分析和Join详解。

Catalyst分析

这部分是完成对Catalyst的分析,从sql语句的解析到logical前半部分是完成对Catalyst的分析,从sql语句的解析到logical plan,再到logical plan优化,然后是physical plan,最后是执行。如下图所示。

Catalyst实现

Spark SQL 基础知识:本节主要是对Spark中涉及到的几个关键概念进行介绍,包括Row,Expression,Attribute,QueryPlan和Tree。

Spark Catalyst分析阶段:该节从sql语句开始进行分析,所以会涉及到sql语句解析和生成LogicalPlan的内容。

Catalyst Logical Plan优化:本节是在上一节的基础上对LogicalPlan进行优化,主要分析了部分优化方案。

Spark SQL Physical Plan:本节是对优化后的Logical Plan进行处理,生成用于执行的Physical Plan。

Spark SQL 执行阶段:在PhysicalPlan生成之后,就是执行阶段,执行的时候会涉及到部分的优化方案,并且本节对DataSet的原理进行了分析。

Join详解

这部分主要是针对Join算子的分析,前半部分的分析涵盖基本的处理思路,但是并不会细致到每个算子都分析,如果相分析具体算子可以沿着前半部分的思路去挖掘。

Spark SQL Join分析——上:针对具体的Join算子,分析了从SQL语句的AST树解析到LogicalPlan优化完成,也就是生成PhysicalPlan之前,的代码。

Spark SQL Join分析——下:针对具体的Join算子,从LogicalPlan到Spark core中具体的shuffle操作之前做了分析。

spark-code-analysis's People

Contributors

summerdg avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.