[Big Data] Hadoop 3.x v.s 2.x

上一篇我們探討了 Hdfs 在 Hadoop 3.1.2 的時候要怎麼安裝?最近由於筆者需要將 Spark 2.4 升到 Spark 3.0 以上,所以順便研究並且探討 Hadoop 3.x 與 Hadoop 2.x 版本的差異,本篇主要參考的是 Data Flair 網站上面的比較差異,我們整理並且精簡 22 項差異中到最重要的 7 項。

Hadoop 的範疇

關於 Hadoop 的介紹在網路上真的是不勝枚舉,這邊我們引用痞客邦鐵人賽的介紹(筆者也是受惠良多)他們介紹的 Hadoop 生態系的範疇真的是很廣包含 Apache Hadoop, Apache Spark, Apache Hive, Apache HBase, Apache Solr 等等的專案,在 Hadoop 的專案裡面則主要包含 Hdfs, MapReduce 與 Yarn,我們如果實際從 Hadoop 的官網上面下載可以看到他們裡面其實有更多小的 project 例如我們之前介紹的 minicluster

Hadoop 2.x v.s Hadoop 3.x

以下我們列出相對重要的差異:

  1. Minimum supported version of Java (Java 最低支援版本):
    • Hadoop 2.x 最低支援 Java 7,Hadoop 3.x 最低支援 Java 8。
  2. Fault Tolerance (容許錯誤機制):
    • Hadoop 2.x 主要是透過檔案複製 Replication,Hadoop 3.x 是透過新的 Erasure Coding 的方式。
  3. Data Balancing:
    • Hadoop 2.x 使用 Hdfs Balancing,Hadoop 3.x 使用 Intra-data Node Balancer。
  4. Storage Overhead:
    • 由於 Hadoop 2.x 是使用 Replication 所以在 Replication 是 3x 的情況下 Overhead 是 200% ,相反地 Hadoop 3.x 是只有 50%。
  5. Default Ports Range:
    • Hadoop 2.x 使用 Linux 預設的臨時端口 (32678-61000) 所以有時候在初始化的時候會有端口衝突,Hadoop 3.x 使用 Linux 預設端口以外的區段。
  6. Compatible File System:
    • Hadoop 2.x:包含 HDFS, 遠端的 FTP, Amazon S3, Windows Azure Storage Blob (WASB)
    • Hadoop 3.x:除以上之外包含 Azure Datalake Storage
  7. Scalability:
    • Hadoop 2.x Datanode 只能夠最多 10000 台,Hadoop 3.x 以上 Datanode 最多可以超過 10000 台。

整理完的結果,感覺差異並不大。