استخدام DistCp لنسخ البيانات بين Azure Storage Blobs وAzure Data Lake Storage

يمكنك استخدام DistCp لنسخ البيانات بين حساب تخزين V2 للأغراض العامة وحساب تخزين V2 للأغراض العامة مع تمكين مساحة الاسم الهرمية. توفر المقالة إرشادات حول كيفية استخدام أداة DistCp.

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

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

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

استخدام DistCp من كتلة لينكس HDInsight

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

  1. إنشاء جلسة عمل SSH إلى كتلة HDI. لمزيد من المعلومات، راجع الاتصال إلى مجموعة HDInsight المستندة إلى Linux.

  2. تحقق مما إذا كان يمكنك الوصول إلى حساب V2 للأغراض العامة الموجودة (بدون تمكين مساحة الاسم الهرمية).

    hdfs dfs -ls wasbs://<container-name>@<storage-account-name>.blob.core.windows.net/
    

    يجب أن يوفر الإخراج قائمة محتويات في الحاوية.

  3. وبالمثل، تحقق ما إذا كان يمكنك الوصول إلى حساب التخزين مع مساحة الاسم الهرمية تمكين من الكتلة. شغّل الأمر التالي:

    hdfs dfs -ls abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/
    

    يجب أن يوفر الإخراج قائمة الملفات/المجلدات في حساب تخزين مستودع البيانات.

  4. استخدم DistCp لنسخ البيانات من WASB إلى حساب Data Lake Storage.

    hadoop distcp wasbs://<container-name>@<storage-account-name>.blob.core.windows.net/example/data/gutenberg abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/myfolder
    

    يقوم الأمر بنسخ محتويات المجلد /example/data/gutenberg/ في مخزن Blob إلى /myfolder في حساب تخزين بحيرة البيانات.

  5. وبالمثل، استخدم DistCp لنسخ البيانات من حساب تخزين بحيرة البيانات إلى تخزين Blob (WASB).

    hadoop distcp abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/myfolder wasbs://<container-name>@<storage-account-name>.blob.core.windows.net/example/data/gutenberg
    

    الأمر بنسخ محتويات /myfolder في حساب مخزن بحيرة البيانات إلى /example/data/gutenberg/المجلد في WASB.

اعتبارات الأداء أثناء استخدام DistCp

لأن أدنى حبيبة DistCp هو ملف واحد، تعيين الحد الأقصى لعدد النسخ المتزامنة هو المعلمة الأكثر أهمية لتحسينه مقابل تخزين بحيرة البيانات. عدد النسخ المتزامنة يساوي عدد معينات(m)معلمة على سطر الأوامر. تحدد هذه المعلمة الحد الأقصى لعدد معينات التي يتم استخدامها لنسخ البيانات. القيمة الافتراضية هي 20.

مثال

hadoop distcp -m 100 wasbs://<container-name>@<storage-account-name>.blob.core.windows.net/example/data/gutenberg abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/myfolder

كيف يمكنني تحديد عدد معينات لاستخدامها؟

إليك بعض الإرشادات التي يمكنك استخدامها.

  • الخطوة 1: تحديد إجمالي الذاكرة المتاحة لقائمة انتظار تطبيق YARN "الافتراضية" - الخطوة الأولى هي تحديد الذاكرة المتاحة لقائمة انتظار تطبيق YARN "الافتراضية". تتوفر هذه المعلومات في مدخل Ambari المقترنة الكتلة. انتقل إلى YARN وعرض علامة التبويب التكوينات لرؤية ذاكرة YARN المتوفرة لقائمة انتظار التطبيق "الافتراضي". هذه هي الذاكرة المتوفرة الإجمالية لوظيفة DistCp (التي هي في الواقع مهمة MapReduce).

  • الخطوة 2: حساب عدد معينات - قيمة m يساوي حاصل الذاكرة YARN الإجمالي مقسوما على حجم حاوية YARN. معلومات حجم حاوية YARN متوفرة في بوابة أمباري أيضا. انتقل إلى YARN وعرض علامة التبويب التكوينات. يتم عرض حجم حاوية YARN في هذه النافذة. المعادلة للوصول إلى عدد من الخرائط (م) هو

    م = (عدد العقد * ذاكرة الغزل لكل عقدة) / حجم حاوية YARN

مثال

لنفترض أن لديك كتلة D14v2s 4x وكنت تحاول نقل 10 تيرابايت من البيانات من 10 مجلدات مختلفة. كل من المجلدات يحتوي على كميات مختلفة من البيانات وأحجام الملفات داخل كل مجلد مختلفة.

  • إجمالي ذاكرة الغزل: من بوابة Ambari تحديد ذاكرة YARN 96 غيغابايت لعقدة D14. لذلك، إجمالي ذاكرة YARN لكتلة العقدة الأربعة هي:

    ذاكرة الغزل = 4 * 96GB = 384GB

  • عدد معينات الخرائط: من المدخل Ambari تحديد حجم حاوية YARN 3,072 ميغا بايت لعقدة نظام مجموعة D14. لذا، عدد معينات هو:

    م = (4 عقد * 96GB) / 3072MB = 128 الخرائط

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

نسخ مجموعات بيانات كبيرة

عندما يكون حجم مجموعة البيانات المطلوب نقلها كبيرا (على سبيل المثال، 1 تي ب) أو إذا كان لديك العديد من المجلدات المختلفة، يجب عليك التفكير في استخدام مهام > DistCp متعددة. من المحتمل ألا يكون هناك أي مكسب في الأداء ، ولكنه ينشر الوظائف بحيث إذا فشلت أي وظيفة ، فأنت بحاجة فقط إلى إعادة تشغيل تلك الوظيفة المحددة بدلا من الوظيفة بأكملها.

القيود

  • يحاول DistCp إنشاء تعيينات متشابهة في الحجم لتحسين الأداء. زيادة عدد معينات قد لا دوما زيادة الأداء.

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

  • إذا كان لديك عدد صغير من الملفات الكبيرة، ثم يجب تقسيمها إلى قطع ملف 256 ميغابايت لإعطائك المزيد من التزامن المحتملة.