1. 程式人生 > >Hadoop 2.x與Hadoop 3.x之間的功能比較

Hadoop 2.x與Hadoop 3.x之間的功能比較

Hadoop 2.x與Hadoop 3.x之間的功能比較

1.JDK要求

JDK>=1.7

2.HDFS支援糾刪碼

與副本相比糾刪碼是一種更節省空間的資料持久化儲存方法

。標準編碼(比如Reed-Solomon(10,4))會有1.4 倍的空間開銷;然而HDFS副本則會有3倍的空間開銷。因為糾刪碼額外開銷主要是在重建和執行遠端讀,它傳統用於儲存冷資料,即不經常訪問的資料。當部署這個新特性時使用者應該考慮糾刪碼的網路和CPU 開銷。更多關於HDFS的糾刪碼可以參見http://hadoop.apache.org/docs/r3.0.0-beta1/hadoop-project-dist/hadoop-hdfs/HDFSErasureCoding.html.

3.YARN Timeline Service版本更新到v.2

本版本引入了Yarn時間抽服務v.2,主要用於解決2大挑戰:改善時間軸服務的可伸縮性和可靠性,通過引入流和聚合增強可用性


YARN Timeline Service v.2 alpha 1可以讓使用者和開發者測試以及反饋,以便使得它可以替換現在的Timeline Service v.1.x。請在測試環境中使用。更多關於YARN Timeline Service v.2的知識請參見http://hadoop.apache.org/docs/r3.0.0-beta1/hadoop-yarn/hadoop-yarn-site/TimelineServiceV2.html

4.重寫相關shell指令碼,比如所有指令碼都以hadoop-env.sh為基礎指令碼等等

Hadoop的Shell指令碼被重寫解決了之前很多長期存在的bug,並且引入了一些新的特性。絕大部分都保持相容性,不過仍有些變化可能使得現有的安裝不能正常執行。不相容的改變可以參見HADOOP-9902。更多內容請參見Unix Shell Guide文件。即使你是資深使用者,也建議看下這個文件,因為其描述了許多新的功能,特別是與可擴充套件性有關的功能。

5.合併客戶端jar,比如使用maven的shaded外掛將 hadoop-client-api和hadoop-client-runtime合併為一個jar

在 Hadoop 2.x 版本,hadoop-client Maven artifact將 Hadoop 所有的依賴都加到 Hadoop 應用程式的環境變數中,這樣會可能會導致應用程式依賴的類和 Hadoop 依賴的類有衝突。這個問題在 HADOOP-11804 得到了解決。

6.支援投機性的容器和分散式排程,比如在沒有資源可分配時仍可執行一個Applications

Opportunistic Container引入新 Opportunistic 型別的 Container 後,這種 Container 可以利用節點上已分配但未真正使用的資源。原有 Container 型別定義為 Guaranteed 型別。相對於 Guaranteed 型別Container, Opportunistic 型別的Container優先順序更低。

7.MapReduce本地優化

Opportunistic Container引入新 Opportunistic 型別的 Container 後,這種 Container 可以利用節點上已分配但未真正使用的資源。原有 Container 型別定義為 Guaranteed 型別。相對於 Guaranteed 型別Container, Opportunistic 型別的Container優先順序更低。

8.支援2個以上namenode

初的HDFS NameNode high-availability實現僅僅提供了一個active NameNode和一個Standby NameNode;並且通過將編輯日誌複製到三個JournalNodes上,這種架構能夠容忍系統中的任何一個節點的失敗。然而,一些部署需要更高的容錯度。我們可以通過這個新特性來實現,其允許使用者執行多個Standby NameNode。比如通過配置三個NameNode和五個JournalNodes,這個系統可以容忍2個節點的故障,而不是僅僅一個節點。HDFS high-availability文件已經對這些資訊進行了更新,我們可以閱讀這篇文件瞭解如何配置多於2個NameNodes。

9.預設的埠和服務有改變

在此之前,多個Hadoop服務的預設埠都屬於Linux的臨時埠範圍(32768-61000)。這就意味著我們的服務在啟動的時候可能因為和其他應用程式產生埠衝突而無法啟動。現在這些可能會產生衝突的埠已經不再屬於臨時埠的範圍,這些埠的改變會影響NameNode, Secondary NameNode, DataNode以及KMS。與此同時,官方文件也進行了相應的改變,具體可以參見 HDFS-9427以及HADOOP-12811。

10.支援微軟Azure儲存系統和阿里雲端儲存系統

11.新增內部節點的平衡器

== 一個DataNode可以管理多個磁碟,正常寫入操作,各磁碟會被均勻填滿==。然而,當新增或替換磁碟時可能導致此DataNode內部的磁碟儲存的資料嚴重內斜。這種情況現有的HDFS balancer是無法處理的。這種情況是由新intra-DataNode平衡功能來處理,通過hdfs diskbalancer CLI來呼叫。更多請參考HDFS Commands Guide

12.重做了後臺程式和任務的堆記憶體管理

Hadoop守護程序和MapReduce任務的堆記憶體管理髮生了一系列變化。
HADOOP-10950:介紹了配置守護整合heap大小的新方法。主機記憶體大小可以自動調整,HADOOP_HEAPSIZE 已棄用。
MAPREDUCE-5785:map和reduce task堆大小的配置方法,所需的堆大小不再需要通過任務配置和Java選項實現。已經指定的現有配置不受此更改影響。

13.針對S3檔案系統支援DynamoDB儲存

HADOOP-13345 裡面為 Amazon S3 儲存系統的 S3A 客戶端引入了一個新的可選特性,也就是可以使用 DynamoDB 表作為檔案和目錄元資料的快速一致的儲存

14.HDFS支援基於路由器的聯盟

HDFS Router-Based Federation 添加了一個 RPC路由層,提供了多個 HDFS 名稱空間的聯合檢視。與現有 ViewFs 和 HDFS Federation 功能類似,不同之處在於掛載表(mount table)由伺服器端(server-side)的路由層維護,而不是客戶端。這簡化了現有 HDFS客戶端 對 federated cluster 的訪問。 詳細請參見:HDFS-10467

15.提供REST API來修改容量排程

OrgQueue 擴充套件了 capacity scheduler ,通過 REST API 提供了以程式設計的方式來改變佇列的配置,This enables automation of queue configuration management by administrators in the queue’s administer_queue ACL.。詳細請參見:YARN-5734

16.YARN的資源除了傳統的CPU和記憶體外,還可以支援使用者自定義的資源型別,比如GPU

YARN 資源模型(YARN resource model)已被推廣為支援使用者自定義的可數資源型別(support user-defined countable resource types),不僅僅支援 CPU 和記憶體。比如叢集管理員可以定義諸如 GPUs、軟體許可證(software licenses)或本地附加儲存器(locally-attached storage)之類的資源。YARN 任務可以根據這些資源的可用性進行排程。詳細請參見: YARN-3926。

版權宣告:本部落格為記錄本人自學感悟,轉載需註明出處!
https://me.csdn.net/qq_39657909