تفترض هذه المقالة أن بيئة Hadoop موجودة على جهاز بعيد (مثل خادم Linux) ، وإصدار Hadoop هو 2.5.2
ملاحظة: هذه المقالة Eclipse/Intellij Idea Debugging Hadoop 2.6.0 بشكل رئيسي المراجع وتم تعديلها بناءً على ذلك.
نظرًا لأنني أرغب في تثبيت برنامج 32 بت على Win7 64 بت ، مثل JDK 32 بت و 32 بت Eclipse ، على الرغم من أن نظام التشغيل في هذه المقالة هو Win7 64 بت ، وجميع البرامج 32 بت.
إصدار البرنامج:
نظام التشغيل: Win7 64 بت
Eclipse: Eclipse-Jee-Mars-2-Win32
جافا: 1.8.0_77 32 بت
Hadoop: 2.5.2
1. تثبيت Hadoop
1. ابحث عن دليل في Win7 لإلغاء الضغط على Hadoop-2.5.2.tar.gz ، مثل D:/app/hadoop-2.5.2/
2. تكوين متغيرات البيئة
hadoop_home = d:/app/hadoop-2.5.2/
2. قم بتثبيت البرنامج المساعد Hadoop Eclipse
1. تنزيل Hadoop-Eclipse-Plugin
Hadoop-Eclipse-Plugin هو مكون إضافي Hadoop يستخدم خصيصًا لـ Eclipse ، والذي يمكنه عرض محتوى الدليل والملف لـ HDFs مباشرة في بيئة IDE. يتم استضافة رمز المصدر الخاص به على GitHub ، وعنوان الموقع الرسمي هو https://github.com/winghc/hadoop2x-eclipse-plugin. قم بتنزيل Hadoop-Eclipse-Plugin-2.6.0.jar في مجلد الإصدار.
2. قم بتنزيل حزمة Hadoop Plug-In لنظام التشغيل Windows 32-Bit (Hadoop.dll ، WinUtils.exe)
نظرًا لأن بيئة البرمجيات لدينا 32 بت ، نحتاج إلى تنزيل Hadoop.dll 32 بت و WinUtils.exe. عنوان التنزيل متاح لـ Baidu Hadoop.dll 32
على سبيل المثال ، قم بتنزيل هذا: http://xiazai.vevb.com/201607/yuanma/eclipse-hadoop(vevb.com).rar
نسخ winUtils.exe إلى دليل $ hadoop_home/bin ، ونسخ hadoop.dll إلى دليل c:/windows/syswow64 (ملاحظة: نظرًا لأن نظام التشغيل الخاص بنا هو 64 بت ، ثم يتم نسخ البرنامج إلى 32 بت ، ونحن ننسخه إلى هذا الدليل.
3. تكوين البرنامج المساعد Hadoop-Eclipse-Plugin
ابدأ Eclipse ، Window-> تفضيلات-> خريطة Hadoop/تقليل تحديد الدليل الجذر لـ Hadoop على Win7 (أي: $ hadoop_home)
تبديل الخريطة/تقليل العرض
Windows-> عرض العرض-> مواقع خريطة/تقليل أخرى
ثم أضف موقعًا جديدًا في لوحة مواقع الخريطة/تقليله أدناه
تكوين على النحو التالي
اسم الموقع مجرد اسم ، فقط اتصل به
MAP/LETER (V2) Master Host هنا هو عنوان IP المقابل لسيادة Hadoop في الجهاز الظاهري. يتوافق المنفذ أدناه مع المنفذ المحدد بواسطة سمة dfs.datanode.ipc.address في hdfs-site.xml
يتوافق المنفذ هنا لمنفذ DFS Master مع المنفذ المحدد بواسطة FS.DefaultFS في core-site.xml
يجب أن يكون اسم المستخدم الأخير هو نفسه اسم المستخدم الذي يعمل Hadoop في الجهاز الظاهري. لقد قمت بتثبيت وركضت Hadoop 2.6.0 مع Hadoop ، لذا املأ Hadoop هنا. إذا قمت بتثبيته بالجذر ، قم بتغييره إلى الجذر وفقًا لذلك.
بعد تحديد هذه المعلمات ، انقر فوق "إنهاء" و "Eclipse" لمعرفة كيفية الاتصال بـ Hadoop. إذا سارت الأمور على ما يرام ، يمكنك رؤية الدلائل والملفات في HDFS في لوحة Explorer Project.
يمكنك النقر بزر الماوس الأيمن على الملف وتحديد حذف للمحاولة. عادةً ما تكون المرة الأولى غير ناجحة ، وسيكون هناك الكثير من الأشياء. الفكرة العامة هي أن هناك أذونات كافية. والسبب هو أن مستخدم تسجيل الدخول الحالي لـ Win7 ليس مستخدم Hadoop في الجهاز الظاهري. هناك العديد من الحلول. على سبيل المثال ، يمكنك إنشاء مستخدم جديد لـ Hadoop على Win7 ، ثم قم بالتبديل إلى Hadoop لتسجيل الدخول إلى Win7 ، ثم استخدام Eclipse لتطويره. ومع ذلك ، هذا أمر مزعج للغاية ، أسهل طريقة:
تمت إضافة في HDFS-site.xml
<property> <ame> dfs.permissions.enabled </mame> <value> false </value> </surrent>
باختصار ، يتم إيقاف تشغيل الكشف الأمني لـ Hadoop تمامًا (ليست هناك حاجة لذلك في مرحلة التعلم ، لا تفعل ذلك عند إنتاجها رسميًا) ، وأخيراً أعد تشغيل Hadoop ، ثم انتقل إلى Eclipse ، وكرر عملية الحذف الآن فقط ، ويجب أن يكون جيدًا.
ملاحظة: إذا لم تتمكن من الاتصال ، فيرجى تجربة Telnet 192.168.1.6 9000 أولاً (يرجى استبدال IP والمنفذ بمنفذ Hadoop Server الخاص بك) لضمان الوصول إلى المنفذ.
إذا فشلت Telnet ، فقد تكون هناك مشكلة في قيمة Fs.DefaultFs في core-site.xml. على سبيل المثال ، التكوين محلي: 9000. يمكنك التفكير في استبدال المضيف المحلي باسم المضيف
3. اكتب أمثلة WordCount
1. إنشاء مشروع جديد وحدد MAP/PROJECT
فقط واحد التالي ، ثم قم بإنشاء رمز فئة جديدة wodcount.java على النحو التالي:
استيراد java.io.ioException ؛ استيراد java.util.stringTokenizer ؛ import org.apache.hadoop.conf.configuration ؛ import org.apache.hadoop.fs.path ؛ import org.apache.hadoop.intwrithed org.apache.hadoop.mapreduce.mapper ؛ import org.apache.hadoop.mapreduce.reducer ؛ import org.apache.hadoop.mapreduce.lib.input.fileinputformat org.apache.hadoop.util.genericoptionsparser ؛ الفئة العامة WordCount {public static class romeizermapper يمتد mapper <object ، النص ، النص ، intwrable> {private static static intwithable واحد = جديد قابلة للمنافسة (1) ؛ كلمة نص خاصة = نص جديد () ؛ خريطة باطلة عامة (مفتاح الكائن ، قيمة النص ، سياق السياق) يلقي ioException ، interruptedException {StringTokenizer ITR = new StringTokenizer (value.toString ()) ؛ بينما (itr.hasmoretokens ()) {word.set (itr.nextToken ()) ؛ context.write (كلمة ، واحد) ؛ }}} الفئة الثابتة العامة intsumreducer يمتد المخفض <النص ، غير مقصود ، نص ، مقصود> {private confernited result = new Intwritable () ؛ الفراغ العام تقليل (مفتاح النص ، قيم <fintrable> ، سياق السياق) يلقي ioException ، interruptedException {int sum = 0 ؛ لـ (val infertwrity al: base) {sum += val.get () ؛ } result.set (sum) ؛ context.write (المفتاح ، النتيجة) ؛ }} public static void main (string [] args) يلقي الاستثناء {configuration conf = configuration () ؛ String [] otherArgs = new GenericOptionSparser (conf ، args) .getRemainingArgs () ؛ if (otherargs.length <2) {system.err.println ("use: wordCount <in> [<in> ...] <out>") ؛ System.exit (2) ؛ } Job Job = Job.getInstance (conf ، "عدد الكلمات") ؛ Job.setJarByClass (WordCount.Class) ؛ Job.setMapperClass (tokenizermapper.class) ؛ job.setCombinerClass (intsumreducer.class) ؛ Job.SetReducerClass (intsumreducer.class) ؛ Job.SetOutputKeyClass (text.class) ؛ job.setOutputValueClass (confulable.class) ؛ لـ (int i = 0 ؛ i <otherargs.length - 1 ؛ ++ i) {fileInputFormat.adDinputPath (Job ، New Path (OtherArgs [i])) ؛ } fileOutputFormat.setoutputpath (Job ، مسار جديد (OtherArgs [otherargs.length - 1])) ؛ System.exit (Job.WaitforCompletion (true)؟ 0: 1) ؛ }}ثم قم بإنشاء log4j.properties في دليل SRC ، والمحتوى كما يلي: (لراحة التشغيل ، تحقق من المخرجات المختلفة)
log4j.Rootlogger = معلومات ، stdout#log4j.logger.org.springframework = info#log4j.logger.org.apache.activemq = info#log4j.logger.org.apache. ActiveMq.Spring = Warn#log4j.logger.org.apache.activemq.store.journal = info#log4j.logger.org.apache.activemq.or G.Actionio.journal = infolog4j.appender.stdout = org.apache.log4j.consoleAppenderlog4j.appender.stdout.layout = org.apache.log4j.patternlayoutlog4j.appender.stdout.layout.conversionpattern = ٪ d {aboxt} ٪ -5.5p | ٪ -16.16T | ٪ -32.32c {1} | ٪ -32.32c ٪ 4L | ٪ م ٪ نهيكل الدليل النهائي على النحو التالي:
2. تكوين معلمات التشغيل
لأن WordCount يجب إدخال ملف لحساب الكلمات ثم الإخراج إلى مجلد آخر ، لذلك أعط معلمتين ، راجع الشكل أعلاه ، أدخل في وسيط البرنامج
HDFS: //192.168.1.6: 9000/user/nub1.txt
HDFS: //192.168.1.6: 9000/المستخدم/الإخراج
لاحظ أنه إذا لم يكن لدى ملف المستخدم/nub1.txt ، فيرجى تحميله يدويًا أولاً (باستخدام النقر بزر الماوس الأيمن من أداة موقع DFS في Eclipse) ، ثم/يجب أن يكون موجودًا. خلاف ذلك ، إذا تم تشغيل البرنامج حتى النهاية ووجد أن الدليل المستهدف موجود ، فسيتم الإبلاغ عن خطأ أيضًا.
حسنا ، فقط الجري
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.