إضافة حسابات تخزين إضافية إلى HDInsight

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

هام

تختص المعلومات الواردة في هذا المستند بإضافة حساب (حسابات) تخزين إضافي إلى المجموعة بعد إنشائها. للحصول على معلومات عن إضافة حسابات تخزين أثناء إنشاء المجموعة، راجع إعداد المجموعات في HDInsight باستخدام Apache Hadoop وApache Spark وApache Kafka وغيرها.

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

كيف تعمل هذه الميزة

أثناء المعالجة، ينفِّذ البرنامج النصي الإجراءات التالية:

  • إذا كان حساب التخزين موجوداً بالفعل في تكوين core-site.xml للمجموعة، يتم إنهاء البرنامج النصي ولا تُنفَذ أي إجراءات أخرى.

  • تتحقق من وجود حساب التخزين وإمكانية الوصول إليه باستخدام المفتاح.

  • تشفِر المفتاح باستخدام بيانات اعتماد المجموعة.

  • تضيف حساب التخزين إلى ملف core-site.xml.

  • توقف تشغيل خدمات Apache Oozie وApache Hadoop YARN وApache Hadoop MapReduce2 وApache Hadoop HDFS وتعيد تشغيلها. يسمح لها إيقاف تشغيل هذه الخدمات وإعادة تشغيلها باستخدام حساب التخزين الجديد.

تحذير

استخدام حساب تخزين في موقع مختلف عن مجموعة HDInsight غير مدعوم.

إضافة حساب تخزين

استخدم إجراء البرنامج النصي لتطبيق التغييرات مع الاعتبارات التالية:

الخاصية القيمة
عنوان URI النصي Bash https://hdiconfigactions.blob.core.windows.net/linuxaddstorageaccountv01/add-storage-account-v01.sh
نوع العقدة (العقدات) الرأس
المعلمات ACCOUNTNAMEACCOUNTKEY-p (اختياري)
  • ACCOUNTNAME هو اسم حساب التخزين المُضاف إلى مجموعة HDInsight.
  • ACCOUNTKEY هو مفتاح الوصول لـ ACCOUNTNAME.
  • -p اختياري. إذا تم تحديد المفتاح، فإنه غير مشفر ويتم تخزينه في ملف core-site.xml كنص عادي.

التحقق من الصحة

عند عرض مجموعة HDInsight في مدخل Microsoft Azure، حدد إدخال Storage Accounts ضمن Properties لا يعرض حسابات التخزين المضافة من خلال إجراء البرنامج النصي هذا. لا يعرض Azure PowerShell وAzure CLI حساب التخزين الإضافي أيضاً. لا تُعرَض معلومات التخزين لأن البرنامج النصي هو المسؤول فقط تعديل التكوين core-site.xml للمجموعة. لا تُستخدَم هذه المعلومات عند استرداد معلومات المجموعة باستخدام واجهات برمجة التطبيقات لإدارة Azure.

للتحقق من التخزين الإضافي، استخدم إحدى الطرق الموضحة:

PowerShell

يقوم البرنامج النصي بإرجاع اسم (أسماء) حساب التخزين المقترن بالمجموعة المحددة. استخدم اسم المجموعة الفعلي بدلاً من CLUSTERNAME ثم شغِّل البرنامج النصي.

# Update values
$clusterName = "CLUSTERNAME"

$creds = Get-Credential -UserName "admin" -Message "Enter the cluster login credentials"

$clusterName = $clusterName.ToLower();

# getting service_config_version
$resp = Invoke-WebRequest -Uri "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName`?fields=Clusters/desired_service_config_versions/HDFS" `
    -Credential $creds -UseBasicParsing
$respObj = ConvertFrom-Json $resp.Content

$configVersion=$respObj.Clusters.desired_service_config_versions.HDFS.service_config_version

$resp = Invoke-WebRequest -Uri "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/configurations/service_config_versions?service_name=HDFS&service_config_version=$configVersion" `
    -Credential $creds
$respObj = ConvertFrom-Json $resp.Content

# extract account names
$value = ($respObj.items.configurations | Where type -EQ "core-site").properties | Get-Member -membertype properties | Where Name -Like "fs.azure.account.key.*"
foreach ($name in $value ) { $name.Name.Split(".")[4]}

Apache Ambari

  1. من متصفح ويب، انتقل إلى https://CLUSTERNAME.azurehdinsight.net، حيث CLUSTERNAME هو اسم نظام المجموعة.

  2. انتقل إلى HDFS > Configs > Advanced > Custom core-site .

  3. راقب المفاتيح التي تبدأ بـ fs.azure.account.key. اسم الحساب هو جزء من المفتاح كما هو ملاحظ في هذه الصورة النموذجية:

    verification through Apache Ambari.

إزالة حساب التخزين

  1. من متصفح ويب، انتقل إلى https://CLUSTERNAME.azurehdinsight.net، حيث CLUSTERNAME هو اسم نظام المجموعة.

  2. انتقل إلى HDFS > Configs > Advanced > Custom core-site .

  3. أزل المفاتيح التالية:

    • fs.azure.account.key.<STORAGE_ACCOUNT_NAME>.blob.core.windows.net
    • fs.azure.account.keyprovider.<STORAGE_ACCOUNT_NAME>.blob.core.windows.net

بعد إزالة هذه المفاتيح وحفظ التكوين، تحتاج إلى إعادة تشغيل كل منOozie وYarn وMapReduce2 وHDFS وHive واحداً تلو الآخر.

مشكلات معروفة

جدار حماية التخزين

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

تعذّر الوصول إلى التخزين بعد تغيير المفتاح

في حالة تغيير مفتاح حساب تخزين، لن يتمكن HDInsight من الوصول إلى حساب التخزين بعد الآن. يستخدم HDInsight نسخة البيانات المخزنة مؤقتاً من المفتاح في ملف core-site.xml للمجموعة. يجب تحديث نسخة البيانات المخزنة مؤقتاً هذه لمطابقة المفتاح الجديد.

لا يؤدي تشغيل إجراء البرنامج النصي مرة أخرى إلى تحديث المفتاح، حيث يتحقق البرنامج النصي مما إذا كان إدخال حساب التخزين موجوداً بالفعل أم لا. إذا كان الإدخال موجوداً بالفعل، فلا يجري أي تغييرات.

للتغلب على هذه المشكلة:

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

لقد تعلمت كيفية إضافة حسابات تخزين إضافية إلى مجموعة HDInsight موجودة. لمزيد من المعلومات عن إجراءات البرنامج النصي، راجع تخصيص مجموعات HDInsight على Linux باستخدام إجراء البرنامج النصي