面試了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,邀請碼風火在裡面直接獲取文件,也歡迎招聘者,找工作的來,提供一個更大的平臺