الترحيل من متجر HDFS باستخدام مخزن on-prem إلى التخزين الخاص بـ Azure باستخدام صندوق بيانات Azure
يمكنك ترحيل البيانات من مخزن HDFS المحلي باستخدام نظام مجموعات Hadoop إلى تخزين Azure (تخزين تخزين الكائن الثنائي كبير الحجم أو Data Lake Storage Gen2) باستخدام جهاز صندوق البيانات. يمكنك الاختيار من بين قرص صندوق البيانات أو صندوق بيانات بسعة 80 تيرابايت أو صندوق بيانات ثقيل بسعة 770 تيرابايت.
تعمل هذه المقالة على مساعدتك في إكمال المهام التالية:
- استعد لترحيل البيانات الخاص بك.
- انسخ البيانات الخاصة بك إلى قرص صندوق بيانات أو صندوق بيانات أو جهاز ثقيل لصندوق البيانات.
- يتعين شحن الجهاز مرة أخرى إلى Microsoft.
- يتعين تطبيق أذونات الوصول على الملفات والدلائل (Data Lake Storage Gen2 فقط)
المتطلبات الأساسية
تتطلب هذه الأشياء إكمال الترحيل.
حساب Azure Storage.
تحتوي مجموعة Hadoop المحلية على بيانات المصدر الخاصة بك.
-
قم بتوصيل صندوق البيانات الخاص بك أو صندوق البيانات الثقيل بشبكة محلية.
إذا كنت مستعدا، دعونا نبدأ.
نسخ بياناتك إلى جهاز صندوق البيانات.
إذا كانت بياناتك تتناسب مع جهاز صندوق البيانات واحد، فستقوم بنسخ البيانات إلى جهاز صندوق البيانات.
إذا تجاوز حجم البيانات سعة جهاز صندوق البيانات، فاستخدم الإجراء الاختياري لتقسيم البيانات عبر أجهزة صندوق البيانات المتعددة ثم قم بتنفيذ هذه الخطوة.
لنسخ البيانات من مخزن HDFS المحلي إلى جهاز صندوق البيانات، ستقوم بتعيين بعض الأشياء، ثم استخدام أداة DistCp .
اتبع هذه الخطوات لنسخ البيانات عبر واجهات برمجة تطبيقات REST لتخزين الكائن الثنائي كبير الحجم/ العنصر إلى جهاز صندوق البيانات الخاص بك. ستجعل وواجهة برمجة تطبيقات RESTI الجهاز يظهر كمخزن HDFS لنظام المجموعة الخاصة بك.
قبل نسخ البيانات عبر REST، حدد بدائيات الأمان والاتصال للاتصال بواجهة REST على صندوق البيانات أو صندوق البيانات الثقيل. سجل الدخول إلى واجهة مستخدم الويب المحلية لصندوق البيانات وانتقل إلى صفحة الاتصال ونسخها. مقابل حساب تخزين Azure الخاصة بجهازك، ضمن إعدادات الوصول، حدد موقع REST وحدده.

في حساب تخزين الوصول وحوار تحميل البيانات، انسخ نقطة نهاية خدمة الكائن الثنائي كبير الحجمومفتاح حساب التخزين. من نقطة نهاية خدمة الكائن الثنائي كبير الحجم، احذف الشرطة المائلة
https://والزائدة.في هذه الحالة، تكون نقطة النهاية هي:
https://mystorageaccount.blob.mydataboxno.microsoftdatabox.com/. المنفذ المضيف من عنوان URI الذي ستستخدمه هو:mystorageaccount.blob.mydataboxno.microsoftdatabox.com. على سبيل المثال، راجع كيفية الاتصال إلى REST باستخدام http.
أضف نقطة النهاية وعنوان IP لعقدة صندوق البيانات أو عقدة صندوق البيانات الثقيل إلى
/etc/hostsكل عقدة.10.128.5.42 mystorageaccount.blob.mydataboxno.microsoftdatabox.comإذا كنت تستخدم بعض الآليات الأخرى الخاصة بـ DNS، فيجب عليك التأكد من أن نقطة نهاية مربع البيانات يمكن حلها.
اضبط متغير
azjarsshell الخاص بموقع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.jarazjars=$azjars,$hadoop_install_dir/share/hadoop/tools/lib/microsoft-windowsazure-storage-sdk-0.6.0.jarيتعين بإنشاء حاوية التخزين التي تريد استخدامها لنسخ البيانات. يجب عليك أيضا القيام بتحديد دليل وجهة كجزء من هذا الأمر. قد يمثل هذا دليل وجهة وهمية في هذه المرحلة.
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>العنصر النائب باسم الدليل الذي تريد نسخ البيانات الخاصة بك إليه.
قم بتشغيل أمر قائمة للتأكد من عملية إنشاء الحاوية والدليل.
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>باسم الحاوية الخاصة بك.
انسخ البيانات من 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.
أولا، استعد للشحن باستخدام صندوق البيانات الخاص بك أو صندوق البيانات الثقيل.
بعد اكتمال إعداد الجهاز، قم بتنزيل ملفات علامة ترتيب وحدات البايت. تحتاج إلى استخدام ملفات علامة ترتيب وحدات البايت أو ملفات البيانات هذه لاحقا للتحقق من البيانات التي تم تحميلها إلى Azure.
إجراء عملية إيقاف تشغيل الجهاز وإزالة الكابلات.
جدولة موعد للاستلام باستخدام UPS.
فيما يتعلق أجهزة صندوق البيانات، راجع شحن صندوق البيانات.
بالنسبة إلى الأجهزة الثقيلة لصندوق البيانات، راجع شحن صندوق البيانات الثقيل.
بعد استلام 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)
يُنصح بتنزيل البرنامج النصي
copy-acls.py. راجع قسم تنزيل البرامج النصية المساعدة وإعداد عقدة الحافة لتشغيلها في هذه المقالة.يتعين بتشغيل هذا الأمر لإنشاء قائمة بالهويات الفريدة.
./copy-acls.py -s ./filelist.json -i ./id_map.json -gيقوم هذا البرنامج النصي بإنشاء اسم ملف
id_map.jsonيحتوي على الهويات التي تحتاج إلى تعيينها إلى هويات تستند إلى ADD.افتح الملف
id_map.jsonباستخدام محرر نص كما يلي:لكل عنصر 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>بمعرف التطبيق وسر العميل اللذين قمت بجمعهما عند إنشاء أصل الخدمة.
ملحق: تقسيم البيانات باستخدام أجهزة صندوق بيانات متعددة
يقبل نقل بياناتك إلى جهاز صندوق البيانات، تحتاج إلى تنزيل بعض البرامج النصية المساعدة، والتأكد من تنظيم بياناتك لتناسب جهاز صندوق البيانات، واستبعاد أي ملفات غير ضرورية.
تنزيل البرامج النصية المساعدة وإعداد عقدة الحافة لإجراء عملية تشغيلها.
باستخدام الحافة أو عقدة الرأس الخاصة بمجموعة Hadoop المحلية، قم بتشغيل هذا الأمر:
git clone https://github.com/jamesbak/databox-adls-loader.git cd databox-adls-loaderيقوم هذا الأمر إجراء عملية استنساخ لمستودع GitHub الذي يحتوي على البرامج النصية المساعدة.
التأكد من تثبيت حزمة jq على الكمبيوتر المحلي.
sudo apt-get install jqتثبيت حُزمة Python المتعلقة بالطلبات
pip install requestsيجب بتعيين أذونات التنفيذ على البرامج النصية المطلوبة.
chmod +x *.py *.sh
تأكد من تنظيم البيانات الخاصة بك لتناسب جهاز صندوق البيانات.
إذا تجاوز حجم بياناتك حجم جهاز صندوق البيانات الفردي، يمكنك تقسيم الملفات إلى مجموعات يمكنك تخزينها على أجهزة صندوق بيانات متعددة.
إذا كانت البيانات الخاصة بك لا تتجاوز حجم جهاز صندوق بيانات الفردي، يمكنك المتابعة إلى القسم التالي.
باستخدام الأذونات العالية
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'.انسخ قوائم الملفات التي تم إنشاؤها لـ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.