次の方法で共有


Apache Superset™ をデプロイする

Note

Azure HDInsight on AKS は 2025 年 1 月 31 日に廃止されます。 2025 年 1 月 31 日より前に、ワークロードを Microsoft Fabric または同等の Azure 製品に移行することで、ワークロードの突然の終了を回避する必要があります。 サブスクリプション上に残っているクラスターは停止され、ホストから削除されることになります。

提供終了日までは基本サポートのみが利用できます。

重要

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

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

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

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

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

前提条件

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

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

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

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

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

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

  1. Azure CLI を設定します。

    a. 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) クラスターを作成します。 Superset がその ID を使用して Trino クラスターで認証できるようにするには、クラスターに関連付けたマネージド ID をバインドする必要があります。

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

    # ----- 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. Superset をデプロイする 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 を使用して Superset をデプロイします。

    # 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 に接続し、接続を作成します。

    Note

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

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

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

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

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

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

    4. [Trino] を選択します。

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

      この接続文字列は次の 3 箇所を変更する必要があります。

      プロパティ 説明
      ユーザー trino@ @ 記号の前の名前は、Trino への接続に使用されるユーザー名です。
      hostname mytrinocluster.00000000000000000000000000
      .eastus.hdinsightaks.net
      Trino クラスターのホスト名。
      この情報は、Azure portal のクラスターの [概要] ページで確認できます。
      catalog /tpch スラッシュの後は、既定のカタログ名です。
      このカタログは、視覚化するデータを含むカタログに変更する必要があります。

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

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

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

    6. [Advanced] (詳細設定) タブを選択し、[Additional Security] (追加のセキュリティ) に次の構成を入力します。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. [Connect] (接続) を選択します。

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

トラブルシューティング

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

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

    1. [secure extra] (追加のセキュリティ保護) が入力されていることを確認します。
    2. URL が正しいことを確認します。
    3. 独自のカタログを使用する前に、tpch カタログを使用してテストし、接続が機能していることを確認します。

次のステップ

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