大數據

spark面試該準備點啥

本文轉載自公眾號: Spark學習技巧
作者:浪尖
原文鏈接:https://mp.weixin.qq.com/s/xcQOL2HyNB8Ro7QChu6Ngw


最近很多球友都說在準備面試,不知道準備點啥,尤其是spark,實際上浪尖分享的內容真的都掌握了,應對一般面試絕對沒問題,但是遺憾的事情是很多人都是處於不會主動蒐集資料,主動梳理知識,主動記憶整理知識,而是伸手要糧的境地。浪尖覺得這個是阻止你成長的罪魁禍手。前天跟朋友聚餐就說道這種情況,不努力,不加班給自己喂糧的,沒有足夠量和時間積累的人很難在一個領域裡有所建樹。

主動學習,保持激情,不斷提高~

言歸正傳,大部分面試者被面試的spark問題估計都會集中於spark core,spark streaming和spark sql,至於mllib和graphx這些估計都是瞭解項,當然也要逐步去學習structured streaming。所以今天浪尖就幫助大家梳理一下spark的主要知識點吧~

1. spark的runtime

這個主要是standalone模式下的master和worker,executor,driver,再加上yarn模式下的resourcemanager和nodemanager。要了解一個spark應用提交的過程,也即是driver和executor在集群管理器內部啟動的過程,然後就是rpc過程,各個角色的作用。

高手的問題就是如何給兩者分配合適內存,然後executor執行task傾斜的表現及如何解決。這些都在星球裡分享過了。然後如何對executor的存活掛掉、新增進行監控告警。executor動態分配表現及帶來的問題。

再高級一點就是driver和executor的類加載器及加載類的原理及過程,當然包括rpc,依賴傳輸,依賴更新,task調度等。

2.spark core

spark core顧名思義就是spark的核心內容,主要是rdd的五大特性及操作算子特點介紹。

DAG的生成,劃分,task的調度執行。

數據本地性原理及如何利用和會存在哪些隱患。這也在公眾號發過文章和視頻了。

reducebykey,groupbykey的區別等等類似算子對比,如何高效使用mappartition,然後foreachPartition與foreach之間的區別及底層實現原理,這些星球裡➕公眾號都發過了。

寬依賴,窄依賴等老生常談的不多說了...基礎都不去了解記憶的人面試不過很正常。

來點猛料,廣播變量的原理及演變過程,使用場景,使用廣播變量一定划算嗎?大變量咋辦呢?Spark sreaming定期更新廣播變量的實現。

累加器的原理及應用場景,累加器使用有陷阱麼?

序列化,反序列化,閉包,垃圾回收機制(過期rdd的回收,cache的回收,shuffle數據回收等)。這個星球裡打過了~

checkpoint如何在spark core應用呢?何種場景適合?源碼系列教程。

並行度相關配置,這個星球裡也反覆強調了,合理設置可以大幅度提高性能。

害怕了嗎,還是就此打住吧,太多了~

3.spark streaming

spark streaming核心原理大家都知道是微批處理。
基於receiver和direct api兩種模式的原理,最好讀懂源碼。

主要是跟Kafka 結合的兩種模式的區別。

direct這種模式如何實現僅一次處理。

checkpoint的使用及問題。

如何進行狀態管理,upstatebykey,redis,hbase,alluxio作為狀態管理存儲設備的時候優缺點,然後就是故障恢復會引起的問題及如何避免等等吧。

合理設置批處理時間,為啥批處理時間不能太大,也不能太小,task傾斜,數據傾斜如何解決。

內存申請,kafka分區設置的依據是啥?

並行度問題,這個也是浪尖反覆強調的,徹底理解對spark任務調優幫助很大。

blockrdd和kafkardd的底層區別。

與spark sql和hivecontext結合使用。

廣播變量的使用及釋放機制等。

動態分區發現和topic發現機制。

executor存活監控,task執行情況監控,未處理隊列積累的健康告警(非常重要)等價於對lagsize的監控告警。

小文件問題,星球裡文章很詳細。根源上避免才是王道。順便提一句:為啥namenode那麼怕小文件呢?
作為7*24小時的應用程序,如何進行監控告警及故障自動恢復~

4.spark sql

在數倉的領域,實時處理都用它,而且structured streaming也逐步依賴於sql引擎了。

常見算子的使用及理解,並行度問題,大小表join,如何廣播小表。

join,group by等數據傾斜如何發現及處理方法,這個浪尖還專門錄製過視頻,星球裡球友應該都知道,不知道回去翻看一下。

常見的存儲格式,parquet,txt,json,orc對比及對性能的影響。

調優大部分也是針對並行度,文件大小,數據傾斜,task傾斜,內存和cpu合理設置等。

5.structured streaming

動態表,增量sql引擎,僅一次處理,維表join等非常好用,watermark,還有就是繁雜的join 機制。

當然限制還是很多的,期待後續版本。

spark streaming在spark 2.4的時候都沒更新了,後面就主推sql引擎相關內容了,還是值得期待的。
不過話雖這麼說,我覺得flink也相對好用,就是可能bug多些,新版本好點。


阿里巴巴開源大數據技術團隊成立Apache Spark中國技術社區,定期推送精彩案例,技術專家直播,問答區近萬人Spark技術同學在線提問答疑,只為營造純粹的Spark氛圍,歡迎釘釘掃碼加入!
image.png

對開源大數據和感興趣的同學可以加小編微信(下圖二維碼,備註“進群”)進入技術交流微信群。Apache
image.png
Spark技術交流社區公眾號,微信掃一掃關注
image.png

Leave a Reply

Your email address will not be published. Required fields are marked *