Bagikan melalui


Mulai Cepat: Membuat kluster Apache Spark di Azure HDInsight menggunakan templat ARM

Dalam mulai cepat ini, Anda menggunakan templat Azure Resource Manager (templat ARM) untuk membuat kluster Apache Spark di Azure HDInsight. Kemudian, Anda membuat file Jupyter Notebook, dan menggunakannya untuk menjalankan kueri SQL Spark terhadap tabel Apache Hive. Azure HDInsight merupakan layanan analitik sumber terbuka terkelola dengan spektrum penuh untuk perusahaan. Kerangka kerja Apache Spark untuk HDInsight memungkinkan analitik data dan komputasi kluster yang cepat menggunakan pemrosesan dalam memori. Jupyter Notebook memungkinkan Anda berinteraksi dengan data, menggabungkan kode dengan teks {i>markdown

Jika menggunakan beberapa klaster bersama-sama, Anda dapat membuat jaringan virtual, dan jika Anda menggunakan klaster Spark, Anda juga dapat menggunakan Hive Warehouse Connector. Untuk informasi selengkapnya, lihat Merencanakan jaringan virtual untuk Azure HDInsight dan Mengintegrasikan Apache Spark dan Apache Hive dengan Hive Warehouse Connector.

Templat Azure Resource Manager adalah file JavaScript Object Notation (JSON) yang menentukan infrastruktur dan konfigurasi untuk proyek Anda. Template tersebut menggunakan sintaksis deklaratif. Anda menjelaskan penyebaran yang Dimaksudkan tanpa menulis urutan perintah pemrograman untuk membuat penyebaran.

Jika lingkungan Anda telah memenuhi prasyarat dan Anda terbiasa menggunakan templat ARM, pilih tombol Sebarkan ke Azure. Templat akan terbuka di portal Microsoft Azure.

Button to deploy the Resource Manager template to Azure.

Prasyarat

Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai.

Meninjau templat

Templat yang digunakan di mulai cepat ini berasal dari Templat Mulai Cepat Azure.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.5.6.12127",
      "templateHash": "4742950082151195489"
    }
  },
  "parameters": {
    "clusterName": {
      "type": "string",
      "metadata": {
        "description": "The name of the HDInsight cluster to create."
      }
    },
    "clusterLoginUserName": {
      "type": "string",
      "maxLength": 20,
      "minLength": 2,
      "metadata": {
        "description": "These credentials can be used to submit jobs to the cluster and to log into cluster dashboards. The username must consist of digits, upper or lowercase letters, and/or the following special characters: (!#$%&'()-^_`{}~)."
      }
    },
    "clusterLoginPassword": {
      "type": "secureString",
      "minLength": 10,
      "metadata": {
        "description": "The password must be at least 10 characters in length and must contain at least one digit, one upper case letter, one lower case letter, and one non-alphanumeric character except (single-quote, double-quote, backslash, right-bracket, full-stop). Also, the password must not contain 3 consecutive characters from the cluster username or SSH username."
      }
    },
    "sshUserName": {
      "type": "string",
      "minLength": 2,
      "metadata": {
        "description": "These credentials can be used to remotely access the cluster. The sshUserName can only consit of digits, upper or lowercase letters, and/or the following special characters (%&'^_`{}~). Also, it cannot be the same as the cluster login username or a reserved word"
      }
    },
    "sshPassword": {
      "type": "secureString",
      "maxLength": 72,
      "minLength": 6,
      "metadata": {
        "description": "SSH password must be 6-72 characters long and must contain at least one digit, one upper case letter, and one lower case letter.  It must not contain any 3 consecutive characters from the cluster login name"
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Location for all resources."
      }
    },
    "headNodeVirtualMachineSize": {
      "type": "string",
      "defaultValue": "Standard_E8_v3",
      "allowedValues": [
        "Standard_A4_v2",
        "Standard_A8_v2",
        "Standard_E2_v3",
        "Standard_E4_v3",
        "Standard_E8_v3",
        "Standard_E16_v3",
        "Standard_E20_v3",
        "Standard_E32_v3",
        "Standard_E48_v3"
      ],
      "metadata": {
        "description": "This is the headnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value."
      }
    },
    "workerNodeVirtualMachineSize": {
      "type": "string",
      "defaultValue": "Standard_E8_v3",
      "allowedValues": [
        "Standard_A4_v2",
        "Standard_A8_v2",
        "Standard_E2_v3",
        "Standard_E4_v3",
        "Standard_E8_v3",
        "Standard_E16_v3",
        "Standard_E20_v3",
        "Standard_E32_v3",
        "Standard_E48_v3"
      ],
      "metadata": {
        "description": "This is the workernode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-08-01",
      "name": "[format('storage{0}', uniqueString(resourceGroup().id))]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2"
    },
    {
      "type": "Microsoft.HDInsight/clusters",
      "apiVersion": "2021-06-01",
      "name": "[parameters('clusterName')]",
      "location": "[parameters('location')]",
      "properties": {
        "clusterVersion": "4.0",
        "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', format('storage{0}', uniqueString(resourceGroup().id)))).primaryEndpoints.blob, 'https://', ''), '/', '')]",
              "isDefault": true,
              "container": "[parameters('clusterName')]",
              "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', format('storage{0}', uniqueString(resourceGroup().id))), '2021-08-01').keys[0].value]"
            }
          ]
        },
        "computeProfile": {
          "roles": [
            {
              "name": "headnode",
              "targetInstanceCount": 2,
              "hardwareProfile": {
                "vmSize": "[parameters('headNodeVirtualMachineSize')]"
              },
              "osProfile": {
                "linuxOperatingSystemProfile": {
                  "username": "[parameters('sshUserName')]",
                  "password": "[parameters('sshPassword')]"
                }
              }
            },
            {
              "name": "workernode",
              "targetInstanceCount": 2,
              "hardwareProfile": {
                "vmSize": "[parameters('workerNodeVirtualMachineSize')]"
              },
              "osProfile": {
                "linuxOperatingSystemProfile": {
                  "username": "[parameters('sshUserName')]",
                  "password": "[parameters('sshPassword')]"
                }
              }
            }
          ]
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts', format('storage{0}', uniqueString(resourceGroup().id)))]"
      ]
    }
  ],
  "outputs": {
    "storage": {
      "type": "object",
      "value": "[reference(resourceId('Microsoft.Storage/storageAccounts', format('storage{0}', uniqueString(resourceGroup().id))))]"
    },
    "cluster": {
      "type": "object",
      "value": "[reference(resourceId('Microsoft.HDInsight/clusters', parameters('clusterName')))]"
    }
  }
}

Dua sumber daya Azure yang ditentukan dalam templat:

Menyebarkan templat

  1. Pilih tombol Sebarkan ke Azure di bawah ini untuk masuk ke Azure dan membuka templat ARM.

    Button to deploy the Resource Manager template to Azure.

  2. Masukkan atau pilih nilai berikut:

    Properti Deskripsi
    Langganan Dari daftar dropdown, pilih langganan Azure yang digunakan untuk kluster.
    Grup sumber daya Dari daftar dorp-down, pilih grup sumber daya yang sudah ada, atau pilih Buat baru.
    Lokasi Nilai akan diisi otomatis dengan lokasi yang digunakan untuk grup sumber daya.
    Nama kluster Masukkan nama yang unik secara global. Untuk templat ini, gunakan hanya huruf kecil dan angka.
    Nama Pengguna Masuk Kluster Berikan nama pengguna, defaultnya adalah admin.
    Kata Sandi Masuk Kluster Berikan kata sandi. Panjang kata sandi harus minimal 10 karakter dan harus berisi setidaknya satu digit, satu huruf besar, dan satu huruf kecil, satu karakter non-alfanumerik (kecuali karakter ' ` ").
    Nama Pengguna Ssh Berikan nama pengguna, defaultnya adalah sshuser.
    Kata Sandi Ssh Berikan kata sandi.

    Create Spark cluster in HDInsight using Azure Resource Manager template.

  3. Lakukan ulasan SYARAT DAN KETENTUAN. Lalu pilih Saya menyetujui syarat dan ketentuan yang dinyatakan di atas, lalu Beli. Anda akan menerima pemberitahuan bahwa penyebaran sedang berlangsung. Dibutuhkan sekitar 20 menit untuk membuat kluster.

Jika mengalami masalah terkait membuat kluster HDInsight, bisa jadi Anda tidak memiliki izin yang tepat untuk melakukannya. Untuk mengetahui informasi selengkapnya, lihat Persyaratan kontrol akses.

Meninjau sumber daya yang disebarkan

Setelah kluster dibuat, Anda akan menerima pemberitahuan Penyebaran berhasil dengan tautan Masuk ke sumber daya. Halaman grup Resource Anda akan mencantumkan cluster HDInsight baru Anda dan penyimpanan default yang terkait dengan cluster tersebut. Setiap kluster memiliki Azure Storage, Azure Data Lake Storage Gen1, atau dependensi Azure Data Lake Storage Gen2. Hal ini disebut sebagai akun penyimpanan default. Kluster HDInsight dan akun penyimpanan defaultnya harus berada di wilayah Azure yang sama. Menghapus kluster tidak menghapus dependensi akun penyimpanan. Hal ini disebut sebagai akun penyimpanan default. Kluster HDInsight dan akun penyimpanan defaultnya harus berada di lokasi yang sama di wilayah Azure yang sama. Menghapus kluster tidak menghapus akun penyimpanan.

Membuat file Jupyter Notebook

Jupyter Notebook adalah lingkungan notebook interaktif yang mendukung berbagai bahasa pemrograman. Anda dapat menggunakan file Jupyter Notebook untuk berinteraksi dengan data, menggabungkan kode dengan teks markdown, dan melakukan visualisasi sederhana.

  1. Buka portal Microsoft Azure.

  2. Pilih kluster HDInsight, lalu pilih kluster yang Anda buat.

    Open HDInsight cluster in the Azure portal.

  3. Dari portal, di bagian Dasbor kluster, pilih Jupyter Notebook. Jika diminta, masukkan kredensial masuk kluster untuk kluster.

    Open Jupyter Notebook to run interactive Spark SQL query.

  4. Pilih PySpark>Baru untuk membuat buku catatan.

    Create a Jupyter Notebook file to run interactive Spark SQL query.

    Notebook baru dibuat dan dibuka dengan nama Untitled(Untitled.pynb).

Menjalankan pernyataan SQL Apache Spark

SQL (Structured Query Language) adalah bahasa yang paling umum dan banyak digunakan untuk membuat kueri dan mengubah data. Spark SQL berfungsi sebagai ekstensi untuk Apache Spark guna memproses data terstruktur, menggunakan sintaksis SQL yang sudah diketahui.

  1. Verifikasi kernel sudah siap. Kernel siap saat Anda melihat lingkaran berongga di samping nama kernel di buku catatan. Lingkaran padat menunjukkan bahwa kernel sibuk.

    Kernel status alt-text="Status kernel." border="true":::

    Saat memulai buku catatan untuk pertama kalinya, kernel melakukan beberapa tugas di latar belakang. Tunggu hingga kernel siap.

  2. Tempelkan kode berikut dalam sel kosong, lalu tekan SHIFT + ENTER untuk menjalankan kode. Perintah mencantumkan tabel Hive pada kluster:

    %%sql
    SHOW TABLES
    

    Saat Anda menggunakan file Jupyter Notebook dengan kluster HDInsight, Anda mendapatkan sesi spark praatur yang dapat Anda gunakan untuk menjalankan kueri Hive menggunakan SQL Spark. %%sql memberi tahu Jupyter Notebook untuk menggunakan sesi spark praatur untuk menjalankan kueri Hive. Kueri mengambil 10 baris teratas dari tabel Hive(hivesampletable)yang dilengkapi dengan semua kluster HDInsight secara default. Pertama kali Anda mengirimkan kueri, Jupyter akan membuat aplikasi Spark untuk notebook. Ini membutuhkan waktu sekitar 30 detik untuk selesai. Setelah aplikasi Spark siap, kueri dijalankan dalam waktu sekitar satu detik dan menghasilkan hasilnya. Output-nya terlihat seperti:

    Apache Hive query in HDInsight. y in HDInsight" border="true":::

    Setiap kali Anda menjalankan kueri di Jupyter, judul jendela browser web Anda menunjukkan status (Sibuk) bersama dengan judul buku catatan. Anda juga melihat lingkaran padat di sebelah teks PySpark di pojok kanan atas.

  3. Jalankan kueri lain untuk melihat data dalam hivesampletable.

    %%sql
    SELECT * FROM hivesampletable LIMIT 10
    

    Layar akan direfresh untuk menampilkan output kueri.

    Hive query output in HDInsight. Wawasan" border="true":::

  4. Dari menu File pada buku catatan, pilih Tutup dan Hentikan. Mematikan notebook akan merilis sumber daya kluster, termasuk aplikasi Spark.

Membersihkan sumber daya

Setelah Anda menyelesaikan mulai cepat, Anda dapat menghapus kluster. Dengan HDInsight, data Anda disimpan di Azure Storage, sehingga Anda dapat menghapus kluster dengan aman saat tidak digunakan. Anda juga dikenakan biaya untuk klaster HDInsight, bahkan saat tidak digunakan. Karena biaya untuk kluster berkali-kali lebih banyak daripada biaya untuk penyimpanan, masuk akal secara ekonomis untuk menghapus kluster saat tidak digunakan.

Dari portal Microsoft Azure, navigasi ke kluster Anda, lalu pilih Hapus.

Azure portal delete an HDInsight cluster. kluster pemandangan" border="true":::

Anda juga dapat memilih nama grup sumber daya untuk membuka halaman grup sumber daya, lalu memilih Hapus grup sumber daya. Dengan menghapus grup sumber daya, Anda menghapus kluster HDInsight dan akun penyimpanan default.

Langkah berikutnya

Dalam panduan mulai cepat ini, Anda akan mempelajari cara membuat kluster Apache Spark di HDInsight dan menjalankan kueri Spark SQL dasar. Lanjutkan ke tutorial berikutnya untuk mempelajari cara menggunakan kluster HDInsight untuk menjalankan kueri interaktif pada data sampel.