Apache Hadoop 3.3.6

Apache Hadoop 3.3.6 是 Hadoop 3.3.x 發行分支的更新。

變更概觀

鼓勵使用者閱讀完整的發行說明。此頁面提供了主要變更的概觀。

SBOM 工件

從此版本開始,Hadoop 使用 CycloneDX Maven 外掛發布軟體材料清單 (SBOM)。有關 SBOM 的更多資訊,請前往 SBOM

HDFS RBF:基於 RDBMS 的權杖儲存支援

HDFS 路由器對路由器基於聯盟現在支援在 MySQL 上儲存委派權杖,HADOOP-18535,這改善了權杖操作的處理量,優於原本基於 Zookeeper 的實作。

新的檔案系統 API

HADOOP-18671 將多個 HDFS 特定的 API 移到 Hadoop Common,讓某些依賴 HDFS 語意的應用程式可以在其他與 Hadoop 相容的檔案系統上執行。

特別是,recoverLease() 和 isFileClosed() 是透過 LeaseRecoverable 介面公開的。而 setSafeMode() 則透過 SafeMode 介面公開。

Azure ABFS:重大串流預讀取修正

abfs 有一個重大錯誤修正 HADOOP-18546ABFS。停用在 abfs 串流 close() 中清除進行中讀取的清單。

hadoop 版本 3.3.2+ 中 abfs 連接器的所有使用者都必須升級或透過將 fs.azure.readaheadqueue.depth 設定為 0 來停用預讀取

參閱父項 JIRA HADOOP-18521 ABFS ReadBufferManager 緩衝區在並發 HTTP 要求中共享,以取得根本原因分析、受影響內容的詳細資料和緩解措施。

向量化 IO API

HADOOP-18103Hadoop 中的高效能向量化讀取 API

PositionedReadable 介面現在已新增一個用於向量化 IO(也稱為分散/收集 IO)的作業

void readVectored(List<? extends FileRange> ranges, IntFunction<ByteBuffer> allocate)

所有要求的範圍都將擷取到提供的位元組緩衝區中,可能非同步,也可能並行,而結果可能會亂序傳入。

  1. 預設實作使用一系列 readFully() 呼叫,因此提供等效的效能。
  2. 本機檔案系統使用 java 原生 IO 呼叫來執行比 readFully() 更高效能的讀取。
  3. S3A 檔案系統在不同的執行緒中發出並行的 HTTP GET 要求。

透過 file://s3a:// 對增強的 Apache ORC 和 Apache Parquet 用戶端進行基準測試,顯示查詢效能有顯著的改善。

進一步閱讀:* FsDataInputStream。* Hadoop 向量化 IO:您的資料速度提升了! Apachecon 2022 演講。

Mapreduce:Azure ABFS 和 Google GCS 的明細提交器

新的中間明細提交器使用明細檔案來提交成功任務嘗試的工作,而不是重新命名目錄。工作提交是讀取所有明細、建立目的地目錄(平行化)並再次平行重新命名檔案的問題。

這在 Azure Storage 和 Google GCS 上既快速又正確,應在那裡使用,而不是傳統的 v1/v2 檔案輸出提交器。

在 HDFS 上使用也是安全的,在那裡它應該比 v1 提交器更快。不過,它是針對清單和重新命名作業明顯較慢的雲端儲存最佳化;好處可能較少。

可以在 明細提交器 文件中找到更多詳細資料。

HDFS: 動態資料節點重新設定

HDFS-16400、HDFS-16399、HDFS-16396、HDFS-16397、HDFS-16413、HDFS-16457。

許多資料節點設定選項可以在不重新啟動資料節點的情況下變更。這使得我們可以在不進行群集範圍的資料節點重新啟動的情況下調整部署設定。

請參閱 DataNode.java 以取得動態重新設定屬性的清單。

傳遞性 CVE 修補程式

許多相依性已升級以解決最近的 CVE。許多 CVE 實際上無法透過 Hadoop 加以利用,因此這項工作的許多部分只是盡職調查。然而,所有函式庫都在類別路徑上的應用程式可能會受到攻擊,而升級也應減少安全掃描器報告的誤報數量。

我們無法將每個相依性都升級到最新版本。其中一些變更基本上不相容。如果您對特定函式庫的狀態感到疑慮,請諮詢 Apache JIRA 問題追蹤器,以查看是否已提出問題、是否已討論過有問題的函式庫,以及管線中是否已有修正程式。請勿在未先搜尋任何現有問題的情況下,針對相依性 X.Y.Z 具有 CVE 提出新的 JIRA

作為一個開源專案,我們永遠歡迎這個領域的貢獻,特別是在測試主動分支、測試那些分支下游的應用程式,以及更新的相依性是否會觸發回歸。

安全性公告

Hadoop HDFS 是一個分散式檔案系統,允許遠端呼叫者讀取和寫入資料。

Hadoop YARN 是一個分散式工作提交/執行引擎,允許遠端呼叫者將任意工作提交到群集中。

除非 Hadoop 群集已部署 使用 Kerberos 進行呼叫者驗證,否則任何有權存取伺服器網路的人員都可以不受限制地存取資料,並可以在系統中執行他們想要的任何程式碼。

在實際應用中,通常有三個部署模式可以謹慎地保持資料和運算資源的私密性。1. 實體群集:設定 Hadoop 安全性,通常與企業 Kerberos/Active Directory 系統結合。很好。1. 雲端:具有私人 VLAN 和安全性的暫時或永久單一或多個使用者/租戶群集。很好。考慮使用 Apache Knox 管理對群集的遠端存取。1. 雲端:具有私人 VLAN 且完全沒有安全性的暫時單一使用者/租戶群集。需要仔細設定網路,因為這是保護群集的唯一方法。考慮使用 Apache Knox 管理對群集的遠端存取。

如果您在雲端中部署沒有安全性的 Hadoop 群集,而且沒有設定 VLAN 來限制值得信賴的使用者存取,則您實際上會與任何有權存取網路的人員分享您的資料和運算資源

如果您以這種方式部署不安全的叢集,那麼埠掃描器必然會找到它並提交加密挖礦工作。如果發生這種情況,請不要將此報告為 CVE 或安全問題:這是完全可以預測的。如果您想獨佔您的叢集,請保護您的叢集

最後,如果您使用 Hadoop 作為由其他人部署/管理的服務,請確定他們的產品提供什麼安全性,並確保它符合您的需求。

入門

Hadoop 文件包含您開始使用 Hadoop 所需的資訊。從 單一節點設定 開始,它會向您展示如何設定單一節點 Hadoop 安裝。然後繼續進行 叢集設定 以了解如何設定多節點 Hadoop 安裝。

在生產環境中部署 Hadoop 之前,請閱讀 安全模式下的 Hadoop,並按照其說明保護您的叢集。