1. 程式人生 > >乾貨 | 如何成為大資料Spark高手

乾貨 | 如何成為大資料Spark高手

Spark是發源於美國加州大學伯克利分校AMPLab的叢集計算平臺,它立足於記憶體計算,效能超過Hadoop百倍,從多迭代批量處理出發,兼收幷蓄資料倉庫、流處理和圖計算等多種計算正規化,是罕見的全能選手。Spark採用一個統一的技術堆疊解決了雲端計算大資料的如流處理、圖技術、機器學習、NoSQL查詢等方面的所有核心問題,具有完善的生態系統,這直接奠定了其一統雲端計算大資料領域的霸主地位。

伴隨Spark技術的普及推廣,對專業人才的需求日益增加。Spark專業人才在未來也是炙手可熱,輕而易舉可以拿到百萬的薪酬。而要想成為Spark高手,也需要一招一式,從內功練起:通常來講需要經歷以下階段:

第一階段:熟練的掌握Scala及java語言

  1. Spark框架是採用Scala語言編寫的,精緻而優雅。要想成為Spark高手,你就必須閱讀Spark的原始碼,就必須掌握Scala,;

  2. 雖然說現在的Spark可以採用多語言Java、Python等進行應用程式開發,但是最快速的和支援最好的開發API依然並將永遠是Scala方式的API,所以你必須掌握Scala來編寫複雜的和高效能的Spark分散式程式;

  3. 尤其要熟練掌握Scala的trait、apply、函數語言程式設計、泛型、逆變與協變等;

  4. 掌握JAVA語言多執行緒,netty,rpc,ClassLoader,執行環境等(原始碼需要)。

第二階段:精通Spark平臺本身提供給開發者API
  1. 掌握Spark中面向RDD的開發模式部署模式:本地(除錯),Standalone,yarn等 ,掌握各種transformation和action函式的使用;

  2. 掌握Spark中的寬依賴和窄依賴以及lineage機制;

  3. 掌握RDD的計算流程,例如Stage的劃分、Spark應用程式提交給叢集的基本過程和Worker節點基礎的工作原理等

  4. 熟練掌握spark on yarn的機制原理及調優

第三階段:深入Spark核心

此階段主要是通過Spark框架的原始碼研讀來深入Spark核心部分:

  1. 通過原始碼掌握Spark的任務提交過程;

  2. 通過原始碼掌握Spark叢集的任務排程;

  3. 尤其要精通DAGScheduler、TaskScheduler,Driver和Executor節點內部的工作的每一步的細節;

  4. Driver和Executor的執行環境及RPC過程

  5. 快取RDD,Checkpoint,Shuffle等快取或者暫存垃圾清除機制

  6. 熟練掌握BlockManager,Broadcast,Accumulator,快取等機制原理

  7. 熟練掌握Shuffle原理原始碼及調優

第四階級:掌握基於Spark Streaming

Spark作為雲端計算大資料時代的集大成者,其中其元件spark Streaming在企業準實時處理也是基本是必備,所以作為大資料從業者熟練掌握也是必須且必要的:

  1. Spark Streaming是非常出色的實時流處理框架,要掌握其DStream、transformation和checkpoint等;

  2. 熟練掌握kafka 與spark Streaming結合的兩種方式及調優方式

  3. 熟練掌握Structured Streaming原理及作用並且要掌握其餘kafka結合

  4. 熟練掌握SparkStreaming的原始碼尤其是和kafka結合的兩種方式的原始碼原理。

  5. 熟練掌握spark Streaming的web ui及各個指標,如:批次執行事件處理時間,排程延遲,待處理佇列並且會根據這些指標調優。

  6. 會自定義監控系統

第五階級:掌握基於Spark SQL

企業環境中也還是以資料倉庫居多,鑑於大家對實時性要求比較高,那麼spark sql就是我們作為倉庫分析引擎的最愛(浪尖負責的兩個叢集都是計算分析一spark sql為主):

  1. spark sql要理解Dataset的概念及與RDD的區別,各種運算元

  2. 要理解基於hive生成的永久表和沒有hive的臨時表的區別

  3. spark sql+hive metastore基本是標配,無論是sql的支援,還是永久表特性

  4. 要掌握儲存格式及效能對比

  5. Spark sql也要熟悉它的優化器catalyst的工作原理。

  6. Spark Sql的dataset的鏈式計算原理,邏輯計劃翻譯成物理計劃的原始碼(非必須,面試及企業中牽涉到sql原始碼調優的比較少)

第六階級:掌握基於spark機器學習及圖計算

企業環境使用spark作為機器學習及深度學習分析引擎的情況也是日漸增多,結合方式就很多了:

java系:

  1. spark ml/mllib spark自帶的機器學習庫,目前也逐步有開源的深度學習及nlp等框架( spaCy, CoreNLP, OpenNLP, Mallet, GATE, Weka, UIMA, nltk, gensim, Negex, word2vec, GloVe)

  2. 與DeepLearning4j目前用的也比較多的一種形式

python系:

  1.  pyspark

  2. spark與TensorFlow結合

第七階級:掌握spark相關生態邊緣

企業中使用spark肯定也會涉及到spark的邊緣生態,這裡我們舉幾個常用的軟體框架:

  1. hadoop系列:kafka,hdfs,yarn

  2. 輸入源及結果輸出,主要是:mysql/redis/hbase/mongod

  3. 記憶體加速的框架redis,Alluxio

  4. es、solr

第八階級:做商業級別的Spark專案

通過一個完整的具有代表性的Spark專案來貫穿Spark的方方面面,包括專案的架構設計、用到的技術的剖析、開發實現、運維等,完整掌握其中的每一個階段和細節,這樣就可以讓您以後可以從容面對絕大多數Spark專案。

第九階級:提供Spark解決方案
  1. 徹底掌握Spark框架原始碼的每一個細節;

  2. 根據不同的業務場景的需要提供Spark在不同場景的下的解決方案;

  3. 根據實際需要,在Spark框架基礎上進行二次開發,打造自己的Spark框架;

這就是浪尖總結的我們學好spark的主要步驟;想學好,著重留意深色字型的。堅持總是空難,但是堅持下來就會有質的飛躍,後面浪尖會出一套spark這個學習套件的視訊,歡迎留意。

640.png

關於Spark高階玩法

kafkahbasespark,Flink等入門到深入源碼,spark機器學習,大資料安全,大資料運維,請關注浪尖公眾號,看高質量文章。

640.jpeg

更多文章,敬請期待