在整個spark任務(wù)的編寫、提交、執(zhí)行分三個部分:
① 編寫程序和提交任務(wù)到集群中
②sparkContext的初始化
③觸發(fā)action算子中的runJob方法,執(zhí)行任務(wù)
目前創(chuàng)新互聯(lián)建站已為成百上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計、義馬網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
①編程spark程序的代碼
②打成jar包到集群中運(yùn)行
③使用spark-submit命令提交任務(wù)
在提交任務(wù)時,需要指定 --class 程序的入口(有main方法的類),
1) spark-submit --class xxx
2) ${SPARK_HOME}/bin/spark-class org.apache.spark.deploy.SparkSubmit $@
3) org.apache.spark.launcher.Main
submit(appArgs, uninitLog)
doRunMain()
runMain(childArgs, childClasspath, sparkConf, childMainClass, args.verbose)
childMainClass:…./.WordCount (自己編寫的代碼的主類)
mainClass = Utils.classForName(childMainClass)
val app: SparkApplication = if() {} else {new JavaMainApplication(mainClass)}
app.start(childArgs.toArray, sparkConf) // 通過反射調(diào)用mainClass執(zhí)行
// 到此為止,相當(dāng)于調(diào)用了我們的自己編寫的任務(wù)類的main方法執(zhí)行了。!??!
val mainMethod = klass.getMethod("main", new ArrayString.getClass)
mainMethod.invoke(null, args)
④開始執(zhí)行自己編寫的代碼
當(dāng)自己編寫的程序運(yùn)行到:new SparkContext()時,就開始了精妙而細(xì)致的sparkContext的初始化。
sparkContext的相關(guān)介紹:sparkContext是用戶通往spark集群的唯一入口,可以用來在spark集群中創(chuàng)建RDD、累加器和廣播變量。sparkContext也是整個spark應(yīng)用程序的一個至關(guān)重要的對象,是整個應(yīng)用程序運(yùn)行調(diào)度的核心(不是資源調(diào)度的核心)。在初始化sparkContext時,同時的會初始化DAGScheduler、TaskScheduler和SchedulerBackend,這些至關(guān)重要的對象。
sparkContext的構(gòu)建過程:
初始化 TaskScheduler
初始化 SchedulerBackend
初始化 DAGScheduler
driver向master注冊申請資源。
Worker負(fù)責(zé)啟動executor。
網(wǎng)站題目:spark任務(wù)運(yùn)行過程的源碼分析
URL網(wǎng)址:http://muchs.cn/article14/jpdjge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站改版、做網(wǎng)站、網(wǎng)站設(shè)計、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)