每日一句正能量
又回到了原點,就從現(xiàn)在開始我的新生活吧。
章節(jié)概要
章節(jié)概要:Spark運行架構與原理
I. 引言
A. 概述Spark
B. Spark的特點和優(yōu)勢
II. Spark運行架構概述
A. Spark集群模式
B. Spark運行模式
C. Spark執(zhí)行引擎:Spark Core
D. Spark計算模塊:RDD
E. Spark數(shù)據(jù)抽象模塊:DataFrame和Dataset
F. Spark資源管理器:Cluster Manager
G. Spark任務調(diào)度器:DAG調(diào)度器
III. Spark運行原理
A. Spark的分布式計算模型
B. Spark的任務劃分與調(diào)度
C. Spark的數(shù)據(jù)分區(qū)與數(shù)據(jù)本地性
D. Spark的內(nèi)存管理與數(shù)據(jù)持久化
E. Spark的容錯機制與數(shù)據(jù)可靠性保障
IV. Spark運行架構實例分析
A. Spark Standalone模式運行架構
1. 架構概述
2. 運行流程分析
3. 執(zhí)行資源管理控制
B. Spark on YARN模式運行架構
1. 架構概述
2. 運行流程分析
3. YARN資源管理控制
C. Spark on Mesos模式運行架構
1. 架構概述
2. 運行流程分析
3. Mesos資源管理控制
V. 總結和展望
A. 對Spark運行架構和原理的總結
B. 對Spark未來發(fā)展的展望
在本章節(jié)中,我們將首先介紹Spark的運行架構和原理的基本概念和要點。接著,我們將深入探討Spark的運行原理、數(shù)據(jù)抽象模塊、資源管理器和任務調(diào)度器等關鍵組件的工作原理和實現(xiàn)方式。然后,我們將通過實際的運行架構實例分析,來具體了解Spark在不同的集群模式下的運行架構和工作流程。最后,我們將對Spark的運行架構和原理進行總結,并展望其未來發(fā)展的方向和趨勢。本章節(jié)的內(nèi)容將幫助讀者全面了解Spark的運行架構和原理,從而更好地應用和優(yōu)化Spark程序。
2.3 Spark運行架構與原理
2.3.1 基本概念
在學習Spark運行架構與工作原理之前,首先需要了解幾個重要的概念和術語。
- Application(應用)
Spark上運行的應用。Application中包含一個驅(qū)動器進程和集群上的多個執(zhí)行器進程。 - Driver Program(驅(qū)動器)
運行main()方法并創(chuàng)建SparkContext的進程。 - Cluster Manager(集群管理器)
用于在集群上申請資源的外部服務(如:獨立部署的集群管理器、Mesos或者Yarn)。 - Worker Node(工作節(jié)點)
集群上運行應用程序代碼的任意一個節(jié)點。 - Executor(執(zhí)行器)
在集群工作節(jié)點上為某個應用啟動的工作進程,該進程負責運行計算任務,并為應用程序存儲數(shù)據(jù)。 - Task(任務)
運行main()方法并創(chuàng)建SparkContext的進程。 - Job(作業(yè))
一個并行計算作業(yè),由一組任務組成,并由Spark的行動算子(如:save、collect)觸發(fā)啟動。 - Stage(階段)
每個Job可劃分為更小的Task集合,每組任務被稱為Stage
2.3.2 Spark集群運行架構
Spark運行架構主要由SparkContext、Cluster Manager和Worker組成,其中Cluster Manager負責整個集群的統(tǒng)一資源管理,Worker節(jié)點中的Executor是應用執(zhí)行的主要進程,內(nèi)部含有多個Task線程以及內(nèi)存空間,下面通過下圖深入了解Spark運行基本流程。
Spark應用在集群.上運行時,包括了多個獨立的進程,這些進程之間通過驅(qū)動程序(Driver Program)中的SparkContext對象進行協(xié)調(diào),SparkContext對象能夠 與多種集群資源管理器(Cluster Manager)通信,一旦與集群資源管理器連接,Spark會為該應用在各個集群節(jié)點上申請執(zhí)行器(Executor) ,用于執(zhí)行計算任務和存儲數(shù)據(jù)。
每個Spark應用程序都有其對應的多個執(zhí)行器進程。執(zhí)行器進程在整個應用程序生命周期內(nèi),都保持運行狀態(tài),并以多線程方式執(zhí)行任務。
驅(qū)動器程序在整個生命周期內(nèi)必須監(jiān)聽并接受其對應的各個執(zhí)行器的連接請求,因此驅(qū)動器程序必須能夠被所有Worker節(jié)點訪問到。
因為集群上的任務是由驅(qū)動器來調(diào)度的,所以驅(qū)動器應該放在離集群Worker節(jié)點比較近的機器上。
2.3.3 Spark運行基本流程
通過上一小節(jié)了解到,Spark運行架構主要由SparkContext、 Cluster Manager和Worker組成,其中Cluster Manager負責整個集群的統(tǒng)一資源管理,Worker節(jié) 點中的Executor是應用執(zhí)行的主要進程,內(nèi)部含有多個Task線程以及內(nèi)存空間。Spark應用在集群上作為獨立的進程組來運行,具體運行流程如下所示。
-
當一個Spark應用被提交時, 根據(jù)提交參數(shù)在相應位置創(chuàng)建Driver進程,Driver進程根據(jù)配置 參數(shù)信息初始化SparkContext對象,即Spark運行環(huán)境, 由SparkContext負責和Cluster Manager的通信以及資源的申請、任務的分配和監(jiān)控等。SparkContext啟動后, 創(chuàng)建DAG Scheduler (將DAG圖分解成Stage)和Task Scheduler (提交和監(jiān)控Task)兩個調(diào)度模塊。
-
Driver進程根據(jù)配置參數(shù)向Cluster Manager申請資源(主要是用來執(zhí)行的Executor),Cluster Manager接收到應用(Application) 的注冊請求后,會使用自己的資源調(diào)度算法,在Spark集群的Worker節(jié)點 上,通知Worker為應用啟動多個Executor。
-
Executor創(chuàng)建后, 會向Cluster Manager進行資源及狀態(tài)的反饋,便于Cluster Manager對Executor進行狀態(tài)監(jiān)控,如果監(jiān)控到Executor失敗,則會立刻重新創(chuàng)建。
-
Executor會向SparkContext反向注冊申請Task。
-
Task Scheduler將Task發(fā)送給Worker進程中的Executor運行并提供應用程序代碼。
-
當程序執(zhí)行完畢后寫入數(shù)據(jù),Driver向Cluster Manager注銷申請的資源。
總結
Spark是一種分布式計算框架,提供了高效的數(shù)據(jù)處理能力和強大的計算功能。它的運行架構和原理可以總結如下:
-
Master-Worker架構:Spark的運行架構是基于Master-Worker模式的。在一個Spark集群中,有一個稱為Spark Master的節(jié)點負責協(xié)調(diào)和管理整個集群,同時有多個稱為Spark Worker的節(jié)點負責執(zhí)行具體的計算任務。
-
彈性分布式數(shù)據(jù)集(RDD):Spark的核心概念是彈性分布式數(shù)據(jù)集(RDD)。RDD是一種可并行計算的數(shù)據(jù)結構,它可以在集群中的多個節(jié)點之間分布式地存儲和處理數(shù)據(jù)。RDD具有容錯性和可恢復性的特點,可以在節(jié)點失敗時自動進行數(shù)據(jù)恢復。
-
DAG執(zhí)行引擎:Spark使用DAG(Directed Acyclic Graph)執(zhí)行引擎來執(zhí)行并行計算任務。通過將計算任務表示為一系列有向無環(huán)圖,Spark可以將計算任務分解為多個階段(Stage),并在多個節(jié)點上并行執(zhí)行這些階段。
-
內(nèi)存計算:與其他分布式計算框架相比,Spark具有更高的性能,部分原因是因為它使用了內(nèi)存計算。Spark可以將數(shù)據(jù)存儲在內(nèi)存中,從而避免了頻繁的磁盤讀寫操作,大大提高了計算速度。
-
Transformations和Actions:Spark提供了豐富的Transformations和Actions操作,用于對RDD進行轉(zhuǎn)換和操作。Transformations操作會生成一個新的RDD,而Actions操作會觸發(fā)計算并返回結果。這種惰性計算的方式可以提高Spark的效率,只有在需要時才會真正執(zhí)行計算。
總的來說,Spark的運行架構和原理結合了Master-Worker模式、RDD、DAG執(zhí)行引擎和內(nèi)存計算等關鍵技術,實現(xiàn)了高效的分布式計算。通過靈活的數(shù)據(jù)處理能力和強大的計算功能,Spark成為了大數(shù)據(jù)處理的重要工具之一。文章來源:http://www.zghlxwxcb.cn/news/detail-779718.html
轉(zhuǎn)載自:https://blog.csdn.net/u014727709/article/details/132168348
歡迎 ??點贊?評論?收藏,歡迎指正文章來源地址http://www.zghlxwxcb.cn/news/detail-779718.html
到了這里,關于Spark大數(shù)據(jù)分析與實戰(zhàn)筆記(第二章 Spark基礎-03)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!