面試了10爲大數據開發者,總結了幾道常見面試題

大綱


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




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章