Spark集群模式概述
2019獨角獸企業重金招聘Python工程師標準>>>
集群模式概述
本文簡要地概述一下Spark是如何在集群上運行的,方便理解Spark以及相關的組件。如何向集群提交應用程序參閱應用程序提交指南?。
組件
Spark應用程序在集群上運行由一系列的獨立的進程組成,進程相互之間由主程序(稱為驅動程序?)SparkContext協調。而且,集群上運行SparkContext可以連接多種類型的?集群管理器?(Spark的獨立集群管理器或mesos/yarn),這些集群管理器負責為應用程序分配資源。 一旦連接,Spark獲得集群中的節點的執行器?, 這些執行器負責為應用程序運行計算以及存儲數據。 接下來,它將發送您的應用程序代碼(傳遞給SparkContext的JAR或Python文件)到執行器。 最后,SparkContext發送?任務給執行器。
下面是一些需要注意的關于這個架構有用的東西:
1.???? 每個應用程序都有自己的執行器進程,這些進程將貫穿整個應用程序的生命周期以及在多個線程中運行任務。不管是在調度端(每個驅動安排自己的任務)和執行器端(不同應用程序的任務運行在不同的jvm), 隔離應用程序都有好處,。然而,這也意味著數據不能跨不同的Spark(SparkContext實例)共享,除非將數據先存放到外部存儲系統再共享。
2.???? 底層集群管理器對Spark是透明的。只要能獲得執行器進程及它們之間能相互通信,這讓Spark在集群管理器上運行相對容易,即使該集群管理器還支持其他應用程序(例如mesos/yarn)。
3.???? 驅動程序在它的生命周期必須監聽和接受連接的執行器的輸入 (請參閱?spark.driver.port和spark.fileserver.port網絡配置章節?)。 因此,驅動程序在網絡中必須能被工作節點尋址找到。
4.???? 因為驅動在集群上調度任務,它應該在工作節點附近運行,最好在同一局域網內。如果你想發送請求給遠程集群,最好讓驅動程序開一個RPC,并且讓它在工作節點附近提交操作而不是直接在遠離工作節點的地方提交操作。
集群管理器類型
系統目前支持三個集群管理器:
·???????? Standalone?– Spark自帶的一個簡單的集群管理器,使用它設置集群很容易。
·???????? Apache Mesos? – 普通的集群管理器,它還可以運行Hadoop MapReduce和服務應用程序。
·???????? Hadoop yarn? Hadoop 2的資源管理器。
此外,Spark的?EC2啟動腳本?可以很方便地在Amazon EC2上啟動一個獨立集群。
提交的應用程序
使用?spark-submit腳本可以把應用程序提交任何類型的集群。參見?應用程序提交指南?。
監控
每個驅動程序都有一個web UI,通常在端口4040上,顯示運行任務、執行器和存儲使用的信息。 http:// < driver-node >:4040?在web瀏覽器中直接打開即可。監控指導?描述其他監視選項。
作業調度
Spark給出了跨應用程序(在集群管理的層次)和應用程序內(如果多個計算發生在同一SparkContext)的資源分配控制。 參見作業計劃概述?。
術語表
下面的表列出了將來會用到的一些集群概念的術語:
術語 | 意義 |
Application(應用程序) | 在Spark上構建的用戶程序。 由在集群上的driver program(驅動程序)和executors (執行器)組成。 |
Application jar (應用程序jar) | 包含用戶的Spark的應用程序jar包。在某些情況下,用戶將需要創建一個包含應用程序和 所有它的依賴項的 “uber jar”,但請注意,千萬不要包括Hadoop或Spark庫,這些在運行時將 被添加。 |
Driver program(驅動程序) | 運行應用程序的main()函數和創建SparkContext |
Cluster manager(集群管理器) | 獲取集群上資源的外部服務(如獨立管理器,Mesos,YARN) |
Deploy mode(部署模式) | 區別在于驅動程序在哪運行。 在“集群”模式下,框架在集群內啟動驅動。 在“客戶端”模式下,提交者啟動在集群外啟動驅動程序。 |
Worker node(工作節點) | 在集群中運行應用程序代碼的任何節點 |
Executor(執行器) | 在工人節點上啟動應用程序的進程,并負責運行任務和在內存或磁盤存儲數據. 每個應用程序都有自己的執行器。 |
Task(任務) | 工作單元,將被送到執行器 |
Job(工作) | 包含多個任務的并行計算,這些任務獲得Spark動作的響應(如save(保存),?collect(收集))\ 您將看到這個詞被用在驅動的日志中。 |
Stage(階段) | 每個工作被分成較小的相互依賴的任務階段?(類似于MapReduce的map和reduce階段), 您將看到這個詞被用在驅動的日志中。 |
?
轉載于:https://my.oschina.net/newlife111/blog/415376
總結
以上是生活随笔為你收集整理的Spark集群模式概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用git管理源码之文件状态和工作区理解
- 下一篇: percona-Toolkit