1. 程式人生 > >面試了10為大資料開發者,總結了幾道常見面試題

面試了10為大資料開發者,總結了幾道常見面試題

前面一段時間給公司面試了10個大資料開發的人,自己總結了50道面試題,在此,我分享給大家,希望大家在五月份要找工作的朋友,我的這篇文章能給你有所幫助。

大綱

kafka的message包括哪些資訊

怎麼檢視kafka的offset

一、Map端的shuffle

二、Reduce端的shuffle

spark叢集運算的模式

讀:

1、跟namenode通訊查詢元資料,找到檔案塊所在的datanode伺服器

2、挑選一臺datanode(就近原則,然後隨機)伺服器,請求建立socket流

3、datanode開始傳送資料(從磁盤裡面讀取資料放入流,以packet為單位來做校驗)

4、客戶端以packet為單位接收,現在本地快取,然後寫入目標檔案

寫:

1、根namenode通訊請求上傳檔案,namenode檢查目標檔案是否已存在,父目錄是否存在

2、namenode返回是否可以上傳

3、client請求第一個 block該傳輸到哪些datanode伺服器上

4、namenode返回3個datanode伺服器ABC

5、client請求3臺dn中的一臺A上傳資料(本質上是一個RPC呼叫,建立pipeline),A收到請求會繼續呼叫B,然後B呼叫C,將真個pipeline建立完成,逐級返回客戶端

6、client開始往A上傳第一個block(先從磁碟讀取資料放到一個本地記憶體快取),以packet為單位,A收到一個packet就會傳給B,B傳給C;A每傳一個packet會放入一個應答佇列等待應答

7、當一個block傳輸完成之後,client再次請求namenode上傳第二個block的伺服器。

RDD中reduceBykey與groupByKey哪個效能好,為什麼

reduceByKey:reduceByKey會在結果傳送至reducer之前會對每個mapper在本地進行merge,有點類似於在MapReduce中的combiner。這樣做的好處在於,在map端進行一次reduce之後,資料量會大幅度減小,從而減小傳輸,保證reduce端能夠更快的進行結果計算。

groupByKey:groupByKey會對每一個RDD中的value值進行聚合形成一個序列(Iterator),此操作發生在reduce端,所以勢必會將所有的資料通過網路進行傳輸,造成不必要的浪費。同時如果資料量十分大,可能還會造成OutOfMemoryError。

通過以上對比可以發現在進行大量資料的reduce操作時候建議使用reduceByKey。不僅可以提高速度,還是可以防止使用groupByKey造成的記憶體溢位問題。

spark sql怎麼取資料的差集

spark2.0的瞭解

rdd 怎麼分割槽寬依賴和窄依賴

spark streaming 讀取kafka資料的兩種方式

這兩種方式分別是:

kafka的資料存在記憶體還是磁碟

怎麼解決kafka的資料丟失

答案

由於答案太多,我做了一個word文件,由於開發者知識庫不能上傳檔案,需要答案可以加小編的qq交流群710219868,邀請碼風火在裡面直接獲取文件,也歡迎招聘者,找工作的來,提供一個更大的平臺