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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

介紹

本Apache Spark教程將說明Apache Spark的運行時架構以及主要的Spark術語,例如Apache SparkContext,Spark shell,Apache Spark應用程序,Spark中的任務(Task),作業(job)和階段(stage)。

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

Apache Spark的工作原理–運行時Spark架構

在這里,我們將學習Apache Spark的工作原理。在Apache Spark中,中央協調器稱為driver。當您在spark中輸入代碼時,驅動程序(driver)中的SparkContext將在我們調用Action時創建作業(job)。該作業(job)提交給DAG Scheduler,DAG Scheduler創建操作員圖(operator graph),然后將其提交給Task Scheduler。任務計劃程序通過集群管理器(cluster manager)啟動任務。因此,借助集群管理器,Spark Application在一組計算機上啟動。

現在,讓我們了解下Spark的架構原理。

2. Apache Spark工作原理的內部原理

Apache Spark是一個開放源代碼,通用分布式計算引擎,用于處理和分析大量數據。就像Hadoop MapReduce一樣,它也可以與系統一起在整個群集中分發數據并并行處理數據。Spark使用主/從體系結構,即一個中央協調員(driver)和許多不同節點的workers。在這里,中央協調員稱為驅動程序(driver)。

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

Spark的術語

  • Apache SparkContext

SparkContext是Spark應用程序的核心。它建立與Spark執行環境的連接。它用于創建Spark RDD,累加器(accumulators)和廣播變量(broadcast),訪問Spark服務并運行作業(jobs)。SparkContext是Spark執行環境的客戶端,并充當Spark應用程序的主要部分。Spark Context的主要工作是:

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

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

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

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

    • 任務(Task)

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

    • 作業(Job)

    Job是并行計算的單元,由多個任務組成,這些任務是響應Apache Spark中的Actoion而產生的。

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

    Spark運行時架構的組件

    • Apache Spark驅動(Driver)

    該程序的main()方法在驅動程序(Driver)中運行。驅動程序(Driver)是運行用戶代碼的過程,該用戶代碼創建RDD,執行轉換(transformation)和操作(action)以及創建SparkContext。啟動Spark Shell時,這表示我們已經創建了驅動程序(Driver)。在驅動程序終止時,應用程序將結束。

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

  • 將用戶程序轉換為任務(task)。
  • 在執行程序(executor)上調度任務(task)。
  • Spark程序的高層結構是:RDD由一些輸入數據源組成,使用各種轉換(transformations)從現有RDD派生出新的RDD,然后在執行Action來計算數據之后。在Spark程序中,操作的DAG(有向無環圖)是隱式創建的。當驅動程序運行時,它將Spark DAG轉換為物理執行計劃。

    • Apache Spark集群管理器

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

    • Apache Spark執行器

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

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

    6.如何在集群上運行Apache Spark應用程序

    Apache Spark作業執行流程的完整圖片。

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

    Spark-UI是一個圖形化的web工具,幫助理解代碼執行流程以及完成特定作業所花費的時間。可視化有助于發現執行過程中發生的任何潛在問題,并進一步優化spark應用程序。

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

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

    總結

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

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。