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

في دليل التشغيل السريع هذا، يمكنك استخدام قالب Azure Resource Manager (قالب ARM) لإنشاء نظام مجموعات Apache Hadoop في Azure HDInsight. كان Hadoop هو إطار العمل الأصلي مفتوح المصدر للمعالجة الموزعة لمجموعات البيانات الضخمة وتحليلها على أنظمة المجموعات. يتضمن نظام Hadoop البيئي البرامج والأدوات المساعدة ذات الصلة، بما في ذلك Apache Hive وApache HBase، وSpark، وKafka، وغيرها الكثير.

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

يأتي HDInsight حاليًا مع سبعة أنواع مختلفة من أنظمة المجموعات. يدعم كل نوع من أنظمة المجموعات مجموعة مختلفة من المكونات. تدعم جميع أنواع المجموعات أنظمة Hive. للحصول على قائمة بالمكونات المدعومة في HDInsight، اطلع على ما الجديد في إصدارات نظام المجموعة Hadoop المُقدمة من HDInsight؟

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

Button to deploy the Resource Manager template to 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": "1839820966662864707"
    }
  },
  "parameters": {
    "clusterName": {
      "type": "string",
      "metadata": {
        "description": "The name of the HDInsight cluster to create."
      }
    },
    "clusterType": {
      "type": "string",
      "allowedValues": [
        "hadoop",
        "intractivehive",
        "hbase",
        "storm",
        "spark"
      ],
      "metadata": {
        "description": "The type 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. The username cannot be admin."
      }
    },
    "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_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 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_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 workdernode 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": "2021-08-01",
      "name": "[variables('defaultStorageAccount').name]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[variables('defaultStorageAccount').type]"
      },
      "kind": "StorageV2",
      "properties": {}
    },
    {
      "type": "Microsoft.HDInsight/clusters",
      "apiVersion": "2021-06-01",
      "name": "[parameters('clusterName')]",
      "location": "[parameters('location')]",
      "properties": {
        "clusterVersion": "4.0",
        "osType": "Linux",
        "clusterDefinition": {
          "kind": "[parameters('clusterType')]",
          "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",
              "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', variables('defaultStorageAccount').name)]"
      ]
    }
  ],
  "outputs": {
    "storage": {
      "type": "object",
      "value": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name), '2021-08-01')]"
    },
    "cluster": {
      "type": "object",
      "value": "[reference(resourceId('Microsoft.HDInsight/clusters', parameters('clusterName')), '2021-06-01')]"
    }
  }
}

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

نشر القالب

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

    Button to deploy the Resource Manager template to Azure.

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

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

    تم تشفير بعض الخصائص في القالب. يمكنك تكوين هذه القيم من القالب. لمزيد من التوضيح لهذه الخصائص، اطلع على إنشاء مجموعات Apache Hadoop في HDInsight.

    إشعار

    يجب أن تكون القيم التي تقدمها فريدة، ويجب أن تتبع إرشادات التسمية. لا يُجري القالب عمليات التحقق من الصحة. إذا كانت القيم التي تقدمها قيد الاستخدام بالفعل أو لا تتبع الإرشادات، فسيظهر لك خطأ بعد إرسال النموذج.

    HDInsight Linux gets started Resource Manager template on portal.

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

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

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

إشعار

للتعرف على طرق إنشاء أنظمة المجموعات الأخرى وفهم الخصائص المستخدمة في دليل التشغيل السريع هذا، راجع إنشاء أنظمة مجموعات HDInsight.

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

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

إشعار

إذا كنت تنتقل فورًا إلى البرنامج التعليمي التالي لمعرفة كيفية تشغيل عمليات ETL باستخدام Hadoop على HDInsight، فقد ترغب في استمرار تشغيل نظام المجموعة. هذا لأنه في البرنامج التعليمي يجب عليك إنشاء نظام مجموعة Hadoop مرة أخرى. ومع ذلك، إذا كنت لن تنتقل إلى البرنامج التعليمي التالي على الفور، فإنه يجب عليك حذف نظام المجموعة الآن.

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

HDInsight delete cluster from portal.

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

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

في التشغيل السريع هذا، تعلمت كيفية إنشاء نظام مجموعة Apache Hadoop في HDInsight باستخدام أحد قوالب ARM. في المقالة التالية، تتعلم كيفية إجراء عملية استخراج (ETL) وتحويله وتحميله باستخدام Hadoop على HDInsight.