共用方式為


Azure HDInsight 商務持續性架構

本文提供您可能針對 Azure HDInsight 考慮的一些商務持續性架構範例。 在災害期間,對精簡功能的承受度是因應用程式而不同的商務決策。 因此,某些應用程式可能會無法使用,或可使用的功能較少,或延遲處理一段時間,是可以接受的。 對於其他應用程式,無法接受任何精簡的功能。

注意

本文中呈現的架構並不詳盡。 一旦針對預期的商務持續性、作業複雜度和擁有權成本做出目標判斷,您就應該設計自己的獨特架構。

Apache Hive 和 Interactive Query

針對 HDInsight Hive 和 Interactive Query 叢集中的商務持續性,建議使用Hive 複寫 V2。 需要複寫的獨立 Hive 叢集持續性區段是儲存層和 Hive 中繼存放區。 多使用者案例中具有企業安全性套件的 Hive 叢集需要 Microsoft Entra Domain Services 和 Ranger 中繼存放區。

Hive 和互動式查詢架構。

Hive 事件型複寫是在主要叢集和次要叢集之間設定的。 這包含兩個不同的階段,即啟動程序和累加執行:

  • 啟動程序會複寫整個 Hive 倉儲,包括從主要到次要的 Hive 中繼存放區資訊。

  • 累加執行是在主要叢集上自動進行,而累加執行期間所產生的事件則是在次要叢集上播放。 次要叢集會趕上從主要叢集產生的事件,確保次要叢集在複寫執行之後與主要叢集的事件一致。

只有在複寫執行分散式複本 (DistCp) 時,才需要次要叢集,但儲存體和中繼存放區必須持續存在。 您可以選擇在複寫之前視需要啟動已編寫指令碼的次要叢集、在其上執行複寫指令碼,然後在成功複寫之後將其終止。

次要叢集通常是唯讀的。 您可以使次要叢集成為讀寫的,但這會增加額外的複雜度,其中涉及將變更從次要叢集複寫至主要叢集。

Hive 事件型複寫 RPO 與 RTO

  • RPO:資料遺失僅限於上次從主要叢集到次要叢集的成功累加複寫事件。

  • RTO:失敗和繼續與次要叢集進行上游和下游交易之間的時間。

Apache Hive 和 Interactive Query 架構

具有隨選次要叢集的 Hive 作用中主要叢集

在「具有隨選次要叢集的作用中主要叢集」架構中,應用程式會在正常作業期間未在次要區域中佈建叢集時寫入至作用中主要區域。 次要區域中的 SQL 中繼存放區和儲存體會持續存在,而 HDInsight 叢集只會在排定的 Hive 複寫執行之前視需要編寫指令碼並進行部署。

具有隨選次要複本的作用中主要複本。

具有待命次要叢集的 Hive 作用中主要叢集

在「具有待命次要叢集的作用中主要叢集」中,應用程式會在正常作業期間,處於唯讀模式的待命縮小次要叢集執行時寫入至作用中主要區域。 在正常作業期間,您可以選擇將區域特定的讀取作業卸載至次要叢集。

具有待命次要複本的作用中主要複本。

如需 Hive 複寫和程式碼範例的詳細資訊,請參閱 Azure HDInsight 叢集中的 Apache Hive 複寫

Apache Spark

Spark 工作負載不一定未涉及 Hive 元件。 為了讓 Spark SQL 工作負載可從 Hive 讀取和寫入資料,HDInsight Spark 叢集會共用來自相同區域中 Hive/Interactive Query 叢集的 Hive 自訂中繼存放區。 在這類情況下,Spark 工作負載的跨區域複寫也必須伴隨 Hive 中繼存放區和儲存體的複寫。 本節中的容錯移轉案例適用於下列兩者:

針對 Spark 在獨立模式下運作的案例,需要使用 Azure Data Factory 的 DistCP,定期將策展資料和儲存的 Spark Jar (適用於 Livy 作業) 從主要區域複寫到次要區域。

建議您使用版本控制系統來儲存 Spark 筆記本和程式庫,其中它們可以輕鬆地部署在主要或次要叢集上。 確定筆記本型和非筆記本型解決方案已準備好在主要或次要工作區中載入正確的資料掛接。

若有客戶特有的程式庫超出 HDInsight 原生提供的程式庫,則您必須追蹤這些程式庫並定期將其載入至待命次要叢集。

Apache Spark 複寫 RPO 與 RTO

  • RPO:資料遺失僅限於上次從主要叢集到次要叢集的成功累加複寫 (Spark 和 Hive)。

  • RTO:失敗和繼續與次要叢集進行上游和下游交易之間的時間。

Apache Spark 架構

具有隨選次要叢集的 Spark 作用中主要叢集

應用程式會讀取和寫入至主要區域中的 Spark 和 Hive 叢集,而正常作業期間不會在次要區域中佈建任何叢集。 SQL中繼存放區、Hive 儲存體和 Spark 儲存體會在次要區域中持續存在。 Spark 和 Hive 叢集會視需要編寫指令碼並進行部署。 Hive 複寫是用來複寫 Hive 儲存體和 Hive 中繼存放區,而 Azure Data Factory 的 DistCP 可用來複製獨立 Spark 儲存體。 由於相依性 DistCp 計算,Hive 叢集必須在每個 Hive 複寫執行之前進行部署。

具有隨選次要 Apache Spark 架構的作用中主要複本。

具有待命次要叢集的 Spark 作用中主要叢集

應用程式會讀取和寫入至主要區域中的 Spark 和 Hive 叢集,而處於唯讀模式的待命縮小 Hive 和 Spark 叢集會在正常作業期間於次要區域中執行。 在正常作業期間,您可以選擇將區域特定的 Hive 和 Spark 讀取作業卸載至次要叢集。

作用中主要待命次要 Apache Spark。

Apache HBase

HBase 匯出和 HBase 複寫是在 HDInsight HBase 叢集之間啟用商務持續性的常見方式。

HBase 匯出是一種批次複寫流程,其會使用 HBase 匯出公用程式,將資料表從主要 HBase 叢集匯出至其基礎 Azure Data Lake Storage Gen 2 儲存體。 然後,您可以從次要 HBase 叢集存取匯出的資料,並將其匯入至必須預先存在於次要叢集的資料表。 雖然 HBase 匯出確實提供資料表層級細微性,但在累加更新的情況下,匯出自動化引擎會控制每次執行要包含的累加資料列範圍。 如需詳細資訊,請參閱 HDInsight HBase 備份和複寫

HBase 複寫會以完全自動化的方式在 HBase 叢集之間使用近乎即時複寫。 複寫是在資料表層級完成。 所有資料表或特定資料表都可以作為複寫目標。 HBase 複寫最終一致,這表示主要區域中資料表的最新編輯可能無法立即供所有次要叢集使用。 次要叢集保證最終會與主要叢集變成一致。 如果發生下列情況,可以在兩個或以上 HDInsight HBase 叢集之間設定 HBase 複寫:

  • 主要叢集和次要叢集位於相同的虛擬網路中。
  • 主要叢集和次要叢集位於相同區域的不同對等互連 VNet 中。
  • 主要叢集和次要叢集位於不同區域的不同對等互連 VNet 中。

如需詳細資訊,請參閱設定 Azure 虛擬網路中的 Apache HBase 叢集複寫

有一些其他方式可以執行 HBase 叢集的備份,例如複製 hbase 資料夾複製資料表快照集

HBase RPO 與 RTO

HBase 匯出

  • RPO:資料遺失僅限於次要叢集上次從主要叢集進行成功的批次累加匯入。
  • RTO:主要叢集失敗與次要叢集上繼續 I/O 作業之間的時間。

HBase 複寫

  • RPO:資料遺失僅限於次要叢集上次收到的 WalEdit 運送。
  • RTO:主要叢集失敗與次要叢集上繼續 I/O 作業之間的時間。

HBase 架構

您可以在下列三種模型下設定 HBase 複寫:領導者/追隨者、領導者/領導者和循環。

HBase 複寫:領導者 – 追隨者模型

在此跨區域設定中,複寫是從主要區域到次要區域的單向複寫。 主要叢集上的所有資料表或特定資料表都可以識別為單向複寫。 在正常作業期間,次要叢集可以用來在自己的區域中提供讀取要求。

次要叢集會當作一般 HBase 叢集運作,這可裝載自己的資料表,並可從區域應用程式提供讀取和寫入。 不過,對復寫數據表或次要數據表的寫入不會復寫回主要複寫。

HBase 領導者追蹤者模型。

HBase 複寫:領導者模型

此跨區域設定與單向設定非常類似,不同之處在於主要區域與次要區域之間的複寫會雙向發生。 應用程式可以在讀寫模式下使用這兩個叢集,而更新會在兩者之間以非同步方式交換。

HBase 領導者模型。

HBase 複寫:多區域或循環

多區域/循環複寫模型是 HBase 複寫的延伸,而且可以用來建立全域備援 HBase 架構,其中可有多個應用程式讀取和寫入至區域特定的 HBase 叢集。 叢集可以採取領導者/領導者或領導者/追隨者的各種組合來設定,視商務需求而定。

HBase 迴圈模型。

Apache Kafka

若要啟用跨區域可用性,HDInsight 4.0 支援 Kafka MirrorMaker,其可以用來維護不同區域中主要 Kafka 叢集的次要複本。 MirrorMaker 會充當高階取用者-生產者配對,從主要叢集中的特定主題取用,然後在次要叢集中產生名稱相同的主題。 使用 MirrorMaker 進行高可用性災害復原的跨叢集複寫,假設生產者和取用者必須容錯移轉至複本叢集。 如需詳細資訊,請參閱使用 MirrorMaker 搭配 HDInsight 上的 Kafka 來複寫 Apache Kafka 主題

根據複寫開始時的主題存留期,MirrorMaker 主題複寫可能會在來源主題與複本主題之間造成不同的位移。 HDInsight Kafka 叢集也支援主題分割區複寫,這是個別叢集層級的高可用性功能。

Apache Kafka 複寫。

Apache Kafka 架構

Kafka 複寫:主動 – 被動

主動-被動設定可啟用從主動到被動的非同步單向鏡像。 生產者和取用者必須注意主動和被動叢集的存在,而且必須準備好在主動叢集失敗時容錯移轉至被動叢集。 以下是主動-被動設定的一些優點和缺點。

優點:

  • 叢集之間的網路延遲不會影響主動叢集的效能。
  • 單向複寫的簡單性。

缺點:

  • 被動叢集可能仍未充分使用。
  • 在應用程式生產者和取用者中納入容錯移轉感知的設計複雜度。
  • 主動叢集失敗期間可能遺失資料。
  • 主動和被動叢集之間主題間的最終一致性。
  • 容錯回復至主要叢集可能會導致主題中的訊息不一致。

Apache Kafka 主動被動模型。

Kafka 複寫:主動 – 主動

主動-主動設定牽涉到兩個區域分隔的 VNet 對等互連 HDInsight Kafka 叢集與 MirrorMaker 的雙向異步復寫。 在此設計中,主要叢集中取用者所取用的訊息也會提供給次要叢集中的取用者,反之亦然。 以下是主動-主動設定的一些優點和缺點。

優點:

  • 由於其重複狀態,因此容錯移轉和容錯回復更容易執行。

缺點:

  • 設定、管理和監視比主動-被動更為複雜。
  • 循環複寫的問題必須解決。
  • 雙向複寫會導致較高的區域資料輸出成本。

Apache Kafka 使用中模型。

HDInsight 企業安全性套件

此設定用來啟用主要叢集和次要叢集中的多使用者功能,以及 Microsoft Entra Domain Services 複本集,以確保使用者可以向這兩個叢集進行驗證。 在正常作業期間,必須在次要叢集中設定 Ranger 原則,以確保使用者只能進行讀取作業。 下列架構說明啟用 ESP 的 Hive Active Primary – 待命次要設定外觀。

Ranger 中繼存放區複寫:

Ranger 中繼存放區是用來持續儲存和提供 Ranger 原則,以控制資料授權。 建議您在主要叢集和次要叢集中維護獨立的 Ranger 原則,並維護次要叢集作為讀取複本。

如果需求是讓 Ranger 原則在主要和次要之間保持同步,請使用 Ranger 匯入 / 匯出 定期備份 Ranger 原則,並將 Ranger 原則從主要備份至次要。

在主要叢集與次要叢集之間複寫 Ranger 原則可能會導致次要叢集變成可寫入的叢集,這可能會導致次要叢集上的意外寫入造成資料不一致。

HDInsight 企業安全性套件架構。

下一步

若要深入了解本文中討論的項目,請參閱: