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