本文轉載自公眾號: 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氛圍,歡迎釘釘掃碼加入!
對開源大數據和感興趣的同學可以加小編微信(下圖二維碼,備註“進群”)進入技術交流微信群。Apache
Spark技術交流社區公眾號,微信掃一掃關注