鎖屏面試題百日百刷-Spark篇(二十)
鎖屏面試題百日百刷,每個(gè)工作日?qǐng)?jiān)持更新面試題。鎖屏面試題app、小程序現(xiàn)已上線,官網(wǎng)地址:https://www.demosoftware.cn。已收錄了每日更新的面試題的所有內(nèi)容,還包含特色的解鎖屏幕復(fù)習(xí)面試題、每日編程題目郵件推送等功能。讓你在面試中先人一步!接下來(lái)的是今日的面試題:
1.簡(jiǎn)要描述Spark寫(xiě)數(shù)據(jù)的流程?
1)RDD調(diào)用compute方法,進(jìn)行指定分區(qū)的寫(xiě)入
2)CacheManager中調(diào)用BlockManager判斷數(shù)據(jù)是否已經(jīng)寫(xiě)入,如果未寫(xiě),則寫(xiě)入3)BlockManager中數(shù)據(jù)與其他節(jié)點(diǎn)同步
4)BlockManager根據(jù)存儲(chǔ)級(jí)別寫(xiě)入指定的存儲(chǔ)層
5)BlockManager向主節(jié)點(diǎn)匯報(bào)存儲(chǔ)狀態(tài)中
2.介紹一下你對(duì)Unified Memory Management內(nèi)存管理模型的理解?
Spark中的內(nèi)存使用分為兩部分:執(zhí)行(execution)與存儲(chǔ)(storage)。執(zhí)行內(nèi)存主要用于shuffles、joins、sorts和aggregations,存儲(chǔ)內(nèi)存則用于緩存或者跨節(jié)點(diǎn)的內(nèi)部數(shù)據(jù)傳輸。

3.如何理解Spark的動(dòng)態(tài)內(nèi)存占用機(jī)制?

4.列舉你了解的序列化方法,并談?wù)勑蛄谢惺裁春锰帲?/strong>
1)序列化:將對(duì)象轉(zhuǎn)換為字節(jié)流,本質(zhì)也可以理解為將鏈表的非連續(xù)空間轉(zhuǎn)為連續(xù)空間存儲(chǔ)的數(shù)組,可以將數(shù)據(jù)進(jìn)行流式傳輸或者塊存儲(chǔ),反序列化就是將字節(jié)流轉(zhuǎn)為對(duì)象。kyro,Java的serialize等
2)spark中的序列化常見(jiàn)于
· 進(jìn)程間通訊:不同節(jié)點(diǎn)的數(shù)據(jù)傳輸
· 數(shù)據(jù)持久化到磁盤(pán)
在spark中扮演非常重要的角色,序列化和反序列化的程度會(huì)影響到數(shù)據(jù)傳輸速度,甚至影響集群的傳輸效率,因此,高效的序列化方法有2點(diǎn)好處:a.提升數(shù)據(jù)傳輸速度,b.提升數(shù)據(jù)讀寫(xiě)IO效率。
5.常見(jiàn)的數(shù)壓縮方式,你們生產(chǎn)集群采用了什么壓縮方式,提升了多少效率?
1)數(shù)據(jù)壓縮,大片連續(xù)區(qū)域進(jìn)行數(shù)據(jù)存儲(chǔ)并且存儲(chǔ)區(qū)域中數(shù)據(jù)重復(fù)性高的狀況下,可以使用適當(dāng)?shù)膲嚎s算法。
數(shù)組,對(duì)象序列化后都可以使用壓縮,數(shù)更緊湊,減少空間開(kāi)銷(xiāo)。常見(jiàn)的壓縮方式有snappy,LZO,gz等
2)Hadoop生產(chǎn)環(huán)境常用的是snappy壓縮方式(使用壓縮,實(shí)際上是CPU換IO吞吐量和磁盤(pán)空間,所以如果CPU利用率不高,不忙的情況下,可以大大提升集群處理效率)。snappy壓縮比一般20%~30%之間,并且壓縮和解壓縮效率也非常高(參考數(shù)據(jù)如下):
(1)GZIP的壓縮率最高,但是其實(shí)CPU密集型的,對(duì)CPU的消耗比其他算法要多,壓縮和解壓速度也慢;
(2)LZO的壓縮率居中,比GZIP要低一些,但是壓縮和解壓速度明顯要比GZIP快很多,解壓速度快的更多;
(3)Zippy/Snappy的壓縮率最低,而壓縮和解壓速度要稍微比LZO要快一些。

提升了多少效率可以從2方面回答,1)數(shù)據(jù)存儲(chǔ)節(jié)約多少存儲(chǔ),2)任務(wù)執(zhí)行消耗時(shí)間節(jié)約了多少,可以舉個(gè)實(shí)際例子展開(kāi)描述。