日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spark任务shell运行_大数据系列:Spark的工作原理及架构

發(fā)布時間:2023/12/2 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spark任务shell运行_大数据系列:Spark的工作原理及架构 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

介紹

本Apache Spark教程將說明Apache Spark的運(yùn)行時架構(gòu)以及主要的Spark術(shù)語,例如Apache SparkContext,Spark shell,Apache Spark應(yīng)用程序,Spark中的任務(wù)(Task),作業(yè)(job)和階段(stage)。

此外,我們還將學(xué)習(xí)Spark運(yùn)行時體系結(jié)構(gòu)的組件,例如Spark driver,集群管理器(cluster manager)和Spark executors。最后,我們將看到Apache Spark如何使用這些組件工作。

Apache Spark的工作原理–運(yùn)行時Spark架構(gòu)

在這里,我們將學(xué)習(xí)Apache Spark的工作原理。在Apache Spark中,中央?yún)f(xié)調(diào)器稱為driver。當(dāng)您在spark中輸入代碼時,驅(qū)動程序(driver)中的SparkContext將在我們調(diào)用Action時創(chuàng)建作業(yè)(job)。該作業(yè)(job)提交給DAG Scheduler,DAG Scheduler創(chuàng)建操作員圖(operator graph),然后將其提交給Task Scheduler。任務(wù)計劃程序通過集群管理器(cluster manager)啟動任務(wù)。因此,借助集群管理器,Spark Application在一組計算機(jī)上啟動。

現(xiàn)在,讓我們了解下Spark的架構(gòu)原理。

2. Apache Spark工作原理的內(nèi)部原理

Apache Spark是一個開放源代碼,通用分布式計算引擎,用于處理和分析大量數(shù)據(jù)。就像Hadoop MapReduce一樣,它也可以與系統(tǒng)一起在整個群集中分發(fā)數(shù)據(jù)并并行處理數(shù)據(jù)。Spark使用主/從體系結(jié)構(gòu),即一個中央?yún)f(xié)調(diào)員(driver)和許多不同節(jié)點的workers。在這里,中央?yún)f(xié)調(diào)員稱為驅(qū)動程序(driver)。

驅(qū)動程序(driver)在其自己的Java進(jìn)程中運(yùn)行。這些驅(qū)動程序與可能稱為executor的大量分布式executors進(jìn)行通信。每個執(zhí)行程序都是一個單獨的java進(jìn)程。一個Spark應(yīng)用是驅(qū)動程序(driver)和其擁有的executors的組合。在集群管理器的幫助下,Spark Application在一組計算機(jī)上啟動。Standalone cluster manager是Spark的默認(rèn)內(nèi)置cluster manager。除了內(nèi)置的群集管理器外,Spark還可以與某些開源群集管理器(如Hadoop Yarn,Apache Mesos等)一起使用。

Spark的術(shù)語

  • Apache SparkContext

SparkContext是Spark應(yīng)用程序的核心。它建立與Spark執(zhí)行環(huán)境的連接。它用于創(chuàng)建Spark RDD,累加器(accumulators)和廣播變量(broadcast),訪問Spark服務(wù)并運(yùn)行作業(yè)(jobs)。SparkContext是Spark執(zhí)行環(huán)境的客戶端,并充當(dāng)Spark應(yīng)用程序的主要部分。Spark Context的主要工作是:

  • 獲取Spark應(yīng)用程序的當(dāng)前狀態(tài)
  • 取消工作
  • 取消Stage(一個階段)
  • 同步運(yùn)行job
  • 異步運(yùn)行job
  • 訪問持久化的RDD
  • 釋放一個持久化的RDD
  • 可編程動態(tài)資源分配
    • Apache Spark Shell

    Spark Shell是用Scala編寫的Spark應(yīng)用程序。它提供具有自動完成功能的命令行環(huán)境。它有助于我們熟悉Spark的功能,這些功能有助于開發(fā)自己的獨立Spark應(yīng)用程序。因此,該工具有助于了解Spark,也是Spark之所以在處理各種大小的數(shù)據(jù)集方面如此有用的原因。

    $spark-shell --master yarn --num-executors 3 --executor-cores 2 --executor-memory 500M
    • Spark Application

    Spark應(yīng)用程序是一個獨立的計算,可以運(yùn)行用戶提供的代碼來計算結(jié)果。即使沒有運(yùn)行作業(yè)(job),Spark應(yīng)用程序也可以代表其運(yùn)行進(jìn)程。

    • 任務(wù)(Task)

    一個任務(wù)是被發(fā)送到執(zhí)行程序(executor)的工作單元。每個階段都有一個任務(wù),每個分區(qū)分配一個任務(wù)。同一任務(wù)是在RDD的不同分區(qū)上完成的。

    • 作業(yè)(Job)

    Job是并行計算的單元,由多個任務(wù)組成,這些任務(wù)是響應(yīng)Apache Spark中的Actoion而產(chǎn)生的。

    • 任務(wù)階段(Stage)每個Job都分成一些較小的任務(wù)集,稱為 相互依賴的 階段(Stage)。Stage被分類為計算邊界。不能在單個Stage中完成所有計算。Job通過許多個階段(Stage)來完成。

    Spark運(yùn)行時架構(gòu)的組件

    • Apache Spark驅(qū)動(Driver)

    該程序的main()方法在驅(qū)動程序(Driver)中運(yùn)行。驅(qū)動程序(Driver)是運(yùn)行用戶代碼的過程,該用戶代碼創(chuàng)建RDD,執(zhí)行轉(zhuǎn)換(transformation)和操作(action)以及創(chuàng)建SparkContext。啟動Spark Shell時,這表示我們已經(jīng)創(chuàng)建了驅(qū)動程序(Driver)。在驅(qū)動程序終止時,應(yīng)用程序?qū)⒔Y(jié)束。

    驅(qū)動程序(Driver)將Spark應(yīng)用程序拆分為Task,并安排它們在Executors上運(yùn)行。任務(wù)計劃程序駐留在驅(qū)動程序中,并在executors之間分配任務(wù)。驅(qū)動程序(Driver)的兩個主要關(guān)鍵角色是:

  • 將用戶程序轉(zhuǎn)換為任務(wù)(task)。
  • 在執(zhí)行程序(executor)上調(diào)度任務(wù)(task)。
  • Spark程序的高層結(jié)構(gòu)是:RDD由一些輸入數(shù)據(jù)源組成,使用各種轉(zhuǎn)換(transformations)從現(xiàn)有RDD派生出新的RDD,然后在執(zhí)行Action來計算數(shù)據(jù)之后。在Spark程序中,操作的DAG(有向無環(huán)圖)是隱式創(chuàng)建的。當(dāng)驅(qū)動程序運(yùn)行時,它將Spark DAG轉(zhuǎn)換為物理執(zhí)行計劃。

    • Apache Spark集群管理器

    Spark依靠群集管理器來啟動執(zhí)行程序,在某些情況下,甚至驅(qū)動程序也可以通過它啟動。它是Spark中的可插入組件。在集群管理器上,Spark Scheduler以FIFO方式在Spark應(yīng)用程序中調(diào)度作業(yè)和操作。可替代地,調(diào)度也可以以循環(huán)方式進(jìn)行。Spark應(yīng)用程序使用的資源可以根據(jù)工作負(fù)載動態(tài)調(diào)整。因此,應(yīng)用程序可以釋放未使用的資源,并在有需求時再次請求它們。在所有粗粒度群集管理器(即獨立模式,YARN模式和Mesos粗粒度模式)上均可用。

    • Apache Spark執(zhí)行器

    給定Spark作業(yè)中的單個任務(wù)在Spark執(zhí)行程序中運(yùn)行。執(zhí)行程序在Spark應(yīng)用程序的開頭啟動一次,然后在應(yīng)用程序的整個生命周期內(nèi)運(yùn)行。即使Spark執(zhí)行程序失敗,Spark應(yīng)用程序也可以輕松繼續(xù)。執(zhí)行者有兩個主要角色:

  • 運(yùn)行組成應(yīng)用程序的任務(wù),并將結(jié)果返回給驅(qū)動程序。
  • 為用戶緩存的RDD 提供內(nèi)存存儲(cache ,persist)。
  • 5.如何在Spark中啟動程序?盡管使用了任何集群管理器,Spark都具有單個腳本的功能,該腳本可用于提交程序,稱為spark-submit。它在集群上啟動應(yīng)用程序。通過各種方式,spark-submit可以連接到不同的集群管理器并控制應(yīng)用程序獲得多少資源。對于某些群集管理器,spark-submit可以在群集內(nèi)運(yùn)行驅(qū)動程序(例如,在YARN工作節(jié)點上),而對于其他群集管理器,它只能在本地計算機(jī)上運(yùn)行。

    6.如何在集群上運(yùn)行Apache Spark應(yīng)用程序

    Apache Spark作業(yè)執(zhí)行流程的完整圖片。

  • 使用spark-submit,用戶提交Spark應(yīng)用。
  • 在spark-submit中,我們調(diào)用用戶指定的main()方法。它還會啟動驅(qū)動程序(driver)。
  • 驅(qū)動程序(driver)向集群管理器(yarn or mesos)請求啟動執(zhí)行器所需的資源。
  • 集群管理器代表驅(qū)動程序啟動執(zhí)行程序。
  • 驅(qū)動程序進(jìn)程(driver)在用戶應(yīng)用程序的幫助下運(yùn)行。根據(jù)RDD上的動作(actions)和轉(zhuǎn)換(transformation),驅(qū)動程序(driver)以任務(wù)(tasks)形式將工作發(fā)送給執(zhí)行者(executors)。
  • 執(zhí)行者(executors)處理任務(wù)(task),結(jié)果通過集群管理器發(fā)送回驅(qū)動程序(driver)。
  • Spark-WebUI

    Spark-UI是一個圖形化的web工具,幫助理解代碼執(zhí)行流程以及完成特定作業(yè)所花費的時間。可視化有助于發(fā)現(xiàn)執(zhí)行過程中發(fā)生的任何潛在問題,并進(jìn)一步優(yōu)化spark應(yīng)用程序。

    以上就是Apache Spark的工作方式。

    如果發(fā)現(xiàn)任何不正確的地方,或者想分享有關(guān)上述主題的更多信息,歡迎反饋。

    總結(jié)

    以上是生活随笔為你收集整理的spark任务shell运行_大数据系列:Spark的工作原理及架构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。