好程式設計師大資料培訓之Hadoop常見問題

好程式設計師發表於2020-09-29

  好程式設計師大資料培訓 Hadoop 常見問題解答, Hadoop 的常見問題有很多,以前也曾給讀者們分享過一些,本篇文章繼續給讀者們分享一些 Hadoop 常見問題解答,感興趣的小夥伴就來了解一下吧。

 

  1 100 個以上 hadoop 節點,一般怎麼開發,運維 ? 任務很多的情況下任務資源怎麼分配,任務執行順序是定時指令碼還是別的什麼方式控制 ?

 

  a. 首先大資料的應用開發和 hadoop 叢集的規模是沒有關係,你指的是叢集的搭建和運維嗎,對於商用的 hadoop 系統來說涉及到很多東西。

 

  b. 任務的分配是有 hadoop 的排程器的排程策略決定的,預設為 FIFO 排程,商業叢集一般使用多佇列多使用者排程器。

 

  c. 任務的執行順序是有使用者控制的,你自然可以定時啟動,也可以手動啟動。

 

  2 、基於 Hadoop 做開發,是否必須會使用 Java ,使用其他開發語言是否無法更好的融入整個 Hadoop 的開發體系 ?

 

  基於Hadoop 做開發可以使用任何語言,因為 hadoop 提高了 streaming 程式設計框架和 pipes 程式設計介面, streaming 框架下使用者可以使用任何可以操作標準輸入輸出的計算機語言來開發 hadoop 應用。

 

  3 、在 reduce 階段老是卡在最後階段很長時間,在網上查的說是有可能是資料傾斜,我想問這個有啥解決方法嗎 ?

 

  a. 你這個就是資料傾斜啊,好多資料都集中在一個 reduce 裡其他 reduce 裡分配的資料比較少。預設情況下決定哪些資料分配到哪個 reduce 是由 reduce 個數和 partiiton 分割槽決定的預設是對 key 進行 hash 運算,一般情況下用 mapreuce 傾斜很少除非你用的 HIVE

 

  b.reduce 分為 3 個子階段: shuffle sort reduce ,如果 reduce 整個過程耗時較長,建議先看一下監控介面是卡在哪個階段,如果是卡在 shuffle 階段往往是網路阻塞問題,還有就是某 reduce 資料量太大,也就是你所說的資料傾斜問題,這種問題往往因為某個 key value 太多,解決方法是: diyi ,預設的 partiiton 可能不適合你的需求,你可以自定義 partiiton; 第二就是在 map 端截斷,儘量讓達到每個 reduce 端的資料分佈均勻。

 

  4 、非大資料的專案能否用 hadoop?

 

  非大資料專案是否可以用Hadoop 的關鍵問題在於是否有海量資料的儲存,計算,以及分析挖掘等需求,如果現有系統已經很好滿足當前需求那麼就沒有必要使用 Hadoop ,沒有必要使用並不意味這不能使用 Hadoop ,很多傳統系統能做的 Hadoop 也是可以做的。

 

  例如使用HDFS 來代替 LINUX NFS ,使用 MapReduce 來代替單伺服器的統計分析相關任務,使用 Hbase 代替 Mysql 等關聯式資料庫等,在資料量不大的情況下通常 Hadoop 叢集肯定比傳統系統消耗更多的資源。

 

  5 hadoopmapreduce 和第三方資源管理排程系統如何整合 ?

 

  Hadoop 的排程器設計的一個原則就是可插拔式排程器框架,因此是很容易和第三方排程器整合的,例如公平排程器 FairScheduler 和容量排程器 CapacityScheduler ,並配置 mapred-site.xml mapreduce.jobtracker.taskscheduler 以及排程器本身的配置引數。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913864/viewspace-2725018/,如需轉載,請註明出處,否則將追究法律責任。

相關文章