您好,登錄后才能下訂單哦!
這篇文章主要講解了“Standalone cluster模式下怎么生成一個DriverDescription類型的消息”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Standalone cluster模式下怎么生成一個DriverDescription類型的消息”吧!
先看看代碼,這個類代碼比較短,目錄是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) } }
創建一個RestSubmissionClient的client,然后將消息提交給client,消息的格式為:
( appResource, mainClass, appArgs, sparkProperties, env)
client.createSubmission(submitRequest)
client.createSubmission命令做哪些事呢?他就是提交消息給服務端,真實的處理者是服務端,是RestSubmissionServer類或者它的子類。對于獨立集群來說,就是StandaloneRestServer來處理的,我們就只看submit命令的處理邏輯就可以了。
相關的函數有兩個:
私有方法buildDriverDescription和重寫接口方法handleSubmit
handleSubmit里調用了前一個方法,最關鍵的代碼是兩行:
val driverDescription = buildDriverDescription(submitRequest) val response = masterEndpoint.askSync[DeployMessages.SubmitDriverResponse]( DeployMessages.RequestSubmitDriver(driverDescription))
生成一個DriverDescription類型的消息,然后給Master發送RequestSubmitDriver消息,讓Master來調度執行我們的spark程序,就是這里的driver。
接下來,就進入了Master的處理流程了。
感謝各位的閱讀,以上就是“Standalone cluster模式下怎么生成一個DriverDescription類型的消息”的內容了,經過本文的學習后,相信大家對Standalone cluster模式下怎么生成一個DriverDescription類型的消息這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。