更新時間:2024-03-07 來源:黑馬程序員 瀏覽量:
Apache Spark是一個分布式計算框架,而YARN(Yet Another Resource Negotiator)是Hadoop生態(tài)系統(tǒng)中的資源管理器。在使用Spark on YARN時,Spark作業(yè)的執(zhí)行流程如下所示:
1.提交作業(yè):
用戶通過Spark提交作業(yè)到YARN集群。作業(yè)可以是Spark應用程序(使用 SparkContext 或 SparkSession)或者 Spark SQL查詢。
2.資源申請:
YARN ResourceManager接收到作業(yè)提交請求后,分配一個ApplicationMaster(AM)給該作業(yè)。AM負責管理作業(yè)的執(zhí)行。
3.ApplicationMaster啟動:
YARN在集群中選擇一個節(jié)點來啟動ApplicationMaster。ApplicationMaster負責與ResourceManager通信,協(xié)調作業(yè)的執(zhí)行,以及申請和分配資源。
4.資源分配:
ApplicationMaster向ResourceManager請求執(zhí)行作業(yè)所需的資源,包括CPU、內存和其他相關資源。ResourceManager根據集群的資源狀況和作業(yè)的需求來分配資源。
5.任務調度:
一旦資源分配完成,ApplicationMaster開始調度作業(yè)的任務。Spark on YARN使用Spark的調度器來決定如何將作業(yè)拆分成不同的任務,并在集群中的節(jié)點上啟動這些任務。
6.任務執(zhí)行:
每個任務在分配到的資源上執(zhí)行Spark代碼。這些任務可能包括數據加載、轉換、計算和輸出等操作,根據作業(yè)的邏輯而定。
7.數據讀取和計算:
Spark作業(yè)會從數據源讀取數據,對數據進行轉換和計算,并生成相應的結果。
8.結果輸出:
計算完成后,Spark作業(yè)可能會將結果寫入文件系統(tǒng)、數據庫或者其他存儲系統(tǒng)中,以供后續(xù)分析或應用程序使用。
9.監(jiān)控和管理:
YARN和Spark提供了各種工具來監(jiān)控作業(yè)的執(zhí)行情況和資源使用情況。用戶可以通過YARN ResourceManager UI、Spark UI等來查看作業(yè)的狀態(tài)、進度和日志信息,并對作業(yè)進行管理和調優(yōu)。
10.作業(yè)完成:
一旦作業(yè)執(zhí)行完成,ApplicationMaster會向ResourceManager發(fā)送作業(yè)完成的通知,并釋放所占用的資源。用戶可以根據作業(yè)的執(zhí)行結果來進行后續(xù)的分析和處理。
總體來說,Spark on YARN的作業(yè)執(zhí)行流程包括資源申請、任務調度、任務執(zhí)行和結果輸出等步驟,通過 YARN和Spark的協(xié)同工作,實現(xiàn)了高效的分布式計算。