Apache Spark™ クラスターで Hive メタストアを使用する方法

重要

現在、この機能はプレビュー段階にあります。 ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用されるその他の法律条項については、「Microsoft Azure プレビューの追加の使用条件」に記載されています。 この特定のプレビューについては、Azure HDInsight on AKS のプレビュー情報に関する記事をご覧ください。 質問や機能の提案については、詳細を記載した要求を AskHDInsight で送信してください。また、その他の更新情報については、Azure HDInsight コミュニティのフォローをお願いいたします。

複数のサービス間でデータとメタストアを共有することが不可欠です。 HIVE メタストアで一般的に使用されるメタストアの 1 つである HDInsight on AKS を使用すると、ユーザーは外部メタストアに接続できます。 この手順により、HDInsight ユーザーはエコシステム内の他のサービスにシームレスに接続できるようになります。

Azure HDInsight on AKS では、カスタム メタストアがサポートされます。運用クラスターではこれを推奨します。 必要な主な手順は次のとおりです

  1. Azure SQL データベースの作成
  2. 資格情報を格納するためのキー コンテナーを作成する
  3. Apache Spark™ を使用して AKS クラスターで HDInsight を作成するときに Metastore を構成する
  4. 外部メタストアを操作する (データベースを表示し、制限の選択 1 を実行する)。

クラスターの作成時に、HDInsight サービスによって外部メタストアに接続され、資格情報が確認される必要があります。

Azure SQL データベースの作成

  1. HDInsight クラスター用のカスタム Hive メタストアを設定する前に、Azure SQL Database を作成するか、既存のものを用意します。

    Note

    現在、HIVE メタストアには Azure SQL Database のみをサポートしています。 Hive の制限により、メタストアのデータベース名で "-" (ハイフン) 文字はサポートされていません。

資格情報を格納するためのキー コンテナーを作成する

  1. Azure Key Vault を作成します。

    Key Vault の目的は、SQL Database の作成時に設定された SQL Server 管理者パスワードを保存できるようにすることです。 HDInsight on AKS プラットフォームでは、資格情報を直接処理しません。 そのため、重要な資格情報を Azure Key Vault に保存する必要があります。 Azure Key Vault を作成する手順について説明します。

  2. Azure Key Vault の作成後に、次のロールを割り当てます

    オブジェクト Role 解説
    ユーザー割り当てマネージド ID (HDInsight クラスターで使用されるのと同じ UAMI) キー コンテナー シークレット ユーザー UAMI にロールを割り当てる方法を確認してください
    ユーザー (Azure Key Vault にシークレットを作成する) Key Vault Administrator ユーザーにロールを割り当てる方法を確認してください。

    Note

    このロールがないと、ユーザーはシークレットを作成できません。

  3. シークレットを作成します

    このステップにより、SQL Server 管理者パスワードをシークレットとして Azure Key Vault に保持できます。 シークレットの追加中に、パスワード (SQL DB で管理者に指定されたのと同じパスワード) を [値] フィールドに追加します。

    キー コンテナーの作成方法を示すスクリーンショット。

    シークレットの作成方法を示すスクリーンショット。

    Note

    シークレット名を必ずメモしておいてください (クラスター作成時に必要になります)。

HDInsight Spark クラスターの作成時にメタストアを構成する

  1. HDInsight on AKS クラスター プールに移動してクラスターを作成します。

    新しいクラスターを作成する方法を示すスクリーンショット。

  2. トグル ボタンを有効にして外部 Hive メタストアを追加し、次の詳細情報を入力します。

    [基本] タブを示すスクリーンショット。

  3. 残りの詳細は、AKS 上の HDInsight の Apache Spark クラスターのクラスター作成規則に従って入力されます。

  4. [確認と作成] をクリックします。

    [確認と作成] タブを示すスクリーンショット。

    Note

    • metastore のライフ サイクルは、クラスターのライフ サイクルに関連付けられないため、メタデータを失わずにクラスターの作成と削除を実行できます。 Hive スキーマなどのメタデータは、HDInsight クラスターを削除して再作成した後でも保持されます。
    • カスタム metastore では、複数のクラスターとクラスターの種類をその metastore にアタッチできます。

外部メタストアを操作する

  1. テーブルを作成する

    >> spark.sql("CREATE TABLE sampleTable (number Int, word String)")

    テーブルの作成方法を示すスクリーンショット。

  2. テーブルにデータを追加します

    >> spark.sql("INSERT INTO sampleTable VALUES (123, \"HDIonAKS\")");\

    insert ステートメントを示すスクリーンショット。

  3. テーブルを読み取ります

    >> spark.sql("select * from sampleTable").show()

    テーブルの読み取り方法を示すスクリーンショット。

リファレンス