原文鏈接: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框架;