面試大數據開發工程師崗位遇到的技術問題

1.java,scala,python三種語言在使用當中的區別

回答:java和scala都需要在jvm上運行,python不需要,java是面向對象式的編程語言,scala可以說是集成了java的編程特點之外又加上了函數式編程表達,使其更加表達更加的簡潔,但是正是scala的簡潔也會提高了入門的門檻。python跟scala有些表達上面很類似,pyhon更多的是應用在實現算法上面,不適合使用在大量數據實時交互上,scala現在是很多大數據框架中例如spark和kafka的底層語言,所以在使用大數據計算的時候也是可以學習scala來替代java的。

2.hdfs使用多備份的優缺點有哪些?除了保證數據的安全性。

優點:(1)處理流式數據訪問,一次寫入,多次讀取的操作(2)適合存儲比較大的文件(3)適合部署在廉價的機器上

缺點:(1)低延遲的數據訪問,由於數據量很大,想要實現豪秒級別的數據訪問這是不現實的(2)小文件索引,不管四1M還是125M的數據都會把元數據存儲到namenode上,如果小文件特別多,也就會無形中增加了namenode的壓力。

3.現在有一個集羣10臺機器,每臺機器256G,40cores,現在要實現處理1T的hdfs數據,怎麼分配spark資源?分配完之後計算完大概要多長時間,爲什麼要這樣子配置?

4.spark中的數據傾斜?

數據傾斜概念:數據傾斜就是數據在平行處理的時候,出現了一部分數據顯然多於其他部分的數據,導致這一部分的數據處理的速度達到了整個數據集處理的瓶頸。

數據傾斜出現的原因:(1)數據源造成的:hdfs或者kafka (2)如果一個job中包含多個stage的話,並且stage之間存在依賴關係的話,也可能是因爲上一個stage的shuffle數據造成的。

數據傾斜解決的方法:(1)sparkstreaming讀取kafka數據的時候,kafka中某一個topic的partition個數對應task個數,如果某一個partition的數據量很大,處理的時候肯定會造成數據傾斜的現象。避免出現傾斜的方法,producer使用隨機的partitioner,然後數據就會隨機的分配到partition中,這樣子一般不會造成數據傾斜(2)spark的shuffle的過程增加並行度

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