在 Azure HDInsight 中使用外部中繼資料存放區

重要

預設中繼存放區提供基本層 Azure SQL Database,只有 5 個 DTU 和 2 GB 的資料大小上限 (不可升級)! 僅供 QA 和測試使用。 針對大型或生產工作負載,建議您移轉至外部中繼存放區!

HDInsight 可讓您使用外部資料存放區來控制資料和中繼資料。 此功能適用於 Apache Hive 中繼存放區Apache Oozie 中繼存放區Apache Ambari 資料庫

HDInsight 中的 Apache Hive 中繼存放區是 Apache Hadoop 架構不可或缺的一部分。 中繼存放區是中央結構描述存放庫。 中繼存放區可供其他巨量資料存取工具使用,例如 Apache Spark、Interactive Query (LLAP)、Presto 或 Apache Pig。 HDInsight 使用 Azure SQL Database 作為 Hive 中繼存放區。

HDInsight Hive Metadata Store Architecture.

您有兩種方式可以為您的 HDInsight 叢集設定中繼存放區:

預設中繼存放區

根據預設,HDInsight 會以每個叢集類型來建立中繼存放區。 您可以改為指定自訂中繼存放區。 預設中繼存放區包含下列考量:

  • 有限的資源。 請參閱分頁頂端的注意事項。

  • 沒有其他成本。 HDInsight 會以每個叢集類型來建立中繼存放區,但不會對您產生額外成本。

  • 預設中繼存放區是叢集生命週期的一部分。 當您刪除叢集時,相應的中繼存放區和中繼資料會一併刪除。

  • 建議只針對簡單的工作負載使用預設中繼存放區。 不需要多個叢集,也不需要中繼資料保留超過叢集生命週期的工作負載。

  • 預設中繼存放區無法與其他叢集共用。

自訂中繼存放區

HDInsight 也支援自訂中繼存放區,這是針對生產叢集建議的中繼存放區:

  • 您將自己的 Azure SQL Database 指定為中繼存放區。

  • 中繼存放區的生命週期未繫結至叢集生命週期,讓您可以建立和刪除叢集,而不會遺失中繼資料。 即使您刪除並重新建立 HDInsight 叢集之後,中繼資料 (例如您的 Hive 結構描述) 仍會保存。

  • 自訂中繼存放區可讓您將多個叢集與叢集類型連結至該中繼存放區。 例如,單一中繼存放區可以在 HDInsight 中的互動式查詢、Hive 和 Spark 叢集之間共用。

  • 您會根據選擇的效能層級支付中繼存放區 (Azure SQL Database) 的成本。

  • 您可以視需要擴大中繼存放區。

  • 叢集與外部中繼存放區必須在相同區域內託管。

HDInsight Hive Metadata Store Use Case.

為自訂中繼存放區建立和設定 Azure SQL Database

先建立或擁有現有的 Azure SQL Database,再設定 HDInsight 叢集的自訂 Hive 中繼存放區。 如需詳細資訊,請參閱快速入門:在 Azure SQL Database 中建立單一資料庫

建立叢集時,HDInsight 服務必須連線到外部中繼存放區,並驗證您的認證。 設定 Azure SQL Database 防火牆規則,以允許 Azure 服務和資源存取伺服器。 選取 [設定伺服器防火牆],在 Azure 入口網站中啟用此選項。 然後針對 Azure SQL Database,在 [拒絕公用網路存取] 下,選取 [否],並在 [允許 Azure 服務和資源存取此伺服器] 下,選取 [是]。 如需詳細資訊,請參閱建立和管理 IP 防火牆規則

只有使用 outbound ResourceProviderConnection 建立的叢集才支援 SQL 存放區的私人端點。 若要深入了解,請參閱此文件

set server firewall button.

allow azure services access.

在叢集建立期間選取自訂中繼存放區

您可以隨時將叢集指向先前建立的 Azure SQL Database。 若要透過入口網站建立叢集,則會從 [儲存體]>[中繼存放區設定] 指定選項。

HDInsight Hive Metadata Store Azure portal.

Apache Hive 中繼存放區指導方針

注意

盡可能使用自訂中繼存放區,這樣有助於個別計算資源 (您的執行中叢集) 和中繼資料 (儲存在中繼存放區)。 從 S2 層開始,該層提供 50 個 DTU 和 250 GB 的儲存體。 如果您看到瓶頸,您可以相應增加資料庫。

  • 如果您想要讓多個 HDInsight 叢集存取不同的資料,請針對每個叢集上的中繼存放區使用不同資料庫。 如果您在多個 HDInsight 叢集間共用中繼存放區,則表示這些叢集會使用相同的中繼資料和基礎使用者資料檔案。

  • 定期備份您的自訂中繼存放區。 Azure SQL Database 會自動產生備份,但備份保留時間範圍有所不同。 如需詳細資訊,請參閱了解自動 SQL Database 備份

  • 將您的中繼存放區與 HDInsight 叢集放在相同區域。 此設定將提供最高效能和最低的網路輸出費用。

  • 使用 Azure SQL Database 監視工具或 Azure 監視器記錄,監視中繼存放區的效能和可用性。

  • 針對現有自訂中繼存放區資料庫建立新的、更高版本的 Azure HDInsight 時,系統會升級中繼存放區的結構描述。 此升級需要從備份還原資料庫才能復原。

  • 如果您在多個叢集間共用中繼存放區,請確定所有叢集都是相同的 HDInsight 版本。 不同的 Hive 版本會使用不同的中繼存放區資料庫結構描述。 例如,您無法在 Hive 2.1 和 Hive 3.1 版本叢集間共用中繼存放區。

  • 在 HDInsight 4.0 中,Spark 和 Hive 會使用獨立的目錄來存取 SparkSQL 或 Hive 資料表。 Spark 所建立的資料表會存放在 Spark 目錄中。 Hive 所建立的資料表會存放在 Hive 目錄中。 此行為不同於 Hive 和 Spark 會共用相同目錄的 HDInsight 3.6。 HDInsight 4.0 中的 Hive 和 Spark 整合須仰賴 Hive Warehouse Connector (HWC)。 HWC 是 Spark 與 Hive 之間的連絡管道。 了解 Hive Warehouse Connector

  • 在 HDInsight 4.0 中,如果您想要在 Hive 與 Spark 之間共用中繼存放區,您可以將 metastore.catalog.default 屬性變更為 Spark 叢集中的登錄區。 您可以在 Ambari 進階 spark2-hive-site-override 中找到此屬性。 請務必了解,中繼存放區的共用僅適用於外部登錄區資料表,如果您具有內部/受控登錄區資料表或 ACID 資料表,則無法共用。

更新自訂 Hive 中繼存放區密碼

使用自訂 Hive 中繼存放區資料庫時,您可以變更 SQL 資料庫密碼。 如果您變更自訂中繼存放區的密碼,在更新 HDInsight 叢集中的密碼之前,Hive 服務將無法運作。

若要更新 Hive 中繼存放區密碼:

  1. 開啟 Ambari UI。
  2. 按一下 [服務] --> [Hive] --> [設定] --> [資料庫]
  3. 將 [資料庫密碼] 欄位更新為新 SQL 伺服器資料庫密碼。
  4. 按一下 [測試連線] 按鈕,確定新密碼可正常運作。
  5. 按一下 [儲存] 按鈕。
  6. 遵循 Ambari 提示儲存設定,並重新啟動所需的服務。

Apache Oozie 中繼存放區

Apache Oozie 是一個可管理 Hadoop 作業的工作流程協調系統。 Oozie 支援 Apache MapReduce、Pig、Hive 等等的 Hadoop 作業。 Oozie 使用中繼存放區來儲存工作流程的詳細資料。 為提升使用 Oozie 時的效能,您可以使用 Azure SQL Database 作為自訂中繼存放區。 刪除叢集後,中繼存放區可讓您存取 Oozie 作業資料。

如需有關使用 Azure SQL Database 來建立 Oozie 中繼存放區的指示,請參閱使用 Apache Oozie 來處理工作流程

更新自訂 Oozie 中繼存放區密碼

使用自訂 Oozie 中繼存放區資料庫時,您可以變更 SQL 資料庫密碼。 如果您變更自訂中繼存放區的密碼,在更新 HDInsight 叢集中的密碼之前,Oozie 服務將無法運作。

若要更新 Oozie 中繼存放區密碼:

  1. 開啟 Ambari UI。
  2. 按一下 [服務] --> [Oozie] --> [設定] --> [資料庫]
  3. 將 [資料庫密碼] 欄位更新為新 SQL 伺服器資料庫密碼。
  4. 按一下 [測試連線] 按鈕,確定新密碼可正常運作。
  5. 按一下 [儲存] 按鈕。
  6. 遵循 Ambari 提示儲存設定,並重新啟動所需的服務。

自訂 Ambari DB

若要將您自己的外部資料庫與 HDInsight 上的 Apache Ambari 搭配使用,請參閱自訂 Apache Ambari 資料庫

下一步