استخدام DistCp لنسخ البيانات بين نقاط تخزين Azure و Azure Data Lake Storage Gen1
إذا كان لديك مجموعة HDInsight مع إمكانية الوصول إلى Azure Data Lake Storage Gen1، فيمكنك استخدام أدوات النظام البيئي Hadoop مثل DistCp لنسخ البيانات من وإلى وحدة تخزين مجموعة HDInsight (WASB) إلى حساب Data Lake Storage Gen1. توضح هذه المقالة كيفية استخدام الأداة DistCp.
المتطلبات الأساسية
- اشتراك Azure. راجع الحصول على الإصدار التجريبي المجاني من Azure .
- حساب Gen1 Azure Data Lake Storage. للحصول على إرشادات حول كيفية إنشاء واحدة، راجع بدء استخدام Azure Data Lake Storage Gen1.
- Azure HDInsight cluster with access to a Data Lake Storage Gen1 account. راجع إنشاء مجموعة HDInsight مع Data Lake Storage Gen1. تأكد من تمكين "سطح المكتب البعيد" لنظام المجموعة.
استخدام DistCp من مجموعة HDInsight Linux
تأتي مجموعة HDInsight مزودة بأداة DistCp ، والتي يمكن استخدامها لنسخ البيانات من مصادر مختلفة إلى مجموعة HDInsight. إذا قمت بتكوين مجموعة HDInsight لاستخدام Data Lake Storage Gen1 كمساحة تخزين إضافية، فيمكنك استخدام DistCp الجاهز لنسخ البيانات من وإلى حساب Data Lake Storage Gen1. في هذا القسم ، نلقي نظرة على كيفية استخدام أداة DistCp.
من سطح المكتب، استخدم SSH للاتصال بالمجموعة. راجع الاتصال إلى مجموعة HDInsight المستندة إلى Linux. قم بتشغيل الأوامر من موجه SSH.
تحقق مما إذا كان يمكنك الوصول إلى نقاط تخزين Azure (WASB). شغِّل الأمر التالي:
hdfs dfs –ls wasb://<container_name>@<storage_account_name>.blob.core.windows.net/يوفر الإخراج قائمة بالمحتويات في نقطة التخزين.
وبالمثل، تحقق مما إذا كان يمكنك الوصول إلى حساب Data Lake Storage Gen1 من المجموعة. شغِّل الأمر التالي:
hdfs dfs -ls adl://<data_lake_storage_gen1_account>.azuredatalakestore.net:443/يوفر الإخراج قائمة بالملفات والمجلدات في حساب Data Lake Storage Gen1.
استخدم DistCp لنسخ البيانات من WASB إلى حساب Data Lake Storage Gen1.
hadoop distcp wasb://<container_name>@<storage_account_name>.blob.core.windows.net/example/data/gutenberg adl://<data_lake_storage_gen1_account>.azuredatalakestore.net:443/myfolderيقوم الأمر بنسخ محتويات المجلد /example/data/gutenberg/ في WASB إلى /myfolder في حساب Data Lake Storage Gen1.
وبالمثل، استخدم DistCp لنسخ البيانات من حساب Data Lake Storage Gen1 إلى WASB.
hadoop distcp adl://<data_lake_storage_gen1_account>.azuredatalakestore.net:443/myfolder wasb://<container_name>@<storage_account_name>.blob.core.windows.net/example/data/gutenbergيقوم الأمر بنسخ محتويات /myfolder في حساب Data Lake Storage Gen1 إلى /example/data/gutenberg/ folder في WASB.
اعتبارات الأداء أثناء استخدام DistCp
نظرا لأن أقل دقة لأداة DistCp هي ملف واحد ، فإن تعيين الحد الأقصى لعدد النسخ المتزامنة هو أهم معلمة لتحسينها مقابل Data Lake Storage Gen1. يمكنك التحكم في عدد النسخ المتزامنة عن طريق تعيين عدد معلمات الخرائط ('m') في سطر الأوامر. تحدد هذه المعلمة الحد الأقصى لعدد الخرائط المستخدمة لنسخ البيانات. القيمة الافتراضية هي 20.
مثال:
hadoop distcp wasb://<container_name>@<storage_account_name>.blob.core.windows.net/example/data/gutenberg adl://<data_lake_storage_gen1_account>.azuredatalakestore.net:443/myfolder -m 100
كيفية تحديد عدد الخرائط التي يجب استخدامها
إليك بعض الإرشادات التي يمكنك استخدامها.
الخطوة 1: تحديد إجمالي ذاكرة YARN - الخطوة الأولى هي تحديد ذاكرة YARN المتوفرة للمجموعة حيث تقوم بتشغيل مهمة DistCp. تتوفر هذه المعلومات في بوابة Ambari المقترنة بالمجموعة. انتقل إلى YARN واعرض علامة التبويب Configs لرؤية ذاكرة YARN. للحصول على إجمالي ذاكرة YARN، اضرب ذاكرة YARN لكل عقدة مع عدد العقد الموجودة في مجموعتك.
الخطوة 2: حساب عدد الخرائط - قيمة m تساوي حاصل ضرب إجمالي ذاكرة YARN مقسوما على حجم حاوية YARN. تتوفر أيضا معلومات حجم حاوية YARN في بوابة Ambari. انتقل إلى YARN واعرض علامة التبويب تكوينات . يتم عرض حجم حاوية YARN في هذه النافذة. المعادلة التي تصل إلى عدد مخططي الخرائط (m) هي:
m = (number of nodes * YARN memory for each node) / YARN container size
مثال:
لنفترض أن لديك أربع عقد D14v2s في المجموعة وتريد نقل 10 تيرابايت من البيانات من 10 مجلدات مختلفة. يحتوي كل مجلد من المجلدات على كميات مختلفة من البيانات وتختلف أحجام الملفات داخل كل مجلد.
إجمالي ذاكرة YARN - من مدخل Ambari ، يمكنك تحديد أن ذاكرة YARN هي 96 غيغابايت لعقدة D14. لذلك ، إجمالي ذاكرة YARN لمجموعة العقد الأربعة هي:
YARN memory = 4 * 96GB = 384GBعدد الخرائط - من بوابة Ambari ، يمكنك تحديد حجم حاوية YARN هو 3072 لعقدة مجموعة D14. لذلك ، فإن عدد الخرائط هو:
m = (4 nodes * 96GB) / 3072MB = 128 mappers
إذا كانت التطبيقات الأخرى تستخدم الذاكرة، فيمكنك اختيار استخدام جزء فقط من ذاكرة YARN الخاصة بمجموعتك ل DistCp.
نسخ مجموعات البيانات الكبيرة
عندما يكون حجم مجموعة البيانات المراد نقلها كبيرا (على سبيل المثال، 1 تيرابايت) أو إذا كان لديك العديد من المجلدات المختلفة، > فكر في استخدام مهام DistCp متعددة. من المحتمل ألا يكون هناك أي مكاسب في الأداء ، ولكنه ينشر الوظائف بحيث إذا فشلت أي وظيفة ، فأنت بحاجة فقط إلى إعادة تشغيل هذه الوظيفة المحددة بدلا من الوظيفة بأكملها.
التقييدات
يحاول DistCp إنشاء خرائط متشابهة في الحجم لتحسين الأداء. قد لا تؤدي زيادة عدد مخططي الخرائط دائما إلى زيادة الأداء.
يقتصر DistCp على مخطط واحد فقط لكل ملف. لذلك ، يجب ألا يكون لديك خرائط أكثر من الملفات. نظرا لأن DistCp يمكنه تعيين معين واحد فقط لملف، فإن هذا يحد من مقدار التزامن الذي يمكن استخدامه لنسخ الملفات الكبيرة.
إذا كان لديك عدد صغير من الملفات الكبيرة، فقم بتقسيمها إلى أجزاء ملفات بحجم 256 ميغابايت لمنحك المزيد من التزامن المحتمل.
إذا كنت تقوم بالنسخ من حساب تخزين Azure Blob، فقد يتم خنق مهمة النسخ على جانب تخزين Blob. يؤدي هذا إلى تدهور أداء مهمة النسخ الخاصة بك. لمعرفة المزيد حول حدود تخزين Azure Blob، راجع حدود تخزين Azure عند حدود اشتراك Azure وحدود الخدمة.