Freigeben über


Bereitstellen von Apache Superset™

Hinweis

Azure HDInsight on AKS wird am 31. Januar 2025 eingestellt. Vor dem 31. Januar 2025 müssen Sie Ihre Workloads zu Microsoft Fabric oder einem gleichwertigen Azure-Produkt migrieren, um eine abruptes Beendigung Ihrer Workloads zu vermeiden. Die verbleibenden Cluster in Ihrem Abonnement werden beendet und vom Host entfernt.

Bis zum Einstellungsdatum ist nur grundlegende Unterstützung verfügbar.

Wichtig

Diese Funktion steht derzeit als Vorschau zur Verfügung. Die zusätzlichen Nutzungsbedingungen für Microsoft Azure-Vorschauen enthalten weitere rechtliche Bestimmungen, die für Azure-Features in Betaversionen, in Vorschauversionen oder anderen Versionen gelten, die noch nicht allgemein verfügbar gemacht wurden. Informationen zu dieser spezifischen Vorschau finden Sie unter Informationen zur Vorschau von Azure HDInsight on AKS. Bei Fragen oder Funktionsvorschlägen senden Sie eine Anfrage an AskHDInsight mit den entsprechenden Details, und folgen Sie uns für weitere Updates in der Azure HDInsight-Community.

Visualisierung ist unerlässlich, um Daten effektiv zu untersuchen, zu präsentieren und zu teilen. Apache Superset ermöglicht es Ihnen, in einer flexiblen Webbenutzeroberfläche Abfragen auszuführen, Daten zu visualisieren und Dashboards für Ihre Daten zu erstellen.

In diesem Artikel wird beschrieben, wie Sie eine Instanz der Apache Superset-Benutzeroberfläche in Azure bereitstellen und mit einem Trino-Cluster mit HDInsight on AKS verbinden, um Daten abzufragen und Dashboards zu erstellen.

Zusammenfassung der Schritte, die in diesem Artikel behandelt werden:

  1. Voraussetzungen
  2. Erstellen eines Kubernetes-Clusters für Apache Superset
  3. Bereitstellen von Apache Superset

Voraussetzungen

Verwenden Sie bei Verwendung von Windows Ubuntu unter WSL2, um diese Anweisungen in einer Linux-Bash-Shell in Windows auszuführen. Andernfalls müssen Sie die Befehle ändern, damit sie in Windows funktionieren.

Erstellen eines Trino-Clusters und Zuweisen einer verwalteten Identität

  1. Falls noch nicht geschehen, erstellen Sie einen Trino-Cluster mit HDInsight on AKS.

  2. Apache Superset benötigt eine verwaltete Identität (MSI), um Trino aufzurufen. Erstellen Sie eine benutzerseitig zugewiesene verwaltete Identität, oder wählen Sie eine vorhandene aus.

  3. Ändern Sie Ihre Trino-Clusterkonfiguration, um der in Schritt 2 erstellten verwalteten Identität das Ausführen von Abfragen zu erlauben. Informationen zum Verwalten des Zugriffs finden Sie hier.

Installieren lokaler Tools

  1. Richten Sie die Azure-Befehlszeilenschnittstelle (Command Line Interface, CLI) ein.

    a. Installieren Sie die Azure-Befehlszeilenschnittstelle.

    b. Melden Sie sich bei der Azure CLI an: az login.

    c. Installieren Sie die Azure CLI-Vorschauerweiterung.

    # 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. Installieren Sie Kubernetes.

  3. Installieren Sie Helm.

Erstellen eines Kubernetes-Clusters für Apache Superset

In diesem Schritt erstellen Sie den Azure Kubernetes Service (AKS)-Cluster, in dem Sie Apache Superset installieren können. Sie müssen die verwaltete Identität, die Sie dem Cluster zugeordnet haben, binden, damit Superset sich mit dieser Identität beim Trino-Cluster authentifizieren kann.

  1. Erstellen Sie in Bash die folgenden Variablen für Ihre Superset-Installation.

    # ----- 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. Wählen Sie das Abonnement aus, in dem Sie Superset installieren möchten.

    az account set --subscription $SUBSCRIPTION
    
  3. Aktivieren Sie das Feature „Podidentität“ in Ihrem aktuellen Abonnement.

    az feature register --name EnablePodIdentityPreview --namespace Microsoft.ContainerService
    az provider register -n Microsoft.ContainerService
    
  4. Erstellen Sie einen AKS-Cluster, um Superset bereitzustellen.

    # 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
    

Bereitstellen von Apache Superset

  1. Die einfachste Möglichkeit, um Superset die sichere Kommunikation mit dem Trino-Cluster zu ermöglichen, besteht darin, Superset für die Verwendung der verwalteten Azure-Identität einzurichten. Durch diesen Schritt verwendet Ihr Cluster die Identität, die Sie ihm zugewiesen haben, ohne dass Geheimnisse manuell bereitgestellt oder durchlaufen werden.

    Sie müssen eine Datei „values.yaml“ für die Superset-Bereitstellung mit Helm erstellen. Sehen Sie hierzu den Beispielcode an.

    Optionaler: Verwenden Sie Microsoft Azure Postgres anstelle der im Kubernetes-Cluster bereitgestellten Postgres-Instanz.

    Erstellen Sie eine Instanz von Azure Database for PostgreSQL, um eine einfachere Wartung sowie Sicherungen zu ermöglichen und die Zuverlässigkeit zu erhöhen.

    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. Fügen Sie der Datei „values.yaml“ bei Bedarf weitere Abschnitte hinzu. Die Superset-Dokumentation empfiehlt, das Standardkennwort zu ändern.

  3. Stellen Sie Superset mithilfe von Helm bereit.

    # 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. Stellen Sie eine Verbindung mit Superset her, und erstellen Sie eine Verbindung.

    Hinweis

    Sie sollten für jeden Trino-Katalog, den Sie verwenden möchten, eine separate Verbindung erstellen.

    1. Stellen Sie mithilfe der Portweiterleitung eine Verbindung mit Superset her.

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

    2. Öffnen Sie einen Webbrowser, und navigieren Sie zu http://localhost:8088/.. Wenn Sie das Administratorkennwort nicht geändert haben, melden Sie sich mit dem Benutzernamen „admin“ und dem Kennwort „admin“ an.

    3. Klicken Sie auf der rechten Seite auf das Pluszeichen (+), und wählen Sie im angezeigten Menü „Connect database“ aus.

      Screenshot der Verbindungsdatenbank.

    4. Wählen Sie Trino aus.

    5. Geben Sie den SQLAlchemy-URI Ihres Trino-Clusters ein.

      Sie müssen drei Teile dieser Verbindungszeichenfolge ändern:

      Eigenschaft Beispiel BESCHREIBUNG
      user trino@ Der Name vor dem @-Symbol ist der Benutzername, der für die Verbindung mit Trino verwendet wird.
      hostname mytrinocluster.00000000000000000000000000
      .eastus.hdinsightaks.net
      Der Hostname Ihres Trino-Clusters.
      Sie finden diese Informationen im Azure-Portal auf der Seite „Übersicht“ Ihres Clusters.
      Katalog /tpch Nach dem Schrägstrich steht der Name des Standardkatalogs.
      Sie müssen diesen Katalog in den Katalog ändern, der die Daten enthält, die Sie visualisieren möchten.

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

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

      Screenshot der Verbindungszeichenfolge.

    6. Wählen Sie die Registerkarte „Advanced“ aus, und geben Sie unter „Additional Security“ die folgende Konfiguration ein. Ersetzen Sie den Wert von „client_id“ durch die GUID-Client-ID für Ihre verwaltete Identität (diesen Wert finden Sie im Azure-Portal auf der Seite mit der Ressourcenübersicht Ihrer verwalteten Identität).

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

      Screenshot, der das Hinzufügen von MSI zeigt.

    7. Wählen Sie „Connect“ aus.

Jetzt können Sie Datasets und Diagramme erstellen.

Problembehandlung

  • Vergewissern Sie sich, dass Ihr Trino-Cluster so konfiguriert wurde, dass die benutzerseitig zugewiesene verwaltete Identität des Superset-Clusters eine Verbindung herstellen kann. Sie können diesen Wert im JSON-Ressourcencode Ihres Trino-Clusters überprüfen (authorizationProfile/userIds). Stellen Sie sicher, dass Sie die Objekt-ID der Identität verwenden, nicht die Client-ID.

  • Stellen Sie sicher, dass in der Verbindungskonfiguration keine Fehler vorhanden sind.

    1. Stellen Sie sicher, dass der Abschnitt „Secure Extra“ ausgefüllt ist.
    2. Stellen Sie sicher, dass Ihre URL korrekt ist.
    3. Testen Sie mit dem tpch-Katalog, ob die Verbindung funktioniert, bevor Sie Ihren eigenen Katalog verwenden.

Nächste Schritte

Um Superset im Internet verfügbar zu machen und die Benutzeranmeldung mit Microsoft Entra ID zuzulassen, müssen Sie die folgenden allgemeinen Schritte ausführen. Für diese Schritte sind mindestens Grundkenntnisse in Kubernetes erforderlich.