1. 程式人生 > 其它 >Hadoop-hadoop 1.x 和 hadoop 2.x 有什麼區別?

Hadoop-hadoop 1.x 和 hadoop 2.x 有什麼區別?

Hadoop 1.x 和 Hadoop 2.x 有什麼區別?

YARN

Hadoop1.X 和 Hadoop2.X 之間的最大不同是 YARN

YARN 是“ Yet Another Resource Negotiator ”的縮寫。
Hadoop1.X 僅僅是 HDFS 和 MapReduce 計算框架的組合。
正如我們所看到的,

在 Hadoop 中, YARN 位於 HDFS 層(依賴於伺服器本地儲存)和計算框架(如 MapReduce 、 Spark )之間。YARN 的主要功能是進行資源管理和排程。

在 Hadoop1.X中, MapReduce 是你實際可使用的唯一的計算框架,它直接與 HDFS 進行互動。
在 Hadoop2.X中, 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 是高度耦合的。

高可用性(HA)

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 個節點

————————————————
版權宣告:本文為CSDN博主「Shockang」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/Shockang/article/details/118002178