تشغيل أمثلة MapReduce المضمنة في HDInsight
تعلم كيفية تشغيل أمثلة MapReduce المضمنة باستخدام Apache Hadoop على HDInsight.
المتطلبات الأساسية
مجموعة Apache Hadoop على HDInsight. راجع بدء استخدام HDInsight على Linux.
عميل SSH. لمزيدٍ من المعلومات، يرجى الرجوع إلى الاتصال بـ HDInsight (Apache Hadoop) باستخدام SSH .
أمثلة MapReduce
وتقع العينات على نظام مجموعة HDInsight في /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar
. يتم تضمين التعليمات البرمجية للمصدر لهذه العينات على نظام مجموعة HDInsight في /usr/hdp/current/hadoop-client/src/hadoop-mapreduce-project/hadoop-mapreduce-examples
.
وترد العينات التالية في هذا الأرشيف:
العينة | الوصف |
---|---|
aggregatewordcount | حساب الكلمات في ملفات الإدخال. |
aggregatewordhist | يحسب المدرج التكراري للكلمات في ملفات الإدخال. |
bbp |
يستخدم نموذج Bailey-Borwein-Plouffe لحساب الأرقام الدقيقة من Pi. |
dbcount | يحسب سجلات عرض الصفحة المخزنة في قاعدة بيانات. |
distbbp | يستخدم صيغة من نوع BBP لحساب البتات الدقيقة من Pi. |
grep | يحسب تطابقات regex في الإدخال. |
join | ينفذ ربط عبر مجموعات البيانات المفرزة المقسمة بالتساوي. |
multifilewc | يحسب الكلمات من عدة ملفات. |
pentomino | برنامج وضع التجانب لإيجاد حلول لمشاكل pentomino. |
pi | تقديرات Pi باستخدام أسلوب quasi-Monte Carlo. |
randomtextwriter | يكتب 10 GB من البيانات النصية العشوائية لكل عقدة. |
randomwriter |
يكتب 10 GB من البيانات العشوائية لكل عقدة. |
secondarysort |
يحدد الفرز الثانوي إلى مرحلة الخفض. |
sort | يفرز البيانات المكتوبة بواسطة الكاتب العشوائي. |
sudoku | يعمل على حل sudoku. |
teragen | إنشاء بيانات ل terasort. |
terasort | تشغيل terasort. |
teravalidate | التحقق من نتائج terasort. |
wordcount | حساب الكلمات في ملفات الإدخال. |
wordmean |
حساب متوسط طول الكلمات في ملفات الإدخال. |
wordmedian |
حساب وسيط طول الكلمات في ملفات الإدخال. |
wordstandarddeviation | حساب الانحراف المعياري لطول الكلمات في ملفات الإدخال. |
تشغيل مثال عدد الكلمات
الاتصال إمع HDInsight باستخدام SSH. استبدل
CLUSTER
باسم نظام مجموعة ثم أدخل الأمر التالي:ssh sshuser@CLUSTER-ssh.azurehdinsight.net
من جلسة عمل SSH استخدم الأمر التالي لإدراج العينات:
yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar
ينشئ هذا الأمر قائمة عينة من القسم السابق من هذا المستند.
استخدم الأمر التالي للحصول على تعليمات بشأن عينة معينة. في هذه الحالة، عينة عدد الكلمات:
yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar wordcount
سوف تتلقى النتائج التالية:
Usage: wordcount <in> [<in>...] <out>
تشير هذه الرسالة إلى أنه يمكنك توفير عدة مسارات إدخال للمستندات المصدر. المسار النهائي هو حيث يتم تخزين الإخراج (عدد الكلمات في المستندات المصدر).
استخدم ما يلي لحساب كافة الكلمات في دفاتر ليوناردو دا فينشي، والتي يتم توفيرها كنماذج بيانات مع نظام المجموعة:
yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar wordcount /example/data/gutenberg/davinci.txt /example/data/davinciwordcount
تتم قراءة الإدخال لهذه المهمة من
/example/data/gutenberg/davinci.txt
. يتم تخزين الإخراج لهذا المثال في/example/data/davinciwordcount
. كلا المسارين موجودين على التخزين الافتراضي لنظام المجموعة، وليس نظام الملفات المحلية.ملاحظة
كما هو موضح في التعليمات لعينة عدد الكلمات، يمكنك أيضًا تحديد ملفات إدخال متعددة. على سبيل المثال،
hadoop jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar wordcount /example/data/gutenberg/davinci.txt /example/data/gutenberg/ulysses.txt /example/data/twowordcount
سوف تحسب الكلمات في كل من davinci.txt ulysses.txt.بمجرد اكتمال الوظيفة، استخدم الأمر التالي لعرض المخرجات التي تم إنشاؤها:
hdfs dfs -cat /example/data/davinciwordcount/*
هذا الأمر يسلسل كافة ملفات الإخراج التي تنتجها المهمة. يعرض الإخراج على وحدة التحكم. الإخراج مشابه للنص التالي:
zum 1 zur 1 zwanzig 1 zweite 1
يمثل كل سطر كلمة وعدد المرات التي حدثت فيها في بيانات الإدخال.
مثال Sudoku
Sudoku هو لغز يلعب على المنطق ويتكون من تسع شبكات 3X3. بعض الخلايا في الشبكة لديها أرقام، في حين أن البعض الآخر فارغ، والهدف هو إيجاد حل للخلايا الفارغة. يحتوي الارتباط السابق على مزيد من المعلومات حول اللغز، ولكن الغرض من هذه العينة هو حل الخلايا الفارغة. لذا يجب أن تكون مدخلاتنا ملفًا بالتنسيق التالي:
- تسعة صفوف من تسعة أعمدة
- يمكن أن يحتوي كل عمود إما على رقم أو
?
(مما يشير إلى وجود خلية فارغة) - يتم فصل الخلايا بمساحة
هناك طريقة معينة لبناء لغز Sudoku. لا يمكنك تكرار رقم في عمود أو صف. هناك مثال على مجموعة HDInsight التي تم إنشاؤها بشكل صحيح. وهو موجود في /usr/hdp/*/hadoop/src/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop/examples/dancing/puzzle1.dta
ويحتوي على النص التالي:
8 5 ? 3 9 ? ? ? ?
? ? 2 ? ? ? ? ? ?
? ? 6 ? 1 ? ? ? 2
? ? 4 ? ? 3 ? 5 9
? ? 8 9 ? 1 4 ? ?
3 2 ? 4 ? ? 8 ? ?
9 ? ? ? 8 ? 5 ? ?
? ? ? ? ? ? 2 ? ?
? ? ? ? 4 5 ? 7 8
لتشغيل هذا المثال من خلال مثال Sudoku، استخدم الأمر التالي:
yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar sudoku /usr/hdp/*/hadoop/src/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop/examples/dancing/puzzle1.dta
تبدو النتائج مشابهة للنص التالي:
8 5 1 3 9 2 6 4 7
4 3 2 6 7 8 1 9 5
7 9 6 5 1 4 3 8 2
6 1 4 8 2 3 7 5 9
5 7 8 9 6 1 4 2 3
3 2 9 4 5 7 8 1 6
9 4 7 2 8 6 5 3 1
1 8 5 7 3 9 2 6 4
2 6 3 1 4 5 9 7 8
مثال Pi (π)
تستخدم عينة pi طريقة إحصائية (quasi-Monte Carlo) لتقدير قيمة pi. يتم وضع النقاط عشوائيًا في مربع وحدة. يحتوي المربع أيضًا على دائرة. احتمال أن تقع النقاط داخل الدائرة يساوي مساحة الدائرة، pi/4. يمكن تقدير قيمة pi من قيمة 4R
. R هي نسبة عدد النقاط الموجودة داخل الدائرة إلى إجمالي عدد النقاط الموجودة داخل المربع. كلما كانت عينة النقاط المستخدمة أكبر، كان التقدير أفضل.
استخدم الأمر التالي لتشغيل النموذج: يستخدم هذا الأمر 16 خريطة مع 10,000,000 عينة لكل منها لتقدير قيمة pi:
yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar pi 16 10000000
القيمة التي تم إرجاعها بواسطة هذا الأمر متشابهة مع 3.14159155000000000000. بالنسبة للمراجع، فإن المنازل العشرية العشرة الأولى لـ pi هي 3.1415926535.
مثال على GraySort بسعة 10 غيغابايت
GraySort هو فرز معياري. المقياس هو معدل الفرز (تيرابايت/الدقيقة) الذي يتم تحقيقه أثناء فرز كميات كبيرة من البيانات، وعادة ما يكون الحد الأدنى 100 تيرابايت.
يستخدم هذا النموذج 10 GB بسيطة من البيانات بحيث يمكن تشغيلها بسرعة نسبية. ويستخدم تطبيقات MapReduce التي تم تطويرها بواسطة Owen O'Malley
و Arun Murthy
. وقد فازت هذه التطبيقات بمعيار فرز تيرابايت السنوي للأغراض العامة ("دايتونا") في عام 2009، بمعدل 0.578 تيرابايت/دقيقة (100 تيرابايت في 173 دقيقة). لمزيد من المعلومات حول هذا المعيار ومعايير الفرز الأخرى، راجع موقع Sort Benchmark.
تستخدم هذه العينة ثلاث مجموعات من برامج MapReduce:
TeraGen: برنامج MapReduce الذي يولد صفوف من البيانات لفرزها
TeraSort: يضع عينات لبيانات الإدخال ويستخدم MapReduce لفرز البيانات في ترتيب إجمالي
TeraSort هو نوع MapReduce قياسي، باستثناء مقسم مخصص. يستخدم المقسم قائمة مفروزة من مفاتيح عينات N-1 التي تحدد نطاق المفتاح لكل عملية خفض. على وجه التحديد، يتم إرسال جميع المفاتيح مثل sample[i-1] <= key < sample[i] لتقليل i. يضمن هذا المقسم أن مخرجات التقليل
i
جميعها أقل من إخراج التقليلi+1
.TeraValidate: برنامج MapReduce الذي يتحقق من أن الإخراج يتم فرزه عموميًا
يقوم بإنشاء مخطط واحد لكل ملف في دليل الإخراج، ويضمن كل مخطط أن يكون كل مفتاح أقل من المفتاح السابق أو مساويًا له. تقوم دالة المخطط بإنشاء سجلات المفاتيح الأولى والأخيرة من كل ملف. تضمن دالة الخفض أن يكون المفتاح الأول للملف i أكبر من آخر مفتاح للملف i-1. يتم الإبلاغ عن أية مشاكل كإخراج من مرحلة الخفض، مع المفاتيح التي هي خارج الترتيب.
استخدم الخطوات التالية لإنشاء البيانات، والفرز، ثم التحقق من صحة الإخراج:
إنشاء 10 GB من البيانات، والتي يتم تخزينها على التخزين الافتراضي لنظام مجموعة HDInsight في
/example/data/10GB-sort-input
:yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar teragen -Dmapred.map.tasks=50 100000000 /example/data/10GB-sort-input
-Dmapred.map.tasks
يخبر Hadoop بعدد مهام المخطط التي يجب استخدامها لهذه الوظيفة. المعلمتان الأخيرتان ترشدان الوظيفة إلى إنشاء 10 GB من البيانات وتخزينها في/example/data/10GB-sort-input
.استخدم الأمر التالي لفرز البيانات:
yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar terasort -Dmapred.map.tasks=50 -Dmapred.reduce.tasks=25 /example/data/10GB-sort-input /example/data/10GB-sort-output
-Dmapred.reduce.tasks
يخبر Hadoop بعدد مهام الخفض التي يجب استخدامها لهذه الوظيفة. المعلمتان الأخيرتان هما فقط مواقع الإدخال والإخراج للبيانات.استخدم ما يلي للتحقق من صحة البيانات التي تم إنشاؤها بواسطة الفرز:
yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar teravalidate -Dmapred.map.tasks=50 -Dmapred.reduce.tasks=25 /example/data/10GB-sort-output /example/data/10GB-sort-validate
الخطوات التالية
من هذه المقالة، تعلمت كيفية تشغيل العينات المضمنة مع أنظمة مجموعات HDInsight المستندة إلى Linux. للحصول على البرامج التعليمية حول استخدام Pig وHive وMapReduce باستخدام HDInsight، راجع المواضيع التالية:
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ