الترحيل من متجر HDFS باستخدام مخزن on-prem إلى التخزين الخاص بـ Azure باستخدام صندوق بيانات Azure

يمكنك ترحيل البيانات من مخزن HDFS المحلي باستخدام نظام مجموعات Hadoop إلى تخزين Azure (تخزين تخزين الكائن الثنائي كبير الحجم أو Data Lake Storage Gen2) باستخدام جهاز صندوق البيانات. يمكنك الاختيار من بين قرص صندوق البيانات أو صندوق بيانات بسعة 80 تيرابايت أو صندوق بيانات ثقيل بسعة 770 تيرابايت.

تعمل هذه المقالة على مساعدتك في إكمال المهام التالية:

  • استعد لترحيل البيانات الخاص بك.
  • انسخ البيانات الخاصة بك إلى قرص صندوق بيانات أو صندوق بيانات أو جهاز ثقيل لصندوق البيانات.
  • يتعين شحن الجهاز مرة أخرى إلى Microsoft.
  • يتعين تطبيق أذونات الوصول على الملفات والدلائل (Data Lake Storage Gen2 فقط)

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

تتطلب هذه الأشياء إكمال الترحيل.

إذا كنت مستعدا، دعونا نبدأ.

نسخ بياناتك إلى جهاز صندوق البيانات.

إذا كانت بياناتك تتناسب مع جهاز صندوق البيانات واحد، فستقوم بنسخ البيانات إلى جهاز صندوق البيانات.

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

لنسخ البيانات من مخزن HDFS المحلي إلى جهاز صندوق البيانات، ستقوم بتعيين بعض الأشياء، ثم استخدام أداة DistCp .

اتبع هذه الخطوات لنسخ البيانات عبر واجهات برمجة تطبيقات REST لتخزين الكائن الثنائي كبير الحجم/ العنصر إلى جهاز صندوق البيانات الخاص بك. ستجعل وواجهة برمجة تطبيقات RESTI الجهاز يظهر كمخزن HDFS لنظام المجموعة الخاصة بك.

  1. قبل نسخ البيانات عبر REST، حدد بدائيات الأمان والاتصال للاتصال بواجهة REST على صندوق البيانات أو صندوق البيانات الثقيل. سجل الدخول إلى واجهة مستخدم الويب المحلية لصندوق البيانات وانتقل إلى صفحة الاتصال ونسخها. مقابل حساب تخزين Azure الخاصة بجهازك، ضمن إعدادات الوصول، حدد موقع REST وحدده.

  2. في حساب تخزين الوصول وحوار تحميل البيانات، انسخ نقطة نهاية خدمة الكائن الثنائي كبير الحجمومفتاح حساب التخزين. من نقطة نهاية خدمة الكائن الثنائي كبير الحجم، احذف الشرطة المائلة https:// والزائدة.

    في هذه الحالة، تكون نقطة النهاية هي: https://mystorageaccount.blob.mydataboxno.microsoftdatabox.com/ . المنفذ المضيف من عنوان URI الذي ستستخدمه هو: mystorageaccount.blob.mydataboxno.microsoftdatabox.com. على سبيل المثال، راجع كيفية الاتصال إلى REST باستخدام http.

  3. أضف نقطة النهاية وعنوان IP لعقدة صندوق البيانات أو عقدة صندوق البيانات الثقيل إلى /etc/hosts كل عقدة.

    10.128.5.42  mystorageaccount.blob.mydataboxno.microsoftdatabox.com
    

    إذا كنت تستخدم بعض الآليات الأخرى الخاصة بـ DNS، فيجب عليك التأكد من أن نقطة نهاية مربع البيانات يمكن حلها.

  4. اضبط متغير azjars shell الخاص بموقع hadoop-azure ملفات Jarazure-storage . يمكنك العثور على هذه الملفات ضمن دليل التثبيت الخاص بـ Hadoop.

    لتحديد ما إذا كانت هذه الملفات موجودة، يُنصح باستخدم الأمر التالي: ls -l $<hadoop_install_dir>/share/hadoop/tools/lib/ | grep azure. استبدل <hadoop_install_dir> العنصر النائب بالمسار الخاص بالدليل حيث قمت بتثبيت Hadoop. التأكد من استخدام مسارات مؤهلة بالكامل.

    أمثلة:

    azjars=$hadoop_install_dir/share/hadoop/tools/lib/hadoop-azure-2.6.0-cdh5.14.0.jar azjars=$azjars,$hadoop_install_dir/share/hadoop/tools/lib/microsoft-windowsazure-storage-sdk-0.6.0.jar

  5. يتعين بإنشاء حاوية التخزين التي تريد استخدامها لنسخ البيانات. يجب عليك أيضا القيام بتحديد دليل وجهة كجزء من هذا الأمر. قد يمثل هذا دليل وجهة وهمية في هذه المرحلة.

    hadoop fs -libjars $azjars \
    -D fs.AbstractFileSystem.wasb.Impl=org.apache.hadoop.fs.azure.Wasb \
    -D fs.azure.account.key.<blob_service_endpoint>=<account_key> \
    -mkdir -p  wasb://<container_name>@<blob_service_endpoint>/<destination_directory>
    
    • استبدل العنصر النائب <blob_service_endpoint> باسم نقطة نهاية خدمة الكائن الثنائي كبير الحجم.

    • استبدل العنصر النائب <account_key> بمفتاح الوصول الخاص بالحاسب الخاص بك.

    • استبدل العنصر النائب <container-name> باسم الحاوية الخاصة بك.

    • استبدل <destination_directory> العنصر النائب باسم الدليل الذي تريد نسخ البيانات الخاصة بك إليه.

  6. قم بتشغيل أمر قائمة للتأكد من عملية إنشاء الحاوية والدليل.

    hadoop fs -libjars $azjars \
    -D fs.AbstractFileSystem.wasb.Impl=org.apache.hadoop.fs.azure.Wasb \
    -D fs.azure.account.key.<blob_service_endpoint>=<account_key> \
    -ls -R  wasb://<container_name>@<blob_service_endpoint>/
    
    • استبدل العنصر النائب <blob_service_endpoint> باسم نقطة نهاية خدمة الكائن الثنائي كبير الحجم.

    • استبدل العنصر النائب <account_key> بمفتاح الوصول الخاص بالحاسب الخاص بك.

    • استبدل العنصر النائب <container-name> باسم الحاوية الخاصة بك.

  7. انسخ البيانات من Hadoop HDFS إلى وحدة تخزين الكائن الثنائي كبير الحجم الخاص بصندوق البيانات في الحاوية التي قمت بإنشائها مسبقا. إذا لم يتم العثور على الدليل الذي تقوم بالنسخ إليه، يقوم الأمر بإنشائه بشكل تلقائي.

    hadoop distcp \
    -libjars $azjars \
    -D fs.AbstractFileSystem.wasb.Impl=org.apache.hadoop.fs.azure.Wasb \
    -D fs.azure.account.key.<blob_service_endpoint<>=<account_key> \
    -filters <exclusion_filelist_file> \
    [-f filelist_file | /<source_directory> \
           wasb://<container_name>@<blob_service_endpoint>/<destination_directory>
    
    • استبدل العنصر النائب <blob_service_endpoint> باسم نقطة نهاية خدمة الكائن الثنائي كبير الحجم.

    • استبدل العنصر النائب <account_key> بمفتاح الوصول الخاص بالحاسب الخاص بك.

    • استبدل العنصر النائب <container-name> باسم الحاوية الخاصة بك.

    • استبدل <exlusion_filelist_file> العنصر النائب باسم الملف الذي يحتوي على قائمة استثناءات الملفات الخاصة بك.

    • استبدل <source_directory> العنصر النائب باسم الدليل الذي تريد نسخ البيانات الخاصة بك إليه.

    • استبدل <destination_directory> العنصر النائب باسم الدليل الذي تريد نسخ البيانات الخاصة بك إليه.

    يتم استخدام الخيار -libjars لجعل hadoop-azure*.jar والملفات التابعة azure-storage*.jar متوفرة لـ distcp. قد يحدث هذا بالفعل لبعض أنظمة المجموعات.

    يوضح المثال التالي كيفية distcp يمكن استخدام الأمر لنسخ البيانات.

     hadoop distcp \
    -libjars $azjars \
    -D fs.AbstractFileSystem.wasb.Impl=org.apache.hadoop.fs.azure.Wasb \
    -D fs.azure.account.key.mystorageaccount.blob.mydataboxno.microsoftdatabox.com=myaccountkey \
    -filter ./exclusions.lst -f /tmp/copylist1 -m 4 \
    /data/testfiles \
    wasb://hdfscontainer@mystorageaccount.blob.mydataboxno.microsoftdatabox.com/data
    

    العمل على تحسين سرعة النسخ:

    • محاولة تغيير عدد مخططي الخرائط. (يستخدم m المثال المذكور أعلاه = 4 مخططين.)

    • حاول بدء التشغيل عدة مرات distcp بالتوازي.

    • يُرجى العلم بأن الملفات الكبيرة تعمل بشكل أفضل من الملفات الصغيرة.

شحن صندوق البيانات البيانات إلى Microsoft

اتبع هذه الخطوات لإعداد جهاز صندوق البيانات وشحنه إلى Microsoft.

  1. أولا، استعد للشحن باستخدام صندوق البيانات الخاص بك أو صندوق البيانات الثقيل.

  2. بعد اكتمال إعداد الجهاز، قم بتنزيل ملفات علامة ترتيب وحدات البايت. تحتاج إلى استخدام ملفات علامة ترتيب وحدات البايت أو ملفات البيانات هذه لاحقا للتحقق من البيانات التي تم تحميلها إلى Azure.

  3. إجراء عملية إيقاف تشغيل الجهاز وإزالة الكابلات.

  4. جدولة موعد للاستلام باستخدام UPS.

  5. بعد استلام Microsoft لجهازك، يتم توصيله بشبكة مركز البيانات ويتم تحميل البيانات إلى حساب التخزين الذي قمت بتحديده عند تقديم طلب الجهاز. تحقق من تحميل جميع البيانات الخاصة بك إلى Azure مقابل ملفات علامة ترتيب وحدات البايت.

يتعين تطبيق أذونات الوصول على الملفات والدلائل (Data Lake Storage Gen2 فقط)

لديك بالفعل البيانات في حساب تخزين Azure الخاص بك. الآن سوف سوف يتم تطبيق أذونات الوصول على الملفات والدلائل.

ملاحظة

هذه الخطوة مطلوبة فقط إذا كنت تستخدم Azure Data Lake Storage Gen2 كمخزن للبيانات الخاصة بك. إذا كنت تستخدم حساب تخزين الكائن الثنائي كبير الحجم فقط بدون مساحة اسم هرمية كمخزن بيانات، يمكنك تخطي هذا القسم.

يجب إنشاء مدير خدمة لحساب Azure Data Lake Storage Gen2 الخاص بك

لإنشاء أساس خدمة جديد، راجع كيفية استخدام المدخل من أجل إنشاء أساس خدمة Microsoft Azure Active Directory يمكنه الوصول إلى الموارد.

  • :heavy_check_mark: عند تنفيذ الخطوات الواردة في قسم تعيين التطبيق إلى دور من المقالة، يُرجى التحقق من تعيين دور مساهم بيانات كائن الثنائي كبير الحجم للتخزين إلى كيان الخدمة.

  • :heavy_check_mark: عند تنفيذ الخطوات الواردة في قسم الحصول على قيم لتسجيل الدخول من المقالة، يُرجى حفظ معرف التطبيق والقيم السرية للعميل في ملف نصي. ستحتاج إليها قريباً.

إنشاء قائمة بالملفات المنسوخة باستخدام الأذونات الخاصة بها.

من نظام مجموعة Hadoop المحلي، يُنصح بتشغيل هذا الأمر:


sudo -u hdfs ./copy-acls.sh -s /{hdfs_path} > ./filelist.json

يقوم هذا الأمر بإنشاء قائمة بالملفات المنسوخة باستخدام الأذونات الخاصة بها.

ملاحظة

أستناداً إلى عدد الملفات في HDFS ، قد يستغرق تشغيل هذا الأمر وقتا طويلا.

إنشاء قائمة بالهويات وتعيينها إلى الهويات الخاصة بـAzure Active Directory (ADD)

  1. يُنصح بتنزيل البرنامج النصي copy-acls.py. راجع قسم تنزيل البرامج النصية المساعدة وإعداد عقدة الحافة لتشغيلها في هذه المقالة.

  2. يتعين بتشغيل هذا الأمر لإنشاء قائمة بالهويات الفريدة.

    
    ./copy-acls.py -s ./filelist.json -i ./id_map.json -g
    

    يقوم هذا البرنامج النصي بإنشاء اسم ملف id_map.json يحتوي على الهويات التي تحتاج إلى تعيينها إلى هويات تستند إلى ADD.

  3. افتح الملف id_map.json باستخدام محرر نص كما يلي:

  4. لكل عنصر JSON يظهر في الملف، قم بتحديث target سمة إما اسم المستخدم الأساسي AAD (UPN) أو ObjectId (OID) مع الهوية المعينة المناسبة. بعد الانتهاء من ذلك، احفظ الملف. سوف تكون بحاجة إلى هذا الملف في الخطوة التالية.

تطبيق الأذونات على الملفات المنسوخة وتطبيق التعيينات الخاصة بالهوية

يجب تشغيل هذا الأمر لتطبيق الأذونات على البيانات التي نسختها إلى حساب Data Lake Storage Gen2:

./copy-acls.py -s ./filelist.json -i ./id_map.json  -A <storage-account-name> -C <container-name> --dest-spn-id <application-id>  --dest-spn-secret <client-secret>
  • استبدال <storage-account-name> العنصر النائب باسم حساب التخزين.

  • استبدل العنصر النائب <container-name> باسم الحاوية الخاصة بك.

  • استبدل العناصر النائبة والعناصر <application-id> النائبة <client-secret> بمعرف التطبيق وسر العميل اللذين قمت بجمعهما عند إنشاء أصل الخدمة.

ملحق: تقسيم البيانات باستخدام أجهزة صندوق بيانات متعددة

يقبل نقل بياناتك إلى جهاز صندوق البيانات، تحتاج إلى تنزيل بعض البرامج النصية المساعدة، والتأكد من تنظيم بياناتك لتناسب جهاز صندوق البيانات، واستبعاد أي ملفات غير ضرورية.

تنزيل البرامج النصية المساعدة وإعداد عقدة الحافة لإجراء عملية تشغيلها.

  1. باستخدام الحافة أو عقدة الرأس الخاصة بمجموعة Hadoop المحلية، قم بتشغيل هذا الأمر:

    
    git clone https://github.com/jamesbak/databox-adls-loader.git
    cd databox-adls-loader
    

    يقوم هذا الأمر إجراء عملية استنساخ لمستودع GitHub الذي يحتوي على البرامج النصية المساعدة.

  2. التأكد من تثبيت حزمة jq على الكمبيوتر المحلي.

    
    sudo apt-get install jq
    
  3. تثبيت حُزمة Python المتعلقة بالطلبات

    
    pip install requests
    
  4. يجب بتعيين أذونات التنفيذ على البرامج النصية المطلوبة.

    
    chmod +x *.py *.sh
    
    

تأكد من تنظيم البيانات الخاصة بك لتناسب جهاز صندوق البيانات.

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

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

  1. باستخدام الأذونات العاليةgenerate-file-list، يُنصح بتشغيل البرنامج النصي الذي قمت بتنزيله باتباع الإرشادات الواردة في القسم السابق.

    أدناه وصف لمعلمات الأوامر:

    sudo -u hdfs ./generate-file-list.py [-h] [-s DATABOX_SIZE] [-b FILELIST_BASENAME]
                     [-f LOG_CONFIG] [-l LOG_FILE]
                     [-v {DEBUG,INFO,WARNING,ERROR}]
                     path
    
    where:
    positional arguments:
    path                  The base HDFS path to process.
    
    optional arguments:
    -h, --help            show this help message and exit
    -s DATABOX_SIZE, --databox-size DATABOX_SIZE
                         The size of each Data Box in bytes.
    -b FILELIST_BASENAME, --filelist-basename FILELIST_BASENAME
                         The base name for the output filelists. Lists will be
                         named basename1, basename2, ... .
    -f LOG_CONFIG, --log-config LOG_CONFIG
                         The name of a configuration file for logging.
    -l LOG_FILE, --log-file LOG_FILE
                         Name of file to have log output written to (default is
                         stdout/stderr)
    -v {DEBUG,INFO,WARNING,ERROR}, --log-level {DEBUG,INFO,WARNING,ERROR}
                         Level of log information to output. Default is 'INFO'.
    
  2. انسخ قوائم الملفات التي تم إنشاؤها لـHDFS بحيث يمكن الوصول إليها بواسطة مهمة DistCp .

    hadoop fs -copyFromLocal {filelist_pattern} /[hdfs directory]
    

يجب استبعاد الملفات غير الضرورية

تحتاج إلى استبعاد بعض الدلائل من المهمة الخاصة بـ DisCp. على سبيل المثال، استبعاد الدلائل التي تحتوي على معلومات الحالة التي من شأنها أن تحافظ على تشغيل نظام المجموعة.

في نظام مجموعة Hadoop المحلية حيث تخطط لبدء مهمة DistCp، قم بإنشاء ملف يقوم بتحديد قائمة الدلائل التي تريد استبعادها.

وفيما يلي مثال على ذلك:

.*ranger/audit.*
.*/hbase/data/WALs.*

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

تعرف على كيفية عمل Data Lake Storage Gen2 مع نظام المجموعة الخاصة بـ HDInsight. لمزيد من المعلومات، راجع استخدام Azure Data Lake Storage Gen2 مع مجموعات Azure HDInsight.