Oracle Cloud Infrastructure上部署 Hadoop 的注意事項

探索移轉至雲端時,執行 Hadoop 的許多客戶都有相似的問題:

  • 要如何在雲端部署、移轉、Hadoop?
  • 我們如何在雲端保護 Hadoop?
  • 我們要如何在雲端實行 Hadoop 的 HA 和 DR?
  • 與內部部署相比,我們如何達到雲端中 Hadoop 部署的類似效能?
  • 在部署多個環境時,我們要如何追蹤及管理我們的費用?

本文章提供Oracle Cloud Infrastructure對這些問題的回答。

部署

當您訂閱 Oracle 的基礎架構即服務 (IaaS) 時,您可以存取所有與其關聯的運算、儲存體以及網路服務。Oracle Cloud Infrastructure 上的建置類似於內部部署,每個 Hadoop 分佈都提供相同的版本與功能。

Teraform 和 Resource Manager

Oracle Cloud Infrastructure 工程團隊可與每個 Hadoop ISV 合作,以便啟用運用 Terraform 的部署。Terraform 可讓您將基礎架構建置為程式碼 (IaC),並且包括 Hadoop 生態系統、網路 (虛擬雲端網路、子網路、VNIC) 及安全存取控制清單等各個層面,以計算及儲存啟動設定。Terraform 具有彈性、高擴展性,以及許多雲端提供者之間的標準。

您可以選擇使用這些樣板作為在Oracle Cloud Infrastructure上部署 Hadoop 的架構,或者您可以繼續使用內部部署的現有部署工具。兩種方法都有效。

若您要使用 Terraform 部署 Hadoop,請考慮使用 Oracle Resource Manager。考慮使用「資源管理程式」的主要優點:

  • Terraform 狀態中繼資料保存於高可用地點。
  • 您可以使用其他Oracle Cloud Infrastructure 服務所含的相同安全性與稽核工具,來管理對「資源管理程式」的存取。
  • 資源管理程式移除與設定 Terraform 相關的複雜性,以部署於Oracle Cloud Infrastructure

「資源管理程式」介面支援以 Yaml-為基礎的綱要檔案,並在堆疊變數中填入預期的值。這可讓您定義堆疊中每個變數所允許的形狀、軟體版本以及其他參數。


Resource-manager-ui.png 的描述請參見下方
Resource-manager-ui.png 圖解描述

填入綱要檔案之後,值會顯示在容易使用的 UI 中。綱要檔案可讓您具有這些值的下拉式清單,以及使用者可輸入或貼上輸入的自訂輸入欄位。

綱要檔案中的欄位也可以具有相依性,如此若使用者在一個欄位中選擇值,則會根據該選擇顯示或隱藏其他欄位。

叢集服務拓樸

建置 Hadoop 時,請考慮下列叢集服務拓樸與節點角色的對應:

節點類型 Hadoop 角色 Hadoop 服務
邊緣 使用者從分隔線存取 從屬端程式庫,Oozie
公用程式 叢集管理 Cloudera Manager、Ambari、Metadata 資料庫
Master - 主要 核心叢集服務 Zookeeper、NameNode、JournalNode、HIVE、HBase 主要、火花歷史記錄、工作歷史記錄、資源管理員、HTTPFS、SOLR
職工 工作負載執行,資料儲存 HDFS、NodeManager、Region Server、Kafka 代理程式、火花執行程式、地圖/減少

選擇用於這些角色的運算型態時,此解決方案會稍後描述最佳做法。另請考量下列條件:

  • 此叢集有多少並行使用者?

    根據並行使用者的數量與 OCPU,邊緣節點的比例應該同時縮放。每一 OCPU 的兩個並行使用者都是一個良好的準則,允許每位使用者一個執行緒。不同容錯域的其他邊緣節點也提供冗餘。

  • 您是否有特定 Spark 或 HBase 區域伺服器記憶體需求?

    這類需求會直接影響職工節點的數量與組成。HBase 大小需要瞭解相關應用程式,並且會因此而有所不同。大部分客戶都已經知道其 HBase 部署需求,特別是區域伺服器數目和每個伺服器配置的記憶體。火花工作負載的聚總記憶體目標,是由工作節點數目乘以每個工作的可用記憶體所達成。

  • 您是否有特定的 HDFS 容量需求?

    大部分客戶都具有這項需求。但是在您擴展大量裸機 DenseIO 工作節點之前,請考慮以區塊磁碟區來增加 NVMe 原始的 HDFS,以達到必要的 HDFS 密度,如此解決方案稍後所述。Oracle 建議您瞭解 HDFS 需求,但也要因工作負載需求因素而異,如此您可以在降低成本的同時命中兩個目標。

移轉

當執行 Hadoop 的客戶決定要部署到Oracle Cloud Infrastructure時,他們通常會有大量要移轉的資料。在 HDFS 中有大量此資料,但資料庫中有支援的叢集描述資料。

直接透過網際網路複製 HDFS 資料的原因有許多:

  • 資料量太大、或者可用的頻寬太長、因此支援在任何有意義的時間範圍內的過度資料複製。
  • 資料有可能會區分大小,且不允許透過網際網路複製資料。
  • 在內部部署叢集資源受到限制,資料複本會影響進行中的工作負載。

支援資料移轉的方法。它們是由要移轉的資料類型所定義。

HDFS 資料移轉

將 HDFS 資料複製到Oracle Cloud Infrastructure有三種常見的方法:

  • 透過透過網際網路上或 FastConnect 使用 VPN,將資料直接從內部部署叢集複製到Oracle Cloud Infrastructure 區域中的物件儲存。完成此處理作業之後,即可使用物件儲存的資料恢復Oracle Cloud Infrastructure 叢集。
  • 直接從內部部署叢集將資料複製到網際網路上或使用 FastConnect 的Oracle Cloud Infrastructure 叢集。
  • 將資料複製到建置至客戶資料中心的資料傳輸設備,並填入資料,然後傳送至 Oracle 並上傳至物件儲存。接著,可以使用此資料復原Oracle Cloud Infrastructure 叢集。

這些方法的技術詳細資訊會在此解決方案稍後加以討論。

描述資料移轉

叢集描述資料通常小於 HDFS 資料,存在於內部部署叢集的資料庫中。

移轉叢集描述資料取決於兩個因素:來源叢集中的 Hadoop 分佈,以及要用來儲存描述資料的資料庫。直接傳輸此資料,而且每個 Hadoop 分佈專用。

此解決方案稍後會顯示每個 Hadoop 分佈的特定資訊。

安全性

雲端中的安全特別重要,因此有許多方法可確保您在Oracle Cloud Infrastructure 上部署的安全性保持安全。

請先考量一些Oracle Cloud Infrastructure特定的安全控制項:

  • 運用身分識別與存取管理 (IAM) 來控制能夠存取雲端資源的人員、使用者群組的存取權類型,以及特定資源。此架構可提供下列結果:
    • 根據組織結構,安全地隔離雲端資源
    • 認證使用者以透過瀏覽器介面、REST API、SDK 或 CLI 存取雲端服務
    • 授權使用者群組對適當的雲端資源執行動作
    • 與現有身分識別提供者的聯合
    • 啟用受管理服務提供者 (MSP) 或系統整合商 (SI) 來管理基礎架構資產,同時允許您的操作員存取資源
    • 授權應用程式執行處理針對雲端服務進行 API 呼叫
  • 稽核虛擬雲端網路 (VCN) 中所有網路的安全清單。讓這些規則儘可能受到限制,而且只允許受信任的流量進入網際網路周圍的子網路。
  • 啟用網際網路周圍主機的主機防火牆,僅允許必要的流量。
  • 請考慮定期使用安全稽核。

「加密」對於動態計畫中的靜態資料和資料也是一個良好的選項。請考量下列資源:

  • Cloudera 加密機制
  • Hortonworks
    • 其餘時 HDFS 加密
    • 電匯加密
  • MapR 加密

其他門特定的安全考量包括:

  • 在具有專用 IP 位址的子網路上建置叢集,該專用 IP 位址只會顯示必要的 api 或 ui 給網際網路介面的子網路。
  • 使用叢集安全執行 Hadoop
  • 使用邊緣節點透過 SSH 通道存取叢集服務。這在 Mac 或 Linux 上很容易。
  • 運用 Apache Knox 保護 API 端點。
  • 利用 Apache Sentry 或 Cloudera Navigator 來存取以角色為基礎的叢集資料和描述資料。

網路安全

因為將 Hadoop 和安全性的開放性質納入考量,大多數客戶偏好在專用子網路中部署其 Hadoop 叢集。之後,只有使用邊緣節點、Ui、api 以及服務儀表板的負載平衡存取,或是透過邊緣代理主機直接透過 FastConnect VPN 或 SSH 通道進行存取,才能存取叢集服務。

公用子網路會增加邊緣節點和公用程式節點(執行網際網路周圍服務 (例如 Cloudera Manager 或 Ambari) 的叢集建置。這是完全選擇性的。您可以選擇運用 FastConnect VPN,並將整個部署作為您內部部署網路拓樸的擴充來執行。這只需要客戶路由專用 IP 區段,與 VCN 層次有關,然後分割成Oracle Cloud Infrastructure中適當的子網路。存取權的控制是透過安全清單 (套用於子網路層次) 來控制。最佳作法是將存取需求類似的資源群組至相同的子網路。

子網路拓樸

VCN 涵蓋您所選擇的單一連續 IPv4 CIDR 區塊。您可以在 VCN 內部部署叢集主機的個別 IPv4 子網路。存取每個子網路是由安全清單所控制。其他安全受到防火牆控制的主機層次。

最佳作法是將 Hadoop 叢集資源分隔成無法直接從網際網路存取的專用子網路。必須透過公用子網路中的額外主機控制叢集的存取,並使用適當的安全清單規則來管理公用與專用網路區段之間的流量。此模型提供 Hadoop 叢集的最佳安全性。

  • 公用子網路可用於邊緣處理節點 (使用者存取權),以及任何需要顯示 UI 或 API (例如 Cloudera Manager 或 Ambari) 以存取外部存取的服務。
  • 專用子網路應該用於叢集主機 (主要、工作者),而且無法直接從網際網路存取。這些代理主機需要公用子網路中的中介主機來存取、負載平衡器或透過 VPN、FastConnect 或 SSH 代理主機直接存取。

安全清單

安全會列出子網路層次的控制傳入和傳出流量。對於 Hadoop,最好是讓含有叢集主機的子網路之間完全無限制地存取 TCP 和 UDP 流量。公用子網路應具有高度限制的安全清單,以便只允許信任的連接埠 (甚至是來源 IP 位址) 存取 api 和 ui。

高可用性

Hadoop 具有高可用性 (HA) 的內建方法,以及此處未涵蓋的方法。運用Oracle Cloud Infrastructure for Hadoop 達成 HA 的最佳做法。

選取區域

Oracle Cloud Infrastructure 中的每個區域均包含一至三個可用性網域。每個可用性網域也包含三個容錯域。選擇您的主要區域與您的業務資源 (例如資料中心)。您選擇的區域組成,可決定您是否可以使用單一可用性網域部署或多重可用性網域部署。

單一可用性網域部署

Oracle 建議提供單一可用性網域部署供Oracle Cloud Infrastructure上的 Hadoop 部署使用。對於 MapR 部署,僅支援此架構。此建置模型是因為叢集內流量包含在本機網路區段 (會維持低延遲和高傳輸量) 而來最自網路觀點的效能。可用性網域中的資源會在容錯域之間去除,以達到實體基礎架構的 HA。

錯誤網域是可用性網域內硬體和基礎架構的群組。每個可用性網域都包含三個容錯域。容錯域可讓您分配執行處理,以便它們不在單一可用性網域內的同一個實體硬體上。會影響一個容錯域的硬體失敗或計算硬體維護,並不會影響其他容錯域中的執行處理。

多可用性網域部署

多可用性網域部署 (可用性網域跨越) 僅受 Cloudera 和 Hortonworks 支援,但也可以使用 Apache Hadoop。

不過,請考慮下列有關可用性網域跨越的注意事項:

  • 叢集內部連線必須周遊 WAN 區段,這會增加延遲並降低最佳傳輸量。這對效能的影響很可測量,尤其是裸機工作節點。對於較小的 VM 工作節點,效能影響較不會顯著。
  • 並非所有Oracle Cloud Infrastructure 區域皆支援此模型。

下列圖表顯示在單一可用性網域中使用 10-TB TeraSort 與叢集內含五個工作節點和三個主要節點的可用性網域間,使用 10 TB TeraSort 時,所測量的效能影響:


比較圖表與網域跨越的描述。png 如下
Comparison-availability-domain spanning.png 圖解描述

可用性網域跨越不會提供單一區域中叢集服務的額外冗餘。叢集資源也可以利用每個可用性網域中的容錯域進行額外的邏輯“機架拓樸”;每個容錯域都被視為機架知道的「機架」。下列圖表說明這些優點。


架構多重可用性的描述請參見下方
規模多可用性- domains.png 圖解描述

災害復原

Oracle Cloud Infrastructure 中的災害復原 (DR) 取決於您的「復原點目標 (RPO)」與「復原時間目標 (RTO)」需求。

如果 RPO 或 RTO 接近即時,則 Hadoop 的唯一選項是在其他可用性網域或區域中建立 DR 叢集,然後在生產與 DR 叢集之間複製資料。如果 RPO 和 RTO 需求更有彈性,建議您運用物件儲存作為 HDFS 和叢集中繼資料的備份目標。使用 DistCp (分散式複本) 工具,依需求排定複製程序 (通常) 以符合 RPO 目標,將資料發送到 Object Storage。您也可以將資料庫 (Oracle、MySQL) 備份到物件儲存的儲存桶,或複製到其他可用性網域或區域中的其他資料庫執行處理。

如果您的 DR 需求為單一區域無法提供的資料指定地理冗餘,您也可以在區域之間複製物件儲存中的資料。若發生災害,請考慮使用 Terraform 快速佈建另一個可用性網域 (位於相同區域或不同區域) 中的資源,並從物件儲存中的資料恢復 DR 叢集。

成本管理

此解決方案的其餘部份詳細說明,運算與儲存體需求有數種方式可以準確調整大小,以降低基礎架構成本。Oracle Cloud Infrastructure 有其他工具可協助您管理與 Hadoop 建置相關聯的成本:

  • 您可以利用標記功能來處理您的建置,以便更輕鬆追蹤使用情形。
  • 您可以在區間層次設定配額,以限制不同行業的消耗量。考慮使用多個區間來管理生產、QA 和開發環境,並適當地限制配額。

運用雲端的動態性質,對於可能不需要持續性的環境來說也是絕佳的。如果您正在使用物件儲存作為資料的備份 (或資料湖),當您需要使用 Terraform、恢復的 HDFS 與物件儲存的資料,以及不再需要時破壞環境時,可輕鬆建立環境。

具有區塊磁碟區的 VM 環境也可以暫停以暫停運算計費,而且只需針對儲存使用量收費。