Hadoop 1.x 和 Hadoop 2.x 有什么区别?
前言
本文隸屬于專欄《1000個問題搞定大數據技術體系》,該專欄為筆者原創,引用請注明來源,不足和錯誤之處請在評論區幫忙指出,謝謝!
本專欄目錄結構和參考文獻請見1000個問題搞定大數據技術體系
正文
YARN
Hadoop 和 Hadoop 之間的最大不同是 YARN 。
YARN 是“ Yet Another Resource Negotiator ”的縮寫。
Hadoop 僅僅是 HDFS 和 MapReduce 計算框架的組合。
正如我們所看到的,在 Hadoop 中, YARN 位于 HDFS 層(依賴于服務器本地存儲)和計算框架(如 MapReduce 、 Spark )之間。
YARN 的主要功能是進行資源管理和調度。
在 Hadoop 中, MapReduce 是你實際可使用的唯一的計算框架,它直接與 HDFS 進行交互。
在 Hadoop 中, MapReduce 以與 Hadoop 中類似的方式執行數據處理。
那么哪個 Hadoop 組件在 Hadoop 中執行了集群資源管理和任務調度呢?
MapReduce 執行數據處理和集群資源管理的雙重任務。
架構區別
Hadoop 1 使用 MRvl 而 Hadoop 使用 MRv2 (也稱為 YARN )。
在 Hadoop 2 中,有一個全局 ResourceManager 進程來管理集群中的資源,且它運行在主節點上。
工作節點上將有單獨的 NodeManager 進程來執行數據處理任務。
在 Hadoop 1 中,有一個單獨的進程 JobTracker 來管理作業。
每個工作節點運行個工作于特定節點的 TaskTracker 進程來實際執行作業。
Hadoop 1 中的 JobTracker 負責執行調度和任務管理功能。
在 Hadoop 2 中, JobTracker 被分為調度和資源管理兩個功能:
- ResourceManager 處理調度任務;
- ApplicationMaster 負責特定應用的資源管理。
Hadoop 2 中的 ResourceManager 管理著以前由 Hadoop 中的 JobTracker 執行的幾個關鍵功能。
更準確地說, ResourceManager 執行 JobTracker 的一些任務,新的特定應用的 ApplicationMaster 負責 JobTracker 其余的工作。
在 Hadoop 1 中, JobTracker 在繁忙的集群中超負荷運轉,因為它同時負責資源管理和任務調度雙重任務。
JobTracker 資源管理和作業調度/監控兩個關鍵功能的分離減輕了專用守護程序的工作壓力。
Hadoop 2 中的 NodeManager 執行 Hadoop 中運行在每個節點上的 TaskTracker 負責的所有任務。
NodeManager 進程在集群中的工作節點上運行,并作為代理監視當前節點上任務的執行 ResourceManager 在 Hadoop 中作為純調度器使用,它與 MapReduce 之間沒有特殊連接。
而在 Hadoop 1 中, JobTracker 與 MapReduce 是高度耦合的。
高可用性
Hadoop 2 具有超高的可用性,可讓你運行 Standby NameNode 和 Standby ResourceManager 服務,這兩者都對集群運行至關重要。
在 Hadoop 1 中, NameNode 只有一個,存在單點故障風險。 如果 NameNode 服務器不可用,則對 HDFS 的所有訪問都將被中斷,導致整個集群不可用。
多計算引擎
在 Hadoop 1 中,無論使用 MapReduce 、 Hive 、 Pig 還是 Python 、 Ruby 的流模型,你只能使用 MapReduce 作為處理引擎。 根本沒有可用的替代引擎。
Hadoop 2 提供了多種處理引擎,如 MapReduce 、 Apache Spark 、 Apache Tez 等。
Hadoop 2 不僅支持批處理,而且支持多種應用類型,如:
- 批處理 MapReduce 、 Hive / Pig 和 Apache Tez
- 交互式 SQL 引擎- Apache Tez
- 在線數據庫一 HBase
- 流式處理 Apache Storm 、 Apache Spark 和 Apache Flink
- 內存模式(迭代應用)ー- Apache Spark
- 圖計算-- Giraph 、 Spark Graphx
- HPC MPI - OpenMPI
- 可擴展搜索. Apache Solr
- Hbase on YARN HOYA
雖然 MapReduce 可以勝任多種類型的工作,但是它并不適合所有的大數據用例。
Hadoop 1 一個經常為人詬病的地方是高延遲。
在 Hadoop 2 中,可以根據特定的用例類型,選擇合適的計算引擎。
Hadoop 1 用批處理的方式處理海量數據,在這種情況下,時間延遲并不是問題。
雖然 Hadoop 1 非常善于處理甚至包含 PB 級信息的大型非結構化數據集,但在實時數據集的實時分析中并不十分有效。
Hadoop 2 打破了 Hadoop 1 以批處理為中心的這種定位。
分離處理和調度
Hadoop 2 中的 YARN (下一代 MapReduce ,被稱為 YARN 或 MRv2 )標志著 Hadoop 在執行基本工作時有了根本性的不同。
YARN 被設計為一個通用的分布式應用程序管理框架,而不是像 MapReduce 在 Hadoop 1 中作為一體化資源管理器和性能引擎。
實際上,在更多情況下, YARN 被稱為“ Hadoop 操作系統”,因為它執行如下功能:
- 維護了一個可以使批處理、交互式和實時處理等計算引擎同時訪問相同 HDFS 數據的多租戶環境。
- 監控和管理應用的負載。
Hadoop 2 中的 MapReduce (也稱為 MRv2 )保留了它的處理能力,并成為了一個純粹的分布式計算框架。
資源分配
最初, Hadoop 1 沒有在同時運行的各種作業之間采用復雜的方式進行資源分配,而是采用了先進先出的資源分配模型,
這也意味著,長時間運行的作業會長期占用資源,這會有潛在的風險,會導致小而重要的作業因為長而不重要的作業占用資源而無法啟動。
在 Hadoop 的后續版本中,引入了名為“公平調度器”和“容量調度器”的復雜作業調度程序。
在 Hadoop 1 中,使用插槽( slots )的方式來管理資源,而在 Hadoop 2 中,則使用容器( container )來管理資源。
最后, Hadoop 1 和 Hadoop 2 在擴展能力上的最大差別在于, Hadoop 1 集群只可以擴展到大約 5000 個節點,而 Hadoop 2 集群可以擴展到 10000 個節點。
總結
以上是生活随笔為你收集整理的Hadoop 1.x 和 Hadoop 2.x 有什么区别?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 百度地图坐标反查html,通过百度地图a
- 下一篇: java设备imei号_如何正确查询你的