spark 應用提交流程
\spark-master\spark-master\core\src\main\scala\org\apache\spark\deploy\sparksubmit.scala
override def main(args: array[string]): unit =
}override protected def loginfo(msg: => string): unit = printmessage(msg)
override protected def logwarning(msg: => string): unit = printmessage(s"warning: $msg")
override def dosubmit(args: array[string]): unit = catch }}
#呼叫其提交函式
submit.dosubmit(args)
}dosubmit的實現如下:
def dosubmit(args: array[string]): unit =
submit的實現如下:
下面這個函式中的呼叫流程是dorunmain->runmain
private def submit(args: sparksubmitarguments, uninitlog: boolean): unit =
})} catch
} else
}} else
private def runmain(
childargs: seq[string],
childclasspath: seq[string],
sparkconf: sparkconf,
childmainclass: string,
verbose: boolean): unit = else
thread.currentthread.setcontextclassloader(loader)
for (jar <- childclasspath)
var mainclass: class[_] = null
try catch
#建立類的例項
} else
}@tailrec
def findcause(t: throwable): throwable = t match
try catch
}於此同時在dosubmit中提到action有四種,我們之前看了submit的action,平時我們通過shell啟動的的過程中會傳遞乙個sparksubmitaction.print_version
case sparksubmitaction.print_version => printversion()
}在printversion 中我們就看到了熟悉的spark字樣
private def printversion(): unit =
使用Spark開發應用程式,並將作業提交到伺服器
由於一些原因在windows上配置未成功 應該是可以配置成功的 我是在linux上直接使用pycharm,在linux的好處是,環境可能導致的一切問題不復存在 111 新建乙個普通python工程 程式設計環境使用spark使用的python環境 222 配置spark環境 進入下圖 新增2個相應屬...
spark應用程式的執行架構
spark應用程式的執行架構 幾個基本概念 1 job 包含多個task組成的平行計算,往往由action催生。2 stage job的排程單位。3 task 被送到某個executor上的工作單元。4 taskset 一組關聯的,相互之間沒有shuffle依賴關係的任務組成的任務集。乙個應用程式由...
Spark應用程式的執行架構
1 簡單的說 由driver向集群申請資源,集群分配資源,啟動ex ecutor。driver將spark應用程式的 和檔案傳送給executor。executor上執行task,執行完之後將結果返回給driver或者寫入外界。2 複雜點說 提交應用程式,構建sparkcontext,構建dag圖,...