首頁常見問題正文

Spark on Yarn作業(yè)執(zhí)行流程是怎樣的?

更新時間:2024-03-07 來源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  Apache Spark是一個分布式計算框架,而YARN(Yet Another Resource Negotiator)是Hadoop生態(tài)系統(tǒng)中的資源管理器。在使用Spark on YARN時,Spark作業(yè)的執(zhí)行流程如下所示:

  1.提交作業(yè):

  用戶通過Spark提交作業(yè)到Y(jié)ARN集群。作業(yè)可以是Spark應(yīng)用程序(使用 SparkContext 或 SparkSession)或者 Spark SQL查詢。

  2.資源申請:

  YARN ResourceManager接收到作業(yè)提交請求后,分配一個ApplicationMaster(AM)給該作業(yè)。AM負責(zé)管理作業(yè)的執(zhí)行。

  3.ApplicationMaster啟動:

  YARN在集群中選擇一個節(jié)點來啟動ApplicationMaster。ApplicationMaster負責(zé)與ResourceManager通信,協(xié)調(diào)作業(yè)的執(zhí)行,以及申請和分配資源。

  4.資源分配:

  ApplicationMaster向ResourceManager請求執(zhí)行作業(yè)所需的資源,包括CPU、內(nèi)存和其他相關(guān)資源。ResourceManager根據(jù)集群的資源狀況和作業(yè)的需求來分配資源。

  5.任務(wù)調(diào)度:

  一旦資源分配完成,ApplicationMaster開始調(diào)度作業(yè)的任務(wù)。Spark on YARN使用Spark的調(diào)度器來決定如何將作業(yè)拆分成不同的任務(wù),并在集群中的節(jié)點上啟動這些任務(wù)。

  6.任務(wù)執(zhí)行:

  每個任務(wù)在分配到的資源上執(zhí)行Spark代碼。這些任務(wù)可能包括數(shù)據(jù)加載、轉(zhuǎn)換、計算和輸出等操作,根據(jù)作業(yè)的邏輯而定。

  7.數(shù)據(jù)讀取和計算:

  Spark作業(yè)會從數(shù)據(jù)源讀取數(shù)據(jù),對數(shù)據(jù)進行轉(zhuǎn)換和計算,并生成相應(yīng)的結(jié)果。

  8.結(jié)果輸出:

  計算完成后,Spark作業(yè)可能會將結(jié)果寫入文件系統(tǒng)、數(shù)據(jù)庫或者其他存儲系統(tǒng)中,以供后續(xù)分析或應(yīng)用程序使用。

  9.監(jiān)控和管理:

  YARN和Spark提供了各種工具來監(jiān)控作業(yè)的執(zhí)行情況和資源使用情況。用戶可以通過YARN ResourceManager UI、Spark UI等來查看作業(yè)的狀態(tài)、進度和日志信息,并對作業(yè)進行管理和調(diào)優(yōu)。

  10.作業(yè)完成:

  一旦作業(yè)執(zhí)行完成,ApplicationMaster會向ResourceManager發(fā)送作業(yè)完成的通知,并釋放所占用的資源。用戶可以根據(jù)作業(yè)的執(zhí)行結(jié)果來進行后續(xù)的分析和處理。

  總體來說,Spark on YARN的作業(yè)執(zhí)行流程包括資源申請、任務(wù)調(diào)度、任務(wù)執(zhí)行和結(jié)果輸出等步驟,通過 YARN和Spark的協(xié)同工作,實現(xiàn)了高效的分布式計算。

分享到:
在線咨詢 我要報名
和我們在線交談!