البدء السريع: إنشاء نظام مجموعة Interactive Query في Azure HDInsight باستخدام قالب ARM

في هذا البدء السريع، يمكنك استخدام قالب Azure Resource Manager (قالب ARM) لإنشاء نظام مجموعة Interactive Query في Azure HDInsight. Interactive Query (يُعرف أيضاً باسم Apache Hive LLAP، أو Low Latency Analytical Processing) هو أحد أنواع أنظمة مجموعات Azure HDInsight.

قالب Azure Resource Manager هو ملف JavaScript Object Notation (JSON) الذي يحدد البنية الأساسية والتكوين لمشروعك. يستخدم القالب عبارات توضيحية. يمكنك وصف النشر المقصود دون كتابة تسلسل أوامر البرمجة لإنشاء النشر.

إذا كانت بيئتك تلبي المتطلبات الأساسية وكنت معتاداً على استخدام قوالب "ARM"، فحدد زر "Deploy to Azure". سيتم فتح القالب في مدخل Azure.

زر لنشر قالب Resource Manager إلى Azure.

المتطلبات الأساسية

في حال لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانيّاً قبل البدء.

مراجعة القالب

يُعدّ النموذج المستخدم في هذا التشغيل السريع مأخوذاً من قوالب التشغيل السريع من Azure.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.26.54.24096",
      "templateHash": "8418956481545337559"
    }
  },
  "parameters": {
    "clusterName": {
      "type": "string",
      "metadata": {
        "description": "The name of the HDInsight cluster to create."
      }
    },
    "clusterLoginUserName": {
      "type": "string",
      "metadata": {
        "description": "These credentials can be used to submit jobs to the cluster and to log into cluster dashboards."
      }
    },
    "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",
      "metadata": {
        "description": "These credentials can be used to remotely access the cluster."
      }
    },
    "sshPassword": {
      "type": "securestring",
      "minLength": 6,
      "maxLength": 72,
      "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_E16_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 worerdnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value."
      }
    },
    "ZookeeperNodeVirtualMachineSize": {
      "type": "string",
      "defaultValue": "Standard_E4_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 worerdnode Azure Virtual Machine size, and will affect the cost. If you don't know, just leave the default value."
      }
    }
  },
  "variables": {
    "defaultStorageAccount": {
      "name": "[uniqueString(resourceGroup().id)]",
      "type": "Standard_LRS"
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2023-01-01",
      "name": "[variables('defaultStorageAccount').name]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[variables('defaultStorageAccount').type]"
      },
      "kind": "StorageV2",
      "properties": {
        "minimumTlsVersion": "TLS1_2",
        "supportsHttpsTrafficOnly": true,
        "allowBlobPublicAccess": false
      }
    },
    {
      "type": "Microsoft.HDInsight/clusters",
      "apiVersion": "2023-08-15-preview",
      "name": "[parameters('clusterName')]",
      "location": "[parameters('location')]",
      "properties": {
        "clusterVersion": "4.0",
        "osType": "Linux",
        "tier": "Standard",
        "clusterDefinition": {
          "kind": "interactivehive",
          "configurations": {
            "gateway": {
              "restAuthCredential.isEnabled": true,
              "restAuthCredential.username": "[parameters('clusterLoginUserName')]",
              "restAuthCredential.password": "[parameters('clusterLoginPassword')]"
            }
          }
        },
        "storageProfile": {
          "storageaccounts": [
            {
              "name": "[replace(replace(concat(reference(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name), '2021-08-01').primaryEndpoints.blob), 'https:', ''), '/', '')]",
              "isDefault": true,
              "container": "[parameters('clusterName')]",
              "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name), '2021-08-01').keys[0].value]"
            }
          ]
        },
        "computeProfile": {
          "roles": [
            {
              "name": "headnode",
              "minInstanceCount": 1,
              "targetInstanceCount": 2,
              "hardwareProfile": {
                "vmSize": "[parameters('HeadNodeVirtualMachineSize')]"
              },
              "osProfile": {
                "linuxOperatingSystemProfile": {
                  "username": "[parameters('sshUserName')]",
                  "password": "[parameters('sshPassword')]"
                }
              }
            },
            {
              "name": "workernode",
              "minInstanceCount": 1,
              "targetInstanceCount": 2,
              "hardwareProfile": {
                "vmSize": "[parameters('WorkerNodeVirtualMachineSize')]"
              },
              "osProfile": {
                "linuxOperatingSystemProfile": {
                  "username": "[parameters('sshUserName')]",
                  "password": "[parameters('sshPassword')]"
                }
              }
            },
            {
              "name": "zookeepernode",
              "minInstanceCount": 1,
              "targetInstanceCount": 3,
              "hardwareProfile": {
                "vmSize": "[parameters('ZookeeperNodeVirtualMachineSize')]"
              },
              "osProfile": {
                "linuxOperatingSystemProfile": {
                  "username": "[parameters('sshUserName')]",
                  "password": "[parameters('sshPassword')]"
                }
              }
            }
          ]
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name)]"
      ]
    }
  ],
  "outputs": {
    "storage": {
      "type": "object",
      "value": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name), '2023-01-01')]"
    },
    "cluster": {
      "type": "object",
      "value": "[reference(resourceId('Microsoft.HDInsight/clusters', parameters('clusterName')), '2023-08-15-preview')]"
    },
    "resourceGroupName": {
      "type": "string",
      "value": "[resourceGroup().name]"
    },
    "location": {
      "type": "string",
      "value": "[parameters('location')]"
    }
  }
}

يتم تعريف موردين لـ Azure في القالب:

نشر القالب

  1. حدد زر النشر إلى Azure أدناه لتسجيل الدخول إلى Azure وافتح قالب ARM.

    زر لنشر قالب Resource Manager إلى Azure.

  2. أدخل أو حدد القيم التالية:

    الخاصية ‏‏الوصف
    الاشتراك من القائمة المنسدلة، قم بتحديد اشتراك Azure المستخدم في نظام المجموعة.
    مجموعة الموارد من القائمة المنسدلة، حدد مجموعة الموارد الموجودة، أو تحديد إنشاء جديد.
    الموقع سيتم ملء القيمة تلقائيًا بالموقع المستخدم لمجموعة الموارد.
    اسم المجموعة أدخل اسمًا فريدًا عالميًا. بالنسبة إلى هذا القالب، استخدم الأحرف الصغيرة والأرقام فقط.
    Cluster Login User Name أدخل اسم المستخدم، الافتراضي هو admin.
    Cluster Login Password أدخل كلمة مرور. يجب أن يكون طول كلمة المرور 10 أحرف على الأقل ويجب أن تحتوي على رقم واحد على الأقل، وأحرف كبيرة واحدة، وحرف صغير واحد، وحرف واحد غير أبجدي رقمي (باستثناء الأحرف ' ` " ).
    اسم مستخدم Ssh توفير اسم المستخدم، الافتراضي وهو sshuser
    كلمة مرور Ssh أدخل كلمة المرور.

    نشر قالب Resource Manager HBase.

  3. قم بمراجعة الشروط والأحكام. ثم حدد أوافق على الشروط والأحكام المذكورة أعلاه، وحدد شراء. ستتلقى إشعارًا بأن عملية النشر قيد التقدم. يستغرق إنشاء نظام المجموعة نحو 20 دقيقة.

مراجعة الموارد الموزعة

بمجرد إنشاء نظام المجموعة، ستتلقى إشعارًا تم التوزيع بنجاح مع رابط الانتقال إلى المورد. ستسرد صفحة مجموعة الموارد مجموعة HDInsight الجديدة والتخزين الافتراضي المقترن بالمجموعة. تحتوي كل مجموعة على حساب Azure Blob Storage أو Azure Data Lake Storage Gen2 تبعية. يشار إليه باسم حساب التخزين الافتراضي. يجب أن يتم وضع مجموعة HDInsight وحساب التخزين الافتراضي المخصص لها في نفس منطقة Azure. حذف الكتل لا يؤدي إلى حذف حساب التخزين.

تنظيف الموارد

بعد إكمال التشغيل السريع، قد تحتاج إلى حذف المجموعة. من خلال HDInsight، يتم تخزين البيانات الخاصة بك في Azure Storage؛ لذا يمكنك حذف المجموعة بأمان عندما لا تكون قيد الاستخدام. كما يتم تحصيل رسوم منك مقابل مجموعة HDInsight، حتى عندما لا تكون قيد الاستخدام. نظراً لأن رسوم نظام المجموعة تزيد عدة مرات عن رسوم التخزين، فمن المنطقي اقتصادياً حذف أنظمة المجموعات عندما لا تكون قيد الاستخدام.

من مدخل Azure، انتقل إلى نظام المجموعة، وحدد حذف.

حذف قالب Resource Manager HBase.

يمكنك أيضًا تحديد اسم مجموعة الموارد لفتح صفحة مجموعة الموارد، ثم حدد حذف مجموعة الموارد. إذا قمت بحذف مجموعة الموارد، سيتم حذف كل من نظام المجموعة HDInsight وحساب التخزين الافتراضي.

الخطوات التالية

في هذا البدء السريع، تعلمت كيفية إنشاء نظام مجموعة Interactive Query في HDInsight باستخدام قالب ARM. في المقالة التالية، ستتعلم كيفية استخدام Apache Zeppelin لإجراء استعلامات Apache Hive.