原文链接:http://blog.csdn.net/rlnLo2pNEfx9c/article/details/78778959java
Spark是发源于美国加州大学伯克利分校AMPLab的集群计算平台,它立足于内存计算,性能超过Hadoop百倍,从多迭代批量处理出发,兼收并蓄数据仓库、流处理和图计算等多种计算范式,是罕见的全能选手。Spark采用一个统一的技术堆栈解决了云计算大数据的如流处理、图技术、机器学习、NoSQL查询等方面的全部核心问题,具备完善的生态系统,这直接奠基了其一统云计算大数据领域的霸主地位。python
伴随Spark技术的普及推广,对专业人才的需求日益增长。Spark专业人才在将来也是煊赫一时,垂手可得能够拿到百万的薪酬。而要想成为Spark高手,也须要一招一式,从内功练起:一般来说须要经历如下阶段:mysql
第一阶段:熟练的掌握Scala及java语言web
Spark框架是采用Scala语言编写的,精致而优雅。要想成为Spark高手,你就必须阅读Spark的源代码,就必须掌握Scala,;面试
虽说如今的Spark能够采用多语言Java、Python等进行应用程序开发,可是最快速的和支持最好的开发API依然并将永远是Scala方式的API,因此你必须掌握Scala来编写复杂的和高性能的Spark分布式程序;redis
尤为要熟练掌握Scala的trait、apply、函数式编程、泛型、逆变与协变等;sql
掌握JAVA语言多线程,netty,rpc,ClassLoader,运行环境等(源码须要)。
编程
第二阶段:精通Spark平台自己提供给开发者API缓存
掌握Spark中面向RDD的开发模式部署模式:本地(调试),Standalone,yarn等 ,掌握各类transformation和action函数的使用;多线程
掌握Spark中的宽依赖和窄依赖以及lineage机制;
掌握RDD的计算流程,例如Stage的划分、Spark应用程序提交给集群的基本过程和Worker节点基础的工做原理等
熟练掌握spark on yarn的机制原理及调优
第三阶段:深刻Spark内核
此阶段主要是经过Spark框架的源码研读来深刻Spark内核部分:
经过源码掌握Spark的任务提交过程;
经过源码掌握Spark集群的任务调度;
尤为要精通DAGScheduler、TaskScheduler,Driver和Executor节点内部的工做的每一步的细节;
Driver和Executor的运行环境及RPC过程
缓存RDD,Checkpoint,Shuffle等缓存或者暂存垃圾清除机制
熟练掌握BlockManager,Broadcast,Accumulator,缓存等机制原理
熟练掌握Shuffle原理源码及调优
第四阶级:掌握基于Spark Streaming
Spark做为云计算大数据时代的集大成者,其中其组件spark Streaming在企业准实时处理也是基本是必备,因此做为大数据从业者熟练掌握也是必须且必要的:
Spark Streaming是很是出色的实时流处理框架,要掌握其DStream、transformation和checkpoint等;
熟练掌握kafka 与spark Streaming结合的两种方式及调优方式
熟练掌握Structured Streaming原理及做用而且要掌握其他kafka结合
熟练掌握SparkStreaming的源码尤为是和kafka结合的两种方式的源码原理。
熟练掌握spark Streaming的web ui及各个指标,如:批次执行事件处理时间,调度延迟,待处理队列而且会根据这些指标调优。
会自定义监控系统
第五阶级:掌握基于Spark SQL
企业环境中也仍是以数据仓库居多,鉴于你们对实时性要求比较高,那么spark sql就是咱们做为仓库分析引擎的最爱(浪尖负责的两个集群都是计算分析一spark sql为主):
spark sql要理解Dataset的概念及与RDD的区别,各类算子
要理解基于hive生成的永久表和没有hive的临时表的区别
spark sql+hive metastore基本是标配,不管是sql的支持,仍是永久表特性
要掌握存储格式及性能对比
Spark sql也要熟悉它的优化器catalyst的工做原理。
Spark Sql的dataset的链式计算原理,逻辑计划翻译成物理计划的源码(非必须,面试及企业中牵涉到sql源码调优的比较少)
第六阶级:掌握基于spark机器学习及图计算
企业环境使用spark做为机器学习及深度学习分析引擎的状况也是日渐增多,结合方式就不少了:
java系:
spark ml/mllib spark自带的机器学习库,目前也逐步有开源的深度学习及nlp等框架( spaCy, CoreNLP, OpenNLP, Mallet, GATE, Weka, UIMA, nltk, gensim, Negex, word2vec, GloVe)
与DeepLearning4j目前用的也比较多的一种形式
python系:
pyspark
spark与TensorFlow结合
第七阶级:掌握spark相关生态边缘
企业中使用spark确定也会涉及到spark的边缘生态,这里咱们举几个经常使用的软件框架:
hadoop系列:kafka,hdfs,yarn
输入源及结果输出,主要是:mysql/redis/hbase/mongod
内存加速的框架redis,Alluxio
es、solr
第八阶级:作商业级别的Spark项目
经过一个完整的具备表明性的Spark项目来贯穿Spark的方方面面,包括项目的架构设计、用到的技术的剖析、开发实现、运维等,完整掌握其中的每个阶段和细节,这样就可让您之后能够从容面对绝大多数Spark项目。
第九阶级:提供Spark解决方案
完全掌握Spark框架源码的每个细节;
根据不一样的业务场景的须要提供Spark在不一样场景的下的解决方案;
根据实际须要,在Spark框架基础上进行二次开发,打造本身的Spark框架;