Hadoop1 VS Hadoop2

  1. JobTracker 是 Map Reduce 的集中處理點,存在單點故障。

  2. JobTracker 完成了太多的任務,造成了過多的資源消耗,當 Map Reduce job 非常多的時候,會造成很大的記憶體開銷,潛在來說,也增加了JobTracker fail 的風險,這也是業界普遍總結出老 Hadoop 的 Map Reduce只能支援4000節點主機的上限。

  3. 在 TaskTracker 端,以 Map/Reduce task 的數目作為資源的表示過於簡單,沒有考慮到 cpu/記憶體的佔用情況,如果兩個大記憶體消耗的 task 被調度到了一塊,很容易出現 OOM。

  4. 在 TaskTracker 端,把資源強制劃分為 map task slot 和 reduce task slot ,如果當系統中只有map task或者只有reduce task的時候,會造成資源的浪費,也就是前面提過的集群資源利用的問題。

  5. 原始程式碼層面分析的時候,會發現代碼非常的難讀,常常因為一個 class 做了太多的事情,代碼量達3000多行,造成class 的任務不清晰,增加 bug 修復和版本維護的難度。

  6. 從操作的角度來看,現在的 Hadoop MapReduce 框架在有任何重要的或者不重要的變化(例如bug修復,性能提升和特性化)時,都會強制進行系統級別的升級更新。更糟的是,它不管使用者的喜好,強制讓分散式集群系統的每一個使用者端同時更新。這些更新會讓使用者為了驗證他們之前的應用程式是不是適用新的 Hadoop 版本而浪費大量時間。

Last updated