Spark学习路线

准备
编程语言介绍
scala、java、python、R都有spark对应的api,但如果想深入理解spark还是需要学习scala的。(scala中隐式转换特性可以很大程度提高spark开发效率);
Scala(FP+OP面向对象和函数式编程混合语言)优势在于函数式编程;
scala是在java之外套了一层壳,编译之后还是.class,运行在jvm,所以java语言在学习大数据组建中也特别重要;
初学可以学习先学习scala,后继续学习java。
基础学习
第一步:
个人感觉对于学习来说最终要的是搭建集群,(非cdh环境、cdh采用集成一键安装,对深入学习的作用不太大)先从整体了解spark,可以根据官网进行环境配置;
有现成的物理机器最好,没有也可以采用虚拟技术搭建虚拟节点,对于初学者来说三个节点就可以;(可以使用软件VirtualBox.exe,也可以使用vm)
Spark学习路线
在这一步需要了解spark运行模式(Standalone模式、Spark On YARN模式、Spark On Mesos模式)
公司开发环境一般采用on yarn 所以可以深入理解一下onyarn模式以及集群搭建过程

第二步:
了解一门新技术的最好途径就是官网http://spark.apache.org/
SPARK特点:
速度:在内存中存储中间结果。
支持多种语言.
内置了80+的算子.
高级分析:MR/SQL/ Streamming /mllib / graph
Spark学习路线
进入官网就会看到spark与hadoop的速度对比,当然这可能是夸张的说法
接下来我们来看一下Spark架构(还是借用官方)
Spark学习路线
可以看出 sparksql、sparkstreaming等模块都是基于apache spark模块之上的就是我们所说的spark core
所以我们先学习spark core
sparkcore模块

重重重点RDD(最重点的贯穿spark所有模块)
Spark当中最重要的就是rdd了,rdd(弹性分布式数据集)从名字上看是数据集,就是数据的集合,但是相反的是rdd中并不保存数据,而保存的是分区信息、计算法则、依赖关系、优先数据位置等(可以看一下rdd的五个属性,熟悉的可以看一下源代码)

重点算子(通俗点就是针对rdd计算的方法)
Spark内置了80+的算子.
算子分为转换算子与行动算子
由于spark的惰性,真正工作的为行动算子
常用算子使用见附件;

重点 sparkcontext
sparkContext在Spark应用程序的执行过程中起着主导作用,它负责与程序和spark集群进行交互,包括申请集群资源、创建RDD、accumulators及广播变量等。sparkContext与集群资源管理器、work节点交互图如下:
Spark学习路线
Sparksql模块
Sqlcontext
SQLContext是Spark SQL进行结构化数据处理的入口,可以通过它进行DataFrame的创建及SQL的执行
最新版的spark已经使用sparksession代替
Dataframe
学习sparksql最重要的要了解dataframe
DataFrame不是Spark SQL提出,而是在Pandas就有
可以从各种source转换成,如RDD、SQL、noSQL等
可以了解一下DataFrame 与 rdd互相转换过程(此过程要深入理解必须理解scala隐式转换的特性)
再次有一次引入RDD概念
Sparkstreaming模块
Sparkstreaming是spark的实时数据处理模块,但准确的说是准实时模块(Sparkstreamin*生的是离散流,离散流可以看做是rdd的集合) 所以sparkstreaming处理的还是rdd,只不过是实时产生,批量处理
到此处可以看出RDD在spark的重要性
学习进阶(可以根据过程进行google学习)
想要进一步学习spark,需要更加深入的学习scala
之后切入点还是RDD
1.RDD执行流程
2.RDD转换过程中的宽窄依赖关系
3.计算过程中的shuffle(内存调优阶段)
4.广播变量局部变量(累加器检查点)在hadoop权威指南中也做了一部分介绍
5.RDD子类
6.Spark任务提交流程
7.Spark与其它组件的集成
Spark高阶(内存调优,参数调优)
说到调优,性能优化首先得了解内存分配,因为spark最终运行在jvm上,所以需要学习jvm
此时java语言就需要做一定的了解
Jvm
内存分配模型,垃圾回收机制
Executor执行器
所有的任务都是运行在work节点的excutor中的,所以excutor内存上的优化以及任务cpu核数的合理分配对任务性能优化尤为重要
Executor内存分配(统一,静态,堆内,堆外)

水平有限仅供参考