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