大資料進階之Spark執行流程
在大資料的諸多技術框架當中,Spark發展至今,已經得到了廣泛的認可。Hadoop與Spark可以說是企業級資料平臺的主流選擇,基於不同的應用場景,來搭建符合需求的大資料系統平臺。今天我們就來講講其中的Spark,Spark核心執行流程。
Spark計算模式
Spark是既Hadoop之後提出的又一代計算框架,同樣主打離線批處理,但是在Hadoop原生計算引擎MapReduce的基礎之上,做到了效能提升10-100倍,從而在Hadoop生態當中,超過了原生的MapReduce,逐步得到重用。
Spark繼承了Hadoop MapReduce的特性,是典型的Master/worker架構。這種架構就是把計算任務進行劃分,然後進行分配給多個Slave,也就是進行Map,等Slave完成了分配給自己的任務後,然後再Master上進行彙總,也就是Redudce,這就是MapReduce的思想。
Spark執行流程
Spark在Master上建立Sparkcontext,建立SparkContext的目的是為了準備Spark應用程式的執行環境。在Spark中由SparkContext負責和ClusterManager通訊,進行資源的申請、任務的分配和監控等。
Driver是驅動的意思,也就是整個系統啟動之後,整個系統的運轉時靠Driver來驅動的,使用者自己的作業也是通過Driver來分解和排程執行的。
資源申請後,Spark通常會要求資源管理器在Container中啟動自己的Worker,也就是Executor程序,同時啟動命令裡面會帶著Driver的URL地址,方便Executor啟動後,向Driver註冊自己。
Executor向Driver註冊自己之後,大家就相互認識了,就可以互相通訊,根據協議進行互動,整個分散式系統也就執行起來了。
Driver和Executor直接通過RPC協議相互聯絡,Spark歷史上內部使用過兩種RPC實現,基於Akka Actor的RPC和基於Netty自己封裝的RPC。
Executor是具體的執行者,Executor拿到屬於自己的Task後,執行出結果,然後把結果彙報給Driver。
Driver和Executors都執行自己的Java程序,可以在同一臺機器上,也可以在不同的機器上。
Spark資源管理
而關於資源管理器,有多種選擇。可以是Spark自己實現的資源管理器,standalone模式,也可以採用一些比較通用的資源管理器,比如Yarn和Mesos,這也是為什麼有說法,Spark可以自己獨立執行,也可以與Hadoop整合協同。
關於大資料進階之Spark執行流程,相信看完今天的分享內容,大家也都能夠有比較清楚的認識了。Spark是大資料當中必須掌握的核心技術框架,對於執行原理、架構設計等,都需要牢牢掌握,熟練運用才行。