Spark——爲數據分析處理提供更爲靈活的賦能

本文來自網易雲社區html

做者:王佳楠算法

1、概述

現現在在大規模數據處理分析的技術領域中,Hadoop及其生態內的各功能組件佔據了絕對的統治地位。Hadoop原生的MapReduce計算框架因爲任務抽象簡單、計算流程固定、計算的中間結果寫入磁盤引發大量讀寫開銷等短板,正逐步的被基於內存的分佈式計算框架Spark代替,應用於各種大規模數據處理分析的場景中,其優點主要體如今如下5個方面:  一、更快的計算速度。採用計算中間結果的內存緩存機制和基於DAG的數據處理過程優化策略,進一步提高數據處理速率。  二、簡單易用的分佈式計算。將大規模數據處理任務,抽象爲RDD的處理變換操做,將並行實現的分佈式計算任務拆分爲各自獨立的串行計算過程。  三、適合豐富的應用場景。Spark內部集成了SQL、機器學習、流計算、圖運算等多種類型計算模型,知足多種大規模數據分析的場景需求。  四、兼容多樣的存儲系統。知足對包括HDFS、HBase、Hive、S3等多種大規模數據存儲系統的高效讀寫需求,輕鬆處理TB級以上規模以上的數據。  五、資源管理與高可靠性。結合Yarn、Mesos等多種類型的資源管理器,監控協調各計算子任務的運行狀態,失敗重啓機制確保分佈式做業的可靠性。緩存

2、RDD計算模型原理

Spark將數據處理過程抽象爲對內存中RDD(彈性分佈式數據集)的操做,RDD的能夠經過從數據源直接讀取和集合數據類型封裝兩種方式建立。針對RDD的操做,根據其結果主要分爲如map、flatMap、mapPartition、filter等生成新的RDD的transformation(轉換)操做和collect、reduce、foreach等生成集合數據類型或結果寫入的action(行爲)操做兩大類。 Alt pic 框架

上圖中描述了一個典型的Spark做業基於RDD實現數據的處理過程。其中,Spark對RDD的處理過程是惰性的,只有調用對RDD的action操做才能啓動對RDD的計算過程,連續的調用多個transformation操做是沒法使數據處理過程真正的執行。在觸發RDD計算過程後,根據Spark內置的DAG(有向無環圖)引擎將多個對RDD的操做執行策略進行優化。  爲知足對大規模數據的處理須要,Spark將RDD劃分爲多個partition(分區),以partition爲單位將數據分散到集羣上的各個節點中。針對RDD的action操做和transformation操做間的本質區別就是生成的結果是否爲RDD。機器學習

3、基於Yarn實現資源管理

因爲Hadoop的HDFS與Spark的RDD抽象讀寫具備較爲完備的兼容性,各版本Spark均提供對應當前Hadoop版本的安裝包。一樣,Spark也可使用Hadoop中的Yarn做爲自身的資源管理器,用以完成對Spark集羣中是做業管理和任務計算資源調度分配等工做。 Alt pic 分佈式

在Spark做業的執行過程當中,Yarn將在集羣中的物理節點上的Executor的JVM進程封裝爲獨立的Container,並提供獨立的臨時文件目錄以及內存和CPU資源。同時,Spark還提供了共享文件依賴的機制將Spark做業執行過程當中,各Executor所需的如jar包、.so動態庫、py文件及其餘格式類型的文件依賴資源與Spark做業自身的執行文件分發到各Container中,使得Spark做業可以具有更爲靈活的拓展性。函數

4、技術棧

現現在,Spark做業支持Java、Scala、Python以及R四種語言編寫,Spark自身提供了SQL、機器學習、流計算以及圖運算四種類型的計算功能組件,開發人員可根據實際的應用需求和相應組件的功能特性完成Spark做業的開發。可是,其中如GraphX等部分功能組件僅支持Java及Scala語言的調用。 Alt pic oop

SQL:基於對內存中RDD操做和DAG引擎優化,Spark可以實現比基於原生MapReduce的Hive SQL更高效的計算過程。同時,採用DataFrame封裝Spark做業可以以函數調用的方式完成SQL操做。  機器學習:Spark基於內存實現RDD操做,可以知足使用大規模數據集完成機器學習建模時進行迭代運算的須要。其自身提供的MLlib組件包中提供了大量經常使用的機器學習算法模型,同時,Intel基於Spark開發的BigDL使Spark可以完成深度學習的建模計算過程。  流計算:Spark Streaming將數據源抽象爲DStream,將各時間窗內持續產生的實時數據切分爲不一樣的RDD,以RDD爲單位完成對時間窗內實時數據的處理,但其計算模式仍存在批處理的特性。  圖運算:Spark中自帶的圖運算引擎GraphX採用由並行超步與全局同步組成的Bulk Synchronous Parallell(總體同步並行)模式,將圖運算過程抽象爲各步的迭代直至符合收斂中止條件。組件化

5、應用場景

在網易大數據開發計算平臺Mammut中,做業流任務中已支持Spark類型的計算節點。在原有SQL類型節點的基礎上,經過上傳Spark做業對應的jar包並完成相對應類型參數的配置,便可完成更多更爲靈活的ETL過程,彌補Hive原生udf函數和SQL語句沒法完成某些特殊要求計算的短板。 Alt pic 學習

爲實現更加通用性更廣的服務,基於組件化的方式將經常使用的非SQL的批處理計算過程實現爲通用的功能組件包,經過傳入特定的參數實現功能的調用,從而爲後續的開發過程節約成本。


網易雲免費體驗館,0成本體驗20+款雲產品!

更多網易研發、產品、運營經驗分享請訪問網易雲社區



相關文章:
【推薦】 「網易有錢」sketch使用分享
【推薦】 後臺服務項目的白盒測試之旅
【推薦】 JVM運行內存分配和回收

相關文章
相關標籤/搜索