原理図:
マスタークラスの場所:org.apache.spark.deploy.master火花core_2.11-2.1.0.jarのカテゴリの下にマスター
// コードの切片の一部 // 登録要求アプリケーション処理 ケース RegisterApplication(説明、ドライバ)=> // マスタ状態は、スタンバイ・マスターアクティブ即ち現在のマスター、STANDBYマスターでない場合 // 次に要求アプリケーション、何も乾燥していないだろうサインアップ // いくつかのドライバーからTODOを防ぐ繰り返し登録を IF(状態== RecoveryState.STANDBY){ // 送信応答、無視していない } 他{ LOGINFO(「アプリケーションの登録」 + description.name) / / ApplicationDescription情報と、にApplicationInfo作成 =ヴァルのアプリを起動しますcreateApplication(解説、ドライバ) // アプリケーションの登録 // にApplicationInfoバッファーを加え、アプリケーション--waitingAppsがスケジュールされるのを待っているキューに入れられ registerApplication(APP)// コードを参照、詳細:コード1 LOGINFO(" 登録アプリケーション" + + description.nameを" IDと" + app.id) // 永続性の永続エンジンにApplicationInfoを使用 persistenceEngine.addApplication(APP) // でappclientのSparkDeploySchedulerBackendに逆、ClientActorは、メッセージ、すなわちRegisteredApplicationの送信 driver.send(RegisteredApplicationを(app.id、セルフ)) スケジュール()// スケジュール再スケジュール、 -これまでに完成したアプリケーションの登録 } 。コード1 プライベート DEF registerApplication(APP:にApplicationInfo):単位= { ヴァルappAddress = app.driver.address IF (addressToApp.contains(appAddress)){ (LOGINFO " 同じアドレスの再登録ファイルアプリケーションにしようとしました:" + appAddress) リターン } applicationMetricsSystem.registerSource(app.appSource) // 情報が実際APPメモリ・キャッシュに追加される アプリ+ = アプリ idToApp(app.id) = アプリ endpointToApp(app.driver) = アプリ addressToApp(appAddress) = アプリ // APPは、待ち行列スケジューリングwaitingAppsあるArrayBufferに添加 waitingApps + = アプリ IF (リバースプロキシ){ webUi.addProxyTargets(app.id、app.desc.appUiUrl) } }