鎖屏面試題百日百刷-Spark篇(二)
鎖屏面試題百日百刷,每個工作日堅持更新面試題。鎖屏面試題app、小程序現(xiàn)已上線,官網(wǎng)地址:https://www.demosoftware.cn。已收錄了每日更新的面試題的所有內(nèi)容,還包含特色的解鎖屏幕復(fù)習(xí)面試題、每日編程題目郵件推送等功能。讓你在面試中先人一步!接下來的是今日的面試題:
1.簡述Spark的架構(gòu)與作業(yè)提交流程(畫圖講解,注明各個部分的作用)(重點)?

spark-submit?提交代碼,執(zhí)行?new SparkContext(),在?SparkContext?里構(gòu)造?DAGScheduler?和?TaskScheduler。
TaskScheduler?會通過后臺的一個進程,連接?Master,向?Master?注冊?Application。
Master?接收到?Application?請求后,會使用相應(yīng)的資源調(diào)度算法,在?Worker?上為這個?Application?啟動多個?Executer。
Executor?啟動后,會自己反向注冊到?TaskScheduler?中。所有?Executor?都注冊到?Driver?上之后,SparkContext?結(jié)束初始化,接下來往下執(zhí)行我們自己的代碼。
每執(zhí)行到一個?Action,就會創(chuàng)建一個?Job。Job?會提交給?DAGScheduler。
DAGScheduler?會將?Job劃分為多個?stage,然后每個?stage?創(chuàng)建一個?TaskSet。
TaskScheduler?會把每一個?TaskSet?里的?Task,提交到?Executor?上執(zhí)行。
Executor?上有線程池,每接收到一個?Task,就用?TaskRunner?封裝,然后從線程池里取出一個線程執(zhí)行這個?task。(TaskRunner?將我們編寫的代碼,拷貝,反序列化,執(zhí)行?Task,每個?Task?執(zhí)行?RDD?里的一個?partition)
2.Spark on yarn 作業(yè)執(zhí)行流程,yarn-client 和 yarn cluster 有什么區(qū)別?
Spark On Yarn 的優(yōu)勢 1. Spark 支持資源動態(tài)共享,運行于 Yarn 的框架都共享一個集中配置好的資源池 2. 可以很方便的利用 Yarn 的資源調(diào)度特性來做分類·,隔離以及優(yōu)先級控制負載,擁有更靈活的調(diào)度策略 3. Yarn 可以自由地選擇 executor 數(shù)量 4. Yarn 支持 Spark 安全的集群管理器,使用 Yarn,Spark 可以運行于 Kerberized?Hadoop 之上,在它們進程之間進行安全認證
yarn-client 和 yarn cluster 的異同
1. 從廣義上講,yarn-cluster 適用于生產(chǎn)環(huán)境。而 yarn-client 適用于交互和調(diào)試,也就是希望快速地看到application 的輸出。
2. 從深層次的含義講,yarn-cluster 和 yarn-client 模式的區(qū)別其實就是 Application Master 進程的區(qū)別,yarn-cluster 模式下,driver 運行在 AM(Application Master)中,它負責(zé)向 YARN 申請資源,并監(jiān)督作業(yè)的運行狀況。當(dāng)用戶提交了作業(yè)之后,就可以關(guān)掉 Client,作業(yè)會繼續(xù)在 YARN 上運行。然而 yarn-cluster 模式不適合運行交互類型的作業(yè)。而 yarn-client 模式下,Application Master 僅僅向 YARN 請求 executor,Client 會和請求的 container 通信來調(diào)度他們工作,也就是說 Client 不能離開。
3.Repartition和Coalesce關(guān)系與區(qū)別
1)關(guān)系:
兩者都是用來改變RDD的partition數(shù)量的,repartition底層調(diào)用的就是coalesce方法:coalesce(numPartitions, shuffle = true)
2)區(qū)別:
repartition一定會發(fā)生shuffle,coalesce根據(jù)傳入的參數(shù)來判斷是否發(fā)生shuffle 一般情況下增大rdd的partition數(shù)量使用repartition,減少partition數(shù)量時使用coalesce