大數據開發崗面試複習30天沖刺 - 日積月累,每日五題【Day18】——Spark5

manor的大數據奮鬥之路 2021-08-15 21:37:02 阅读数:592

本文一共[544]字,预计阅读时长:1分钟~
每日 day18 day spark5 spark

前言

大家好,我是程序員manor。作為一名大數據專業學生、愛好者,深知面試重要性,很多學生已經進入暑假模式,暑假也不能懈怠,正值金九銀十的秋招
接下來我准備用30天時間,基於大數據開發崗面試中的高頻面試題,以每日5題的形式,帶你過一遍常見面試題及恰如其分的解答。

相信只要一路走來,日積月累,我們終會在最高處見。
以古人的話共勉:道阻且長,行則將至;行而不輟,未來可期!

在這裏插入圖片描述

本欄目大數據開發崗高頻面試題主要出自大數據技術專欄的各個小專欄,由於個別筆記上傳太早,排版雜亂,後面會進行原文美化、增加。



不要往下滑了,
默默想5min,
看看這5道面試題你都會嗎?

面試題 01、Spark on Mesos中,什麼是的粗粒度分配,什麼是細粒度分配,各自的優點和缺點是什麼?
面試題02、driver的功能是什麼?
面試題 03、Spark技術棧有哪些組件,每個組件都有什麼功能,適合什麼應用場景?
面試題04、Spark中Worker的主要工作是什麼?
面試題05、Mapreduce和Spark的都是並行計算,那麼他們有什麼相同和區別?

在這裏插入圖片描述

在這裏插入圖片描述

以下答案僅供參考:

面試題 01、Spark on Mesos中,什麼是的粗粒度分配,什麼是細粒度分配,各自的優點和缺點是什麼?

1)粗粒度:啟動時就分配好資源, 程序啟動,後續具體使用就使用分配好的資源,不需要再分配資源;優點:作業特別多時,資源複用率高,適合粗粒度;缺點:容易資源浪費,假如一個job有1000個task,完成了999個,還有一個沒完成,那麼使用粗粒度,999個資源就會閑置在那裏,資源浪費。
2)細粒度分配:用資源的時候分配,用完了就立即回收資源,啟動會麻煩一點,啟動一次分配一次,會比較麻煩。

面試題02、driver的功能是什麼?

1)一個Spark作業運行時包括一個Driver進程,也是作業的主進程,具有main函數,並且有SparkContext的實例,是程序的入口點;
2)功能:負責向集群申請資源,向master注册信息,負責了作業的調度,負責作業的解析、生成Stage並調度Task到Executor上。包括DAGScheduler, TaskScheduler。

面試題03、Spark技術棧有哪些組件,每個組件都有什麼功能,適合什麼應用場景?

可以畫一個這樣的技術棧圖先,然後分別解釋下每個組件的功能和場景
1)Spark core:是其它組件的基礎,spark的內核,主要包含:有向循環圖、RDD、Lingage、Cache、broadcast等,並封裝了底層通訊框架, 是Spark的基礎。
2)SparkStreaming是一個對實時數據流進行高通量、容錯處理的流式處理系統,可以對多種數據源(如Kafka、Flume、Twitter、Zero和TCP 套接字) 進行類似Map、Reduce和Join等複雜操作,將流式計算分解成一系列短小的批處理作業。 3)Spark sql:Shark是SparkSQL的前身,Spark SQL的一個重要特點是其能够統一處理關系錶和RDD,使得開發人員可以輕松地使用SQL命令進行外部查詢, 同時進行更複雜的數據分析。
4)BlinkDB :是一個用於在海量數據上運行交互式 SQL 查詢的大規模並行查詢引擎,它允許用戶通過權衡數據精度來提昇查詢響應時間,其數據的精度 被控制在允許的誤差範圍內。
5)MLBase是Spark生態圈的一部分專注於機器學習,讓機器學習的門檻更低,讓一些可能並不了解機器學習的用戶也能方便地使用MLbase。MLBase分為四部分:MLlib、MLI、ML Optimizer和MLRuntime。
6)GraphX是Spark中用於圖和圖並行計算。huffle操作或者僅有較少shuffle操作的Spark作業,可以大大减少性能開銷。

面試題04、Spark中Worker的主要工作是什麼?

主要功能:管理當前節點內存,CPU的使用狀况,接收master分配過來的資源指令,通過ExecutorRunner啟動程序分配任務,worker就類似於包工頭, 管理分配新進程,做計算的服務,相當於process服務。
需要注意的是:
1)worker會不會匯報當前信息給master,worker心跳給master主要只有workid,它不會發送資源信息以心跳的方式給mater,master分配的時候就知道work, 只有出現故障的時候才會發送資源。
2)worker不會運行代碼,具體運行的是Executor是可以運行具體appliaction寫的業務邏輯代碼,操作代碼的節點,它不會運行程序的代碼的。

面試題05、Mapreduce和Spark的都是並行計算,那麼他們有什麼相同和區別?

兩者都是用mr模型來進行並行計算:
1)hadoop的一個作業稱為job,job裏面分為map task和reduce task,每個task都是在自己的進程中運行的,當task結束時,進程也會結束。
2)spark用戶提交的任務成為application,一個application對應一個SparkContext,app中存在多個job,每觸發一次action操作就會產生一個job。 這些job可以並行或串行執行,每個job中有多個stage,stage是shuffle過程中DAGSchaduler通過RDD之間的依賴關系劃分job而來的,每個stage裏面有多個task, 組成taskset有TaskSchaduler分發到各個executor中執行,executor的生命周期是和app一樣的,即使沒有job運行也是存在的,所以task可以快速啟動讀取內存 進行計算。
3)hadoop的job只有map和reduce操作,錶達能力比較欠缺而且在mr過程中會重複的讀寫hdfs,造成大量的io操作,多個job需要自己管理關系。
4)spark的迭代計算都是在內存中進行的,API中提供了大量的RDD操作如join,groupby等,而且通過DAG圖可以實現良好的容錯。

總結

今天我們複習了面試中常考的Spark相關的五個問題,你做到心中有數了麼?
其實做這個專欄我也有私心,就是希望借助每天寫一篇面試題,督促自己學習,以免在面試期間尷尬!平時不流汗,面試多流淚!
對了,如果你的朋友也在准備面試,請將這個系列扔給他,
好了,今天就到這裏,學廢了的同學,記得在評論區留言:打卡。給同學們以激勵。
在這裏插入圖片描述

版权声明:本文为[manor的大數據奮鬥之路]所创,转载请带上原文链接,感谢。 https://gsmany.com/2021/08/20210815213646794n.html