系统的学习大数据分布式计算spark技术

时间:2022-07-24 03:33:13

我们在学习一门技术的时候一定要以系统的思维去学习,这样的话,不仅对你的提高有很大的帮助,也可以让你高效的使用这个技术。


对于学习spark,当然也是要以系统的思维去全面的学习。这篇博客是我系统的学习spark的点点滴滴,写这篇博客的目的有两:一是将自己多年学习到的知识的总结;二是分享给大家,希望对大家有帮助


系统的学习spark技术的形式有两种:博客和视频,对于能用博客说明白的问题,会以免费的博客形式给出,但是对于一些原理性的东西用博客很难说的很明白,所以会以视频给出


这个系统学习spark的名称是:spark2.x 由浅入深深到底系列知识。所谓的"浅"是指一定的场景或者问题,然后"入深"就是这个解决这个场景以及问题的原理是什么,然后再“深”就是指这些场景以及问题的原理在我们的代码层面上是怎么实现的,就是会涉及到源码的阅读,最后“到底”就是我们的实践了,然后用实践产生价值


以下是系统学习spark的步骤:


一、spark2.x 由浅入深深到底系列一:正确理解spark

只有正确理解spark了,我们才能确定学习spark的方向和思路,这个是指路灯。

这个我们以视频的方式给出,视频的链接URL是:http://edu.51cto.com/course/10932.html 

在这个视频中,我们会弄明白下面的几个问题:

1: 彻底弄懂什么是RDD及其特点

2: 彻底弄懂什么是spark的分布式内存计算

3: 彻底弄懂spark是怎样解决各个领域问题,以及在解决各个领域问题的时候的特点

同时,我们会彻底搞明白下面的两个问题:

1: spark是基于内存的,MapReduce是基于磁盘的,所以spark比MapReduce快,真的是这样的吗?

2: spark的分布式内存是怎么样合理的使用的,或者说用在哪些场景下是合理的


二、spark2.x 由浅入深深到底系列二:spark core RDD Api

对spark core中的RDD中的每一个scala api的用法、用的过程中需要注意的点以及每一个api的原理都做了系统的深入的讲解

这个我们以视频的方式给出,视频的链接URL是:http://edu.51cto.com/course/11058.html 

这个视频中的内容包括如下:

第一章: 课程内容以及课程需要的环境的描述


第二章: 了解scala

了解scala的基本概念,包括:

1、scala之面向对象编程

2、scala之函数式编程

3、scala的两个特征:闭包和数据结构Option


第三章: RDD概念

根据RDD的特点,进而提出RDD的定义以及RDD的优势


第四章: RDD的创建

详细讲解创建RDD的api,并且详细分析了parallelize和makeRDD两个api的原理和差异


第五章: RDD的依赖

RDD的依赖的设计,并详细讲解了为什么RDD这么设计依赖


第六章: RDD的分区

1、用原理图的方式展示了RDD分区器HashPartitioner的工作原理

2、讲解利用分区器是怎么样进行性能优化的

3、结合原理图和源代码讲解RangePartitioner的工作原理以及使用场景

4、结合实例自定义RDD的分区器Partitioner

5、RDD分区数控制api - coalesce 和 repartition的使用场景以及两者的区别

6、结合原理图和源代码讲解coalesce的原理


第七章: 单类型RDD的api详解

1、单类型RDD的transformation api的使用及其需要注意的点,包括map, mapPartition, flatMap等api

2、MapPartitionsRDD的原理代码详解

3、RDD的采样api(sample等)介绍

4、RDD分层采样api(sampleByKey等)的介绍

5、RDD的pipe api的使用方式以及使用过程中需要注意的点

6、RDD的pipe的原理深入讲解

7、单类型RDD的基本action api的讲解,包括foreach、first、collect等

8、单类型RDD基本action api讲解,包括reduce、fold以及aggregate等。同时分析了reduce和treeReduce以及aggregate和treeAggregate的原理和区别


第八章 key-value类型RDD的api详解

1、combineBykey的七大参数的详解

2、ShuffleRDD的原理详解

3、基于combineByKey的api详解,包括aggregateByKey、reduceByKey、foldByKey以及groupByKey等

4、combineBykey实战以及使用过程中需要注意的点

5、reduceByKey和groupByKey的对比,同时包含了reduce和fold的对比

6、cogroup api的感官认识,包括基于cogroup实现的join、leftOuterJoin、rightOuterJoin、fullOuterJoin以及subtractByKey等api

7、通过原理图和源代码详解cogroup原理

8、join等api的原理实现

9、subtractByKey的原理

10、sortedByKey原理,利用RangePartitioner实现优化

11、count、countByKey等计数api,包括近似估算等api


第九章: 二元RDD操作

1、union的使用及其原理

2、intersection的使用及其原理

3、cartesian笛卡尔积的使用及其原理

4、zip的使用及其原理


第十章: persist 和 checkpoint机制

1、RDD的缓存机制,即persist

2、checkpoint的作用和实现流程

3、checkpoint实现原理

4、localCheckpoint和checkpoint的优缺点


第十一章: Spark读写外部数据源

1、spark支持的读写存储系统

2、HadoopRDD的原理和实现

3、spark支持的通用的文件格式,重点会讲述了SequenceFile的数据结构以及需要注意的点,包括text file、CSV file、Sequence file 、 Object file以及MapFile等

4、spark支持的hbase file的读写代码

5、行式存储文件格式(avro)和列式存储文件格式(parquet)读写的详细讲解

6、spark对二进制数据的读写的api详解


第十二章: broadcast和accumulator两个api的详解


第十三章: RDD项目实战

以本人真实参加的项目来串联我们这个课程所将到的api


三、spark2.x 由浅入深深到底系列三:spark core正确提交spark应用

我们一般用spark-submit来提交一个spark应用,所以我们需要理解透spark-submit中的每一个参数的用法及其原理,以达到正确提交各种业务场景下的spark应用。在理解透了spark-submit中的每一个参数的用法及其原理后,我们需要理解透spark-submit的原理,这个也是打开深入学习spark的大门

这个我们以视频的方式给出,视频的链接URL是:http://edu.51cto.com/course/11132.html 

这个视频的内容包括:

第一章:课程内容简介


第二章:java基础知识

2.1 java命令启动JVM

2.2 java ProcessBuilder启动JVM


第三章:详解spark-submit的每一个参数

3.1 spark-submit感官认识

3.2 master和deploy-mode参数详解

3.3 --conf参数详解

3.4 driver相关参数的详解

3.5 executor相关参数的详解

3.6 --jars参数详解

3.7 --package相关参数详解

3.8 --files参数详解

3.9 --queue相关参数的详解

3.10 python spark应用的正确提交

3.11 利用SparkLauncher在代码中提交spark应用


第四章 spark-submit原理

4.1 spark脚本系统

4.2 spark-class脚本原理以及实现

4.3 spark-daemon脚本原理以及实现

4.4 SparkSubmit原理以及源码分析


四、spark2.x 由浅入深深到底系列四:spark core - scheduler on driver

由浅入深的讲解spark应用是怎么样拆分成task的,然后怎么在集群中调度的,以及深入讲解了task调度的过程中的本地性规则、推测机制以及黑名单机制等。

这章比较偏原理,但是我会以一种通俗易懂的话语来讲透这些原理,你会发现,你觉得很复杂的东东其实都是那么的简单

这个我们以视频的方式给出:大概十一之前会发布视频

大致的内容包括(可能会变,以发布出来的视频为准):

第一章:课程内容以及环境


第二章:一个spark应用中的调度

2.1 DAG的划分

2.2 stage的调度流程原理

2.3 task的延迟调度及性能调优

2.4 task的推测机制及其使用场景

2.5 Blacklist机制及其使用场景

2.6 资源调度及其管理


第三章:多个spark应用的调度

3.1 资源动态分配的前提

3.2 资源动态分配的机制


五、spark2.x 由浅入深深到底系列五:spark core - shuffle实现原理以及调优

在这个课程中会以通俗易懂的话语彻底说清楚spark的shuffle的实现原理以及调优过程

这个课程的内容大致会涉及到:内存管理原理、存储管理原理、mapoutTracker实现原理以及shuffle管理原理

这个我们以视频的方式给出:发布时间待定


六、spark2.x 由浅入深深到底系列六:spark core RDD java api

这个是对系列二的一个补充,会详细介绍RDD java api的实现原理,以及api的用法

这个以博客的形式给出,博客地址为:http://7639240.blog.51cto.com/7629240/d-1 

会时时更新,以达到将自己所有知道的都写进去


七、spark2.x 由浅入深深到底系列七:spark core RDD python api

这个是对系列二的一个补充,会详细介绍RDD python api的实现原理,以及api的用法

这个以博客的形式给出,博客地址为:http://7639240.blog.51cto.com/7629240/d-2 

这个目前还不是很完善,有空会时时更新


八、 spark2.x 由浅入深深到底系列八:spark core必备基础知识

本课程主要会深入理解spark core的三个基础组件以及我们深入理解spark需要的部分的基础java知识

目标:

1: spark的安全管理

2: spark的序列化机制

3: sparkRPC机制,包括部分的nio的知识点

这个以博客的形式给出,博客地址为:待定


九、 spark2.x 由浅入深深到底系列九:spark core集群资源管理机制

本课程会详细的理解spark的三种资源管理机制:

1: spark自带的standalone模式,以及深入讲解standalone的实现原理

2: hadoopyarn模式,这节课使的我们彻底弄明白spark是怎么基于yarn来跑任务的,以及我们怎么样去自己实现一个往yarn上提交应用的客户端

3: mesos模式,这节课使的我们彻底弄明白spark是怎么基于mesos来跑任务的,以及我们怎么样去自己实现一个往mesos上提交应用的客户端


这个以博客的形式给出,博客地址为:待定