次の方法で共有


Apache Superset™ のデプロイ

大事な

AKS 上の Azure HDInsight は、2025 年 1 月 31 日に廃止されました。 のこの発表でについてもっと知ることができます。

ワークロードの突然の終了を回避するには、ワークロードを Microsoft Fabric または同等の Azure 製品 に移行する必要があります。

大事な

この機能は現在プレビュー段階です。 Microsoft Azure プレビューの 追加使用条件 には、ベータ版、プレビュー版、または一般公開されていない Azure 機能に適用される、より多くの法的条件が含まれています。 この特定のプレビューの詳細については、AKS プレビュー情報 Azure HDInsightを参照してください。 ご質問や機能提案がある場合は、詳細を添えて AskHDInsight にリクエストを送信してください。また、Azure HDInsight Community をフォローして、さらなるアップデートをご覧ください。

視覚化は、データを効果的に探索、提示、共有するために不可欠です。 Apache Superset を使用すると、柔軟な Web UI でデータに対してクエリの実行、視覚化、ダッシュボードの構築を行うことができます。

この記事では、Azure に Apache Superset UI インスタンスをデプロイし、AKS 上の HDInsight を使用して Trino クラスターに接続してデータのクエリを実行し、ダッシュボードを作成する方法について説明します。

この記事で説明する手順の概要:

  1. 前提条件
  2. Apache Superset用の Kubernetes クラスターを作成します。
  3. Apache Supersetをデプロイします。

前提 条件

Windows を使用している場合は、WSL2 Ubuntu を使用して、Windows 内の bash シェル Linux 環境でこれらの手順を実行します。 それ以外の場合は、Windows で動作するようにコマンドを変更する必要があります。

Trino クラスターを作成し、マネージド ID を割り当てる

  1. まだ作成していない場合は、AKS で HDInsight を使用してTrino クラスターを作成します。

  2. Apache Superset で Trino を呼び出すには、マネージド ID (MSI) が必要です。 既存の ユーザー割り当てマネージド IDを作成または選択します。

  3. 手順 2 で作成したマネージド ID がクエリを実行できるように、Trino クラスター構成を変更します。 アクセスを管理する方法について説明します。

ローカル ツールをインストールする

  1. Azure CLI をセットアップします。

    ある。 Azure CLI インストールします。

    b. Azure CLI: az loginにログインします。

    c. Azure CLI プレビュー拡張機能をインストールします。

    # Install the aks-preview extension
    az extension add --name aks-preview
    
    # Update the extension to make sure you've the latest version installed
    az extension update --name aks-preview
    
  2. Kubernetes インストールします。

  3. Helm をインストールします。

Apache Superset 用の kubernetes クラスターを作成する

この手順では、Apache Superset をインストールできる Azure Kubernetes Service (AKS) クラスターを作成します。 スーパーセットがその ID を使用して Trino クラスターで認証できるようにするには、クラスターに関連付けられているマネージド ID をバインドする必要があります。

  1. Bash で Superset インストール用に次の変数を作成します。

    # ----- Parameters ------
    
    # The subscription ID where you want to install Superset
    SUBSCRIPTION=
    # Superset cluster name (visible only to you)
    CLUSTER_NAME=trinosuperset 
    # Resource group containing the Azure Kubernetes service
    RESOURCE_GROUP_NAME=trinosuperset 
    # The region to deploy Superset (ideally same region as Trino): to list regions: az account list-locations REGION=westus3 
    # The resource path of your managed identity. To get this resource path:
    #   1. Go to the Azure Portal and find your user assigned managed identity
    #   2. Select JSON View on the top right
    #   3. Copy the Resource ID value.
    MANAGED_IDENTITY_RESOURCE=
    
  2. Superset をインストールするサブスクリプションを選択します。

    az account set --subscription $SUBSCRIPTION
    
  3. 現在のサブスクリプションでポッド ID 機能を有効にします。

    az feature register --name EnablePodIdentityPreview --namespace Microsoft.ContainerService
    az provider register -n Microsoft.ContainerService
    
  4. スーパーセットをデプロイする AKS クラスターを作成します。

    # Create resource group
    az group create --location $REGION --name $RESOURCE_GROUP_NAME
    
    # Create AKS cluster
    az \
    aks create \
    -g $RESOURCE_GROUP_NAME \
    -n $CLUSTER_NAME \
    --node-vm-size Standard_DS2_v2 \
    --node-count 3 \
    --enable-managed-identity \
    --assign-identity $MANAGED_IDENTITY_RESOURCE \
    --assign-kubelet-identity $MANAGED_IDENTITY_RESOURCE
    
    # Set the context of your new Kubernetes cluster
    az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME
    

Apache Superset のデプロイ

  1. Superset が Trino クラスターと安全に通信できるようにするには、Azure マネージド ID を使用するように Superset を設定するのが最も簡単な方法です。 この手順は、クラスターで割り当てた ID を、手動でデプロイしたり、シークレットを循環させたりせずに使用することを意味します。

    Superset Helm デプロイ用の values.yaml ファイルを作成する必要があります。 サンプル コード 参照してください。

    省略可能な: Kubernetes クラスター内にデプロイされた Postgres を使用する代わりに、Microsoft Azure Postgres を使用します。

    メンテナンスを容易にし、バックアップを可能にし、信頼性を高めるために、"Azure Database for PostgreSQL" インスタンスを作成します。

    postgresql:
      enabled: false
    
    supersetNode:
      connections:
        db_host: '{{SERVER_NAME}}.postgres.database.azure.com'
        db_port: '5432'
        db_user: '{{POSTGRES_USER}}'
        db_pass: '{{POSTGRES_PASSWORD}}'
        db_name: 'postgres' # default db name for Azure Postgres
    
  2. 必要に応じて、values.yaml の他のセクションを追加します。 Superset のドキュメントは 既定のパスワードの変更をお勧めします。

  3. Helm を使用してスーパーセットをデプロイします。

    # Verify you have the context of the right Kubernetes cluster
    kubectl cluster-info
    # Add the Superset repository
    helm repo add superset https://apache.github.io/superset
    # Deploy
    helm repo update
    helm upgrade --install --values values.yaml superset superset/superset
    
  4. Superset に接続し、接続を作成します。

    手記

    使用する Trino カタログごとに個別の接続を作成する必要があります。

    1. ポート フォワーディングを使用して Superset に接続します。

      kubectl port-forward service/superset 8088:8088 --namespace default

    2. Web ブラウザーを開き、http://localhost:8088/. に移動します 管理者パスワードを変更しなかった場合は、ユーザー名 :admin、password: admin を使用してログインします。

    3. 右側のプラス '+' メニューから [データベースの接続] を選択します。

      接続データベースを示すスクリーンショット。

    4. Trinoを選択します。

    5. Trino クラスターの SQL Alchemy URI を入力します。

      この接続文字列の 3 つの部分を変更する必要があります。

      財産 説明
      利用者 trino@ @ 記号の前の名前は、Trino への接続に使用されるユーザー名です。
      ホスト名 mytrinocluster.0000000000000000000000000000000
      .eastus.hdinsightaks.net
      Trino クラスターのホスト名。
      この情報は、Azure portal のクラスターの [概要] ページから取得できます。
      カタログ /tpch スラッシュの後に、既定のカタログ名を指定します。
      このカタログは、視覚化するデータを含むカタログに変更する必要があります。

      trino://$USER@$TRINO_CLUSTER_HOST_NAME.hdinsightaks.net:443/$DEFAULT_CATALOG

      例: trino://trino@mytrinocluster.00000000000000000000000000.westus3.hdinsightaks.net:443/tpch

      接続文字列を示すスクリーンショット。

    6. [詳細設定] タブを選択し、[追加のセキュリティ] に次の構成を入力します。client_idの値をマネージド ID の GUID クライアント ID に置き換えます (この値は、Azure portal のマネージド ID リソースの概要ページにあります)。

       {
         "auth_method": "azure_msi",
         "auth_params":
         {
           "scope": "https://clusteraccess.hdinsightaks.net/.default",
           "client_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
         }
       }
      

      MSI の追加を示すスクリーンショット。

    7. [接続] を選択します。

これで、データセットとグラフを作成する準備ができました。

トラブルシューティング

  • Trino クラスターが、Superset クラスターのユーザー割り当てマネージド ID が接続できるように構成されていることを確認します。 Trino クラスターのリソース JSON (authorizationProfile/userIds) を調べることで、この値を確認できます。 クライアント ID ではなく、ID のオブジェクト ID を使用していることを確認します。

  • 接続構成に間違いがないことを確認します。

    1. 「セキュア・エクストラ」が入力されていることを確認します。
    2. URL が正しい。
    3. テストに使用する tpch カタログを使用して、独自のカタログを使用する前に接続が機能していることを確認します。

次の手順

スーパーセットをインターネットに公開するには、Microsoft Entra ID を使用してユーザーログインを許可します。次の一般的な手順を実行する必要があります。 これらの手順には、Kubernetes の中間以上のエクスペリエンスが必要です。

  • Superset 用に Microsoft Entra ID OAuth2 ログインを構成する