這篇文章主要講解了“Standalone cluster模式下怎么生成一個(gè)DriverDescription類(lèi)型的消息”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Standalone cluster模式下怎么生成一個(gè)DriverDescription類(lèi)型的消息”吧!
我們提供的服務(wù)有:成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、萊山ssl等。為成百上千家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的萊山網(wǎng)站制作公司
先看看代碼,這個(gè)類(lèi)代碼比較短,目錄是deploy/rest/下。
private[spark] class RestSubmissionClientApp extends SparkApplication { /** Submits a request to run the application and return the response. Visible for testing. */ def run( appResource: String, mainClass: String, appArgs: Array[String], conf: SparkConf, env: Map[String, String] = Map()): SubmitRestProtocolResponse = { val master = conf.getOption("spark.master").getOrElse { throw new IllegalArgumentException("'spark.master' must be set.") } val sparkProperties = conf.getAll.toMap val client = new RestSubmissionClient(master) val submitRequest = client.constructSubmitRequest( appResource, mainClass, appArgs, sparkProperties, env) client.createSubmission(submitRequest) } override def start(args: Array[String], conf: SparkConf): Unit = { if (args.length < 2) { sys.error("Usage: RestSubmissionClient [app resource] [main class] [app args*]") sys.exit(1) } val appResource = args(0) val mainClass = args(1) val appArgs = args.slice(2, args.length) val env = RestSubmissionClient.filterSystemEnvironment(sys.env) run(appResource, mainClass, appArgs, conf, env) } }
創(chuàng)建一個(gè)RestSubmissionClient的client,然后將消息提交給client,消息的格式為:
( appResource, mainClass, appArgs, sparkProperties, env)
client.createSubmission(submitRequest)
client.createSubmission命令做哪些事呢?他就是提交消息給服務(wù)端,真實(shí)的處理者是服務(wù)端,是RestSubmissionServer類(lèi)或者它的子類(lèi)。對(duì)于獨(dú)立集群來(lái)說(shuō),就是StandaloneRestServer來(lái)處理的,我們就只看submit命令的處理邏輯就可以了。
相關(guān)的函數(shù)有兩個(gè):
私有方法buildDriverDescription和重寫(xiě)接口方法handleSubmit
handleSubmit里調(diào)用了前一個(gè)方法,最關(guān)鍵的代碼是兩行:
val driverDescription = buildDriverDescription(submitRequest) val response = masterEndpoint.askSync[DeployMessages.SubmitDriverResponse]( DeployMessages.RequestSubmitDriver(driverDescription))
生成一個(gè)DriverDescription類(lèi)型的消息,然后給Master發(fā)送RequestSubmitDriver消息,讓Master來(lái)調(diào)度執(zhí)行我們的spark程序,就是這里的driver。
接下來(lái),就進(jìn)入了Master的處理流程了。
感謝各位的閱讀,以上就是“Standalone cluster模式下怎么生成一個(gè)DriverDescription類(lèi)型的消息”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Standalone cluster模式下怎么生成一個(gè)DriverDescription類(lèi)型的消息這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!