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