Schnellstart: Erstellen eines Apache Spark-Clusters in Azure HDInsight mithilfe einer ARM-VorlageQuickstart: Create Apache Spark cluster in Azure HDInsight using ARM template

In dieser Schnellstartanleitung verwenden Sie eine Azure Resource Manager-Vorlage (ARM-Vorlage), um einen Apache Spark-Cluster in Azure HDInsight zu erstellen.In this quickstart, you use an Azure Resource Manager template (ARM template) to create an Apache Spark cluster in Azure HDInsight. Anschließend erstellen Sie eine Jupyter Notebook-Instanz und führen damit Spark SQL-Abfragen für Apache Hive-Tabellen aus.You then create a Jupyter notebook, and use it to run Spark SQL queries against Apache Hive tables. Azure HDInsight ist ein umfassender, verwalteter Open-Source-Analysedienst für Unternehmen.Azure HDInsight is a managed, full-spectrum, open-source analytics service for enterprises. Das Apache Spark-Framework für HDInsight ermöglicht schnelle Datenanalysen und Clustercomputing mit In-Memory-Verarbeitung.The Apache Spark framework for HDInsight enables fast data analytics and cluster computing using in-memory processing. Die Jupyter Notebook-Instanz ermöglicht es Ihnen, mit Ihren Daten zu interagieren, Code mit Markdowntext zu kombinieren und einfache Visualisierungen durchzuführen.Jupyter notebook lets you interact with your data, combine code with markdown text, and do simple visualizations.

Bei gemeinsamer Verwendung mehrerer Cluster empfiehlt sich die Erstellung eines virtuellen Netzwerks. Bei Verwendung eines Spark-Clusters sollten Sie den Hive Warehouse Connector verwenden.If you're using multiple clusters together, you'll want to create a virtual network, and if you're using a Spark cluster you'll also want to use the Hive Warehouse Connector. Weitere Informationen finden Sie unter Planen eines virtuellen Netzwerks für Azure HDInsight sowie unter Integrieren von Apache Spark und Apache Hive per Hive Warehouse Connector.For more information, see Plan a virtual network for Azure HDInsight and Integrate Apache Spark and Apache Hive with the Hive Warehouse Connector.

Eine ARM-Vorlage ist eine JSON-Datei (JavaScript Object Notation), in der die Infrastruktur und die Konfiguration für Ihr Projekt definiert sind.An ARM template is a JavaScript Object Notation (JSON) file that defines the infrastructure and configuration for your project. Für die Vorlage wird deklarative Syntax verwendet. Hiermit können Sie angeben, was Sie bereitstellen möchten, ohne dass Sie die Folge der Programmierbefehle für die Erstellung schreiben müssen.The template uses declarative syntax, which lets you state what you intend to deploy without having to write the sequence of programming commands to create it.

Wenn Ihre Umgebung die Voraussetzungen erfüllt und Sie mit der Verwendung von ARM-Vorlagen vertraut sind, klicken Sie auf die Schaltfläche In Azure bereitstellen.If your environment meets the prerequisites and you're familiar with using ARM templates, select the Deploy to Azure button. Die Vorlage wird im Azure-Portal geöffnet.The template will open in the Azure portal.

In Azure bereitstellenDeploy to Azure

VoraussetzungenPrerequisites

Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.If you don't have an Azure subscription, create a free account before you begin.

Überprüfen der VorlageReview the template

Die in dieser Schnellstartanleitung verwendete Vorlage stammt von der Seite mit den Azure-Schnellstartvorlagen.The template used in this quickstart is from Azure Quickstart Templates.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "clusterName": {
      "type": "string",
      "metadata": {
        "description": "The name of the HDInsight cluster to create."
      }
    },
    "clusterLoginUserName": {
      "type": "string",
      "defaultValue": "admin",
      "metadata": {
        "description": "These credentials can be used to submit jobs to the cluster and to log into cluster dashboards."
      }
    },
    "clusterLoginPassword": {
      "type": "securestring",
      "metadata": {
        "description": "The password must be at least 10 characters in length and must contain at least one digit, one non-alphanumeric character, and one upper or lower case letter."
      }
    },
    "sshUserName": {
      "type": "string",
      "defaultValue": "sshuser",
      "metadata": {
        "description": "These credentials can be used to remotely access the cluster."
      }
    },
    "sshPassword": {
      "type": "securestring",
      "metadata": {
        "description": "The password must be at least 10 characters in length and must contain at least one digit, one non-alphanumeric character, and one upper or lower case letter."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Location for all resources."
      }
    }
  },
  "variables": {
    "defaultStorageAccount": {
      "name": "[uniqueString(resourceGroup().id)]",
      "type": "Standard_LRS"
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "name": "[variables('defaultStorageAccount').name]",
      "location": "[parameters('location')]",
      "apiVersion": "2016-01-01",
      "sku": {
        "name": "[variables('defaultStorageAccount').type]"
      },
      "kind": "Storage",
      "properties": {}
    },
    {
      "type": "Microsoft.HDInsight/clusters",
      "name": "[parameters('clusterName')]",
      "location": "[parameters('location')]",
      "apiVersion": "2018-06-01-preview",
      "dependsOn": [
        "[concat('Microsoft.Storage/storageAccounts/',variables('defaultStorageAccount').name)]"
      ],
      "tags": {},
      "properties": {
        "clusterVersion": "3.6",
        "osType": "Linux",
        "tier": "Standard",
        "clusterDefinition": {
          "kind": "spark",
          "configurations": {
            "gateway": {
              "restAuthCredential.isEnabled": true,
              "restAuthCredential.username": "[parameters('clusterLoginUserName')]",
              "restAuthCredential.password": "[parameters('clusterLoginPassword')]"
            }
          }
        },
        "storageProfile": {
          "storageaccounts": [
            {
              "name": "[replace(replace(reference(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name), '2016-01-01').primaryEndpoints.blob,'https://',''),'/','')]",
              "isDefault": true,
              "container": "[parameters('clusterName')]",
              "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name), '2016-01-01').keys[0].value]"
            }
          ]
        },
        "computeProfile": {
          "roles": [
            {
              "name": "headnode",
              "targetInstanceCount": 2,
              "hardwareProfile": {
                "vmSize": "Standard_D12_v2"
              },
              "osProfile": {
                "linuxOperatingSystemProfile": {
                  "username": "[parameters('sshUserName')]",
                  "password": "[parameters('sshPassword')]"
                }
              },
              "virtualNetworkProfile": null,
              "scriptActions": []
            },
            {
              "name": "workernode",
              "targetInstanceCount": 2,
              "hardwareProfile": {
                "vmSize": "Standard_D13_v2"
              },
              "osProfile": {
                "linuxOperatingSystemProfile": {
                  "username": "[parameters('sshUserName')]",
                  "password": "[parameters('sshPassword')]"
                }
              },
              "virtualNetworkProfile": null,
              "scriptActions": []
            }
          ]
        }
      }
    }
  ],
  "outputs": {
    "storage": {
      "type": "object",
      "value": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name))]"
    },
    "cluster": {
      "type": "object",
      "value": "[reference(resourceId('Microsoft.HDInsight/clusters',parameters('clusterName')))]"
    }
  }
}

Zwei Azure-Ressourcen sind in der Vorlage definiert:Two Azure resources are defined in the template:

Bereitstellen der VorlageDeploy the template

  1. Wählen Sie unten die Schaltfläche In Azure bereitstellen aus, um sich bei Azure anzumelden und die ARM-Vorlage zu öffnen.Select the Deploy to Azure button below to sign in to Azure and open the ARM template.

    In Azure bereitstellenDeploy to Azure

  2. Geben Sie folgende Werte ein bzw. wählen diese aus:Enter or select the following values:

    EigenschaftProperty BESCHREIBUNGDescription
    SubscriptionSubscription Wählen Sie in der Dropdownliste das Azure-Abonnement aus, das für den Cluster verwendet wird.From the drop-down list, select the Azure subscription that's used for the cluster.
    Resource groupResource group Wählen Sie in der Dropdownliste Ihre vorhandene Ressourcengruppe oder die Option Neu erstellen aus.From the drop-down list, select your existing resource group, or select Create new.
    StandortLocation Als Wert wird automatisch der Speicherort für die Ressourcengruppe eingefügt.The value will autopopulate with the location used for the resource group.
    ClusternameCluster Name Geben Sie einen global eindeutigen Namen ein.Enter a globally unique name. Verwenden Sie für diese Vorlage nur Kleinbuchstaben und Zahlen.For this template, use only lowercase letters, and numbers.
    Benutzername für ClusteranmeldungCluster Login User Name Geben Sie den Benutzernamen an, der Standardwert ist admin.Provide the username, default is admin.
    Kennwort für ClusteranmeldungCluster Login Password Geben Sie ein Kennwort an.Provide a password. Das Kennwort muss mindestens zehn Zeichen lang sein und mindestens eine Ziffer, einen Groß- und einen Kleinbuchstaben sowie ein nicht alphanumerisches Zeichen enthalten (mit Ausnahme folgender Zeichen: ' " `).The password must be at least 10 characters in length and must contain at least one digit, one uppercase, and one lower case letter, one non-alphanumeric character (except characters ' " ` ).
    SSH-BenutzernameSsh User Name Geben Sie den Benutzernamen an, der Standardwert ist sshuser.Provide the username, default is sshuser
    SSH-KennwortSsh Password Geben Sie das Kennwort an.Provide the password.

    Erstellen eines Spark-Clusters in HDInsight unter Verwendung einer Azure Resource Manager-VorlageCreate Spark cluster in HDInsight using Azure Resource Manager template

  3. Sehen Sie sich die GESCHÄFTSBEDINGUNGEN an.Review the TERMS AND CONDITIONS. Wählen Sie anschließend Ich stimme den oben genannten Geschäftsbedingungen zu und dann Kaufen aus.Then select I agree to the terms and conditions stated above, then Purchase. Sie erhalten eine Benachrichtigung, dass die Bereitstellung derzeit durchgeführt wird.You'll receive a notification that your deployment is in progress. Das Erstellen eines Clusters dauert ca. 20 Minuten.It takes about 20 minutes to create a cluster.

Sollte bei der HDInsight-Clustererstellung ein Problem auftreten, verfügen Sie unter Umständen nicht über die erforderlichen Berechtigungen.If you run into an issue with creating HDInsight clusters, it could be that you don't have the right permissions to do so. Weitere Informationen finden Sie unter Voraussetzungen für die Zugriffssteuerung.For more information, see Access control requirements.

Überprüfen der bereitgestellten RessourcenReview deployed resources

Nachdem der Cluster erstellt wurde, erhalten Sie die Benachrichtigung Bereitstellung erfolgreich mit dem Link Zu Ressource wechseln.Once the cluster is created, you'll receive a Deployment succeeded notification with a Go to resource link. Auf der Seite „Ressourcengruppe“ sind der neue HDInsight-Cluster und der mit dem Cluster verbundene Standardspeicher aufgeführt.Your Resource group page will list your new HDInsight cluster and the default storage associated with the cluster. Jeder Cluster verfügt über eine Abhängigkeit von einem Azure Storage-Konto oder einem Azure Data Lake Storage-Konto.Each cluster has an Azure Storage account or an Azure Data Lake Storage account dependency. Dieses wird als Standardspeicherkonto bezeichnet.It's referred as the default storage account. Der HDInsight-Cluster und das zugehörige Speicherkonto müssen sich in derselben Azure-Region befinden.The HDInsight cluster and its default storage account must be colocated in the same Azure region. Beim Löschen von Clustern wird das Speicherkonto nicht gelöscht.Deleting clusters doesn't delete the storage account.

Erstellen eines Jupyter NotebooksCreate a Jupyter notebook

Jupyter Notebook ist eine interaktive Notebook-Umgebung, die verschiedene Programmiersprachen unterstützt.Jupyter Notebook is an interactive notebook environment that supports various programming languages. Das Notebook ermöglicht es Ihnen, mit Ihren Daten zu interagieren, Code mit Markdowntext zu kombinieren und einfache Visualisierungen durchzuführen.The notebook allows you to interact with your data, combine code with markdown text, and perform simple visualizations.

  1. Öffnen Sie das Azure-Portal.Open the Azure portal.

  2. Wählen Sie HDInsight-Cluster und dann den von Ihnen erstellten Cluster aus.Select HDInsight clusters, and then select the cluster you created.

    Öffnen eines HDInsight-Clusters im Azure-Portal

  3. Wählen Sie im Portal im Abschnitt Clusterdashboards die Option Jupyter Notebook aus.From the portal, in Cluster dashboards section, select Jupyter Notebook. Geben Sie die Anmeldeinformationen für den Cluster ein, wenn Sie dazu aufgefordert werden.If prompted, enter the cluster login credentials for the cluster.

    Öffnen von Jupyter Notebook zum Ausführen einer interaktiven Spark SQL-AbfrageOpen Jupyter Notebook to run interactive Spark SQL query

  4. Wählen Sie Neu > PySpark aus, um ein Notebook zu erstellen.Select New > PySpark to create a notebook.

    Erstellen einer Jupyter Notebook-Instanz zum Ausführen einer interaktiven Spark SQL-AbfrageCreate a Jupyter Notebook to run interactive Spark SQL query

    Ein neues Notebook mit dem Namen „Untitled“ (Untitled.pynb) wird erstellt und geöffnet.A new notebook is created and opened with the name Untitled(Untitled.pynb).

Ausführen von Apache Spark-SQL-AnweisungenRun Apache Spark SQL statements

SQL (Structured Query Language) ist die gängigste und am häufigsten verwendete Sprache zum Abfragen und Transformieren von Daten.SQL (Structured Query Language) is the most common and widely used language for querying and transforming data. Spark SQL fungiert als Erweiterung von Apache Spark für die Verarbeitung strukturierter Daten mit der vertrauten SQL-Syntax.Spark SQL functions as an extension to Apache Spark for processing structured data, using the familiar SQL syntax.

  1. Überprüfen Sie, ob der Kernel bereit ist.Verify the kernel is ready. Der Kernel ist bereit, wenn im Notebook neben dem Kernelnamen ein leerer Kreis angezeigt wird.The kernel is ready when you see a hollow circle next to the kernel name in the notebook. Ein ausgefüllter Kreis gibt an, dass der Kernel ausgelastet ist.Solid circle denotes that the kernel is busy.

    KernelstatusKernel status

    Wenn Sie das Notebook zum ersten Mal starten, führt der Kernel im Hintergrund einige Aufgaben durch.When you start the notebook for the first time, the kernel performs some tasks in the background. Warten Sie, bis der Kernel bereit ist.Wait for the kernel to be ready.

  2. Fügen Sie den folgenden Code in eine leere Zelle ein, und drücken Sie UMSCHALT+EINGABE , um den Code auszuführen.Paste the following code in an empty cell, and then press SHIFT + ENTER to run the code. Der Befehl listet die Hive-Tabellen im Cluster auf:The command lists the Hive tables on the cluster:

    %%sql
    SHOW TABLES
    

    Wenn Sie eine Jupyter Notebook-Instanz mit Ihrem HDInsight-Cluster verwenden, erhalten Sie eine vordefinierte spark-Sitzung, die Sie zum Ausführen von Hive-Abfragen mit Spark SQL verwenden können.When you use a Jupyter Notebook with your HDInsight cluster, you get a preset spark session that you can use to run Hive queries using Spark SQL. %%sql weist Jupyter Notebook an, die vordefinierte spark-Sitzung für die Ausführung der Hive-Abfrage zu verwenden.%%sql tells Jupyter Notebook to use the preset spark session to run the Hive query. Die Abfrage ruft die ersten zehn Zeilen aus einer Hive-Tabelle (hivesampletable) ab, die standardmäßig in allen HDInsight-Clustern enthalten ist.The query retrieves the top 10 rows from a Hive table (hivesampletable) that comes with all HDInsight clusters by default. Wenn Sie die Abfrage erstmals übermitteln, erstellt Jupyter eine Spark-Anwendung für das Notebook.The first time you submit the query, Jupyter will create a Spark application for the notebook. Dieser Vorgang dauert ungefähr 30 Sekunden.It takes about 30 seconds to complete. Sobald die Spark-Anwendung bereit ist, wird die Abfrage innerhalb etwa einer Sekunde ausgeführt, und die Ergebnisse werden zurückgegeben.Once the Spark application is ready, the query is executed in about a second and produces the results. Die Ausgabe sieht wie folgt aus:The output looks like:

    Apache Hive-Abfrage in HDInsightApache Hive query in HDInsight

    Bei jeder Ausführung einer Abfrage in Jupyter wird auf der Titelleiste Ihres Webbrowserfensters neben dem Notebooktitel der Status (Beschäftigt) angezeigt.Every time you run a query in Jupyter, your web browser window title shows a (Busy) status along with the notebook title. Außerdem sehen Sie in der rechten oberen Ecke einen ausgefüllten Kreis neben dem Text PySpark.You also see a solid circle next to the PySpark text in the top-right corner.

  3. Führen Sie eine weitere Abfrage aus, um die Daten in hivesampletable anzuzeigen.Run another query to see the data in hivesampletable.

    %%sql
    SELECT * FROM hivesampletable LIMIT 10
    

    Der Bildschirm wird aktualisiert, und die Ausgabe der Abfrage wird angezeigt.The screen shall refresh to show the query output.

    Hive-Abfrageausgabe in HDInsightHive query output in HDInsight

  4. Wählen Sie im Menü Datei des Notebooks die Option Schließen und Anhalten aus.From the File menu on the notebook, select Close and Halt. Durch Herunterfahren des Notebooks werden die Clusterressourcen freigegeben (einschließlich der Spark-Anwendung).Shutting down the notebook releases the cluster resources, including Spark application.

Bereinigen von RessourcenClean up resources

Nachdem Sie den Schnellstart abgeschlossen haben, können Sie den Cluster löschen.After you complete the quickstart, you may want to delete the cluster. Mit HDInsight werden Ihre Daten in Azure Storage gespeichert, sodass Sie einen Cluster problemlos löschen können, wenn er nicht verwendet wird.With HDInsight, your data is stored in Azure Storage, so you can safely delete a cluster when it isn't in use. Für einen HDInsight-Cluster fallen auch dann Gebühren an, wenn er nicht verwendet wird.You're also charged for an HDInsight cluster, even when it isn't in use. Da die Gebühren für den Cluster erheblich höher sind als die Kosten für den Speicher, ist es sinnvoll, nicht verwendete Cluster zu löschen.Since the charges for the cluster are many times more than the charges for storage, it makes economic sense to delete clusters when they aren't in use.

Navigieren Sie im Azure-Portal zu Ihrem Cluster, und wählen Sie Löschen aus.From the Azure portal, navigate to your cluster, and select Delete.

Azure-Portal: Löschen eines HDInsight-ClustersAzure portal delete an HDInsight cluster

Sie können auch den Namen der Ressourcengruppe auswählen, um die Seite für die Ressourcengruppe zu öffnen, und dann Ressourcengruppe löschen auswählen.You can also select the resource group name to open the resource group page, and then select Delete resource group. Indem Sie die Ressourcengruppe löschen, löschen Sie sowohl den HDInsight-Cluster als auch das Standardspeicherkonto.By deleting the resource group, you delete both the HDInsight cluster, and the default storage account.

Nächste SchritteNext steps

In dieser Schnellstartanleitung haben Sie erfahren, wie Sie einen Apache Spark-Cluster in HDInsight erstellen und eine einfache Spark SQL-Abfrage ausführen.In this quickstart, you learned how to create an Apache Spark cluster in HDInsight and run a basic Spark SQL query. Im nächsten Tutorial erfahren Sie, wie Sie mithilfe eines HDInsight-Clusters interaktive Abfragen für Beispieldaten ausführen.Advance to the next tutorial to learn how to use an HDInsight cluster to run interactive queries on sample data.