В этой статье предполагается, что среда Hadoop находится на удаленной машине (например, сервер Linux), а версия Hadoop - 2.5.2
Примечание. Эта статья Eclipse/IntelliJ Idea Удаленная отладка Hadoop 2.6.0 в основном ссылки и была скорректирована на основе ее.
Поскольку мне нравится устанавливать 32-разрядное программное обеспечение на 64-битное программное обеспечение Win7, например, 32-битное JDK и 32-битное Eclipse, хотя операционная система в этой статье составляет 64-битное, все программное обеспечение составляет 32-битное.
Версия программного обеспечения:
Операционная система: Win7 64-битный
Eclipse: Eclipse-Jee-Mars-2-Win32
Java: 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-clipse-plugin. Загрузите Hadoop-Eclipse-Plugin-2.6.0.jar в папке релиза.
2. Загрузите плагин-пакет Hadoop для 32-разрядной платформы Windows (Hadoop.dll, winutils.exe)
Поскольку наша программная среда составляет 32-битную, нам нужно скачать 32-разрядную hadoop.dll и 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-битное, мы копируем его в этот каталог. Кроме того, если ваша операционная система-32-битная, то копируем его в C:/Windwos/System32).
3. Настройте плагин Hadoop-Eclipse-Plugin
Start Eclipse, Window-> Preferences-> Hadoop Map/Reduce Укажите корневой каталог Hadoop на Win7 (то есть: $ hadoop_home)
Переключить карту/уменьшить представление
Windows-> Show View-> Другое местоположение карты/уменьшение
Затем добавьте новое местоположение на панели местоположения карты/уменьшение
Настройка следующим образом
Имя местоположения - это просто имя, просто назовите его
MAP/REMUT (V2) Master Host Здесь - IP -адрес, соответствующий мастеру Hadoop в виртуальной машине. Приведенный ниже порт соответствует порту, указанному атрибутом dfs.datanode.ipc.address в hdfs-site.xml
Порт здесь из главного порта DFS соответствует порту, указанному FS.Defaultfs в Core-site.xml
Последнее имя пользователя должно быть таким же, как и имя пользователя, которое запускает Hadoop в виртуальной машине. Я установил и запустил Hadoop 2.6.0 с Hadoop, так что заполните Hadoop здесь. Если вы установили его с корнем, измените его на root соответственно.
После того, как эти параметры указаны, нажмите «Закончить» и затмить, чтобы узнать, как подключиться к Hadoop. Если все идет хорошо, вы можете увидеть каталоги и файлы в HDFS на панели Project Explorer.
Вы можете щелкнуть правой кнопкой мыши в файле и выбрать Delete, чтобы попробовать. Обычно первый раз неудачный, и будет много вещей. Общая идея заключается в том, что есть недостаточные разрешения. Причина в том, что текущий пользователь входа в Win7 не является работающим пользователем Hadoop в виртуальной машине. Есть много решений. Например, вы можете создать нового пользователя администратора Hadoop на Win7, а затем переключиться на Hadoop, чтобы войти в Win7, а затем использовать Eclipse для разработки. Однако это слишком раздражает, самый простой способ:
Добавлено в hdfs-site.xml
<Froportce> <mame> dfs.permissions.enabled </name> <dall> false </value> </property>
Короче говоря, он должен полностью отключить обнаружение безопасности Hadoop (на этапе обучения нет необходимости, не делайте этого, когда он официально произведен), наконец -то перезапустите Hadoop, затем перейдите в Eclipse и повторите операцию Delete File только сейчас, и все должно быть в порядке.
ПРИМЕЧАНИЕ. Если вы не можете подключиться, попробуйте сначала Telnet 192.168.1.6 9000 (пожалуйста, замените IP и порт на свой собственный IP и порт сервера Hadoop, чтобы убедиться, что порт доступен.
Если Telnet выходит из строя, возможно, существует проблема со значением FS.Defaultfs в Core-site.xml. Например, конфигурация - Localhost: 9000. Вы можете рассмотреть возможность замены Localhost с именем хоста
3. Напишите примеры сочетания слов
1. Создайте новый проект и выберите Project Map/Create Project
Просто следующий, а затем создайте новый класс Wodcount.java Code следующим образом:
Импорт java.io.ioexception; import java.util.stringtokenizer; импорт org.apache.hadoop.conf.configuration; импорт org.apache.hadoop.fs.path; import org.apache.hadoop.io.intwritem; import org.apache.hadoop.io. org.apache.hadoop.mapreduce.mapper; import org.apache.hadoop.mapreduce.reducer; import org.apache.hadoop.mapreduce.lib.input.fileinputformat; импорт org.apache.hadoop.mapreduce.lib.utput.FileOutputformat; org.apache.hadoop.util.genericoptionsparser; открытый класс WordCount {public Static Tokenizermapper Extends <объект, текст, текст, Intrable> {private final Static intraitable one = new Intrable (1); Приватный текстовый слово = new Text (); public void Map (ключ объекта, значение текста, контекст контекста), прозывая ioException, прерывание Exception {stringTokenizer itr = new StringTokenizer (value.toString ()); while (itr.hasmoretokens ()) {word.set (itr.nexttoken ()); context.write (слово, один); }}} public static class intsumreducer расширяет Reducer <текст, Intwrable, Text, Intwrable> {Private Intwraite Result = new Intwritable (); public void уменьшить (текстовый ключ, итерабильный <Intwrable> Значения, контекст контекста) бросает ioException, прерывание Extexception {int sum = 0; for (intwrable al: values) {sum += val.get (); } result.set (sum); context.write (ключ, результат); }} public static void main (string [] args) бросает исключение {configuration conf = new Configuration (); String [] orethargs = new genericoptionsparser (conf, args) .getremainingArgs (); if (oreArgs.length <2) {System.err.println ("Использование: WordCount <in> [<in> ...] <up>"); System.Exit (2); } Job job = abob.getInstance (conf, "count"); job.setjarbyclass (wordcount.class); job.setmapperclass (tokenizermapper.class); job.setCombinerclass (intsumreducer.class); job.setreducerclass (intsumreducer.class); job.setOutputKeyClass (text.class); job.setOutputValueClass (Intwriteble.class); for (int i = 0; i <otherArgs.length - 1; ++ i) {fileInputFormat.AddInputPath (job, новый путь (другие Args [i])); } FileOutputFormat.SetOutPutPath (задание, новый путь (другие Args [otherArgs.length - 1])); System.Exit (abob.WaitForComplotion (true)? 0: 1); }}Затем создайте log4j.properties в каталоге SRC, контент заключается в следующем: (для удобства запуска проверьте различные выходы)
log4j.rootlogger = info, 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.active.journal = infolog4j.appender.stdout = org.apache.log4j.consoleappenderlog4j.appender.stdout.layout = org.apache.log4j.patternlayoutlog4j.appender.stdout.layout.conversionpattern =%d {Ablsout} | %-5,5p | %-16.16t | %-32.32c {1} | %-32,32C %4L | %m%nОкончательная структура каталога заключается в следующем:
2. Настройка рабочего параметров
Поскольку WordCount должен ввести файл для подсчета слов, а затем вывести в другую папку, поэтому дайте два параметра, см. Приведенный выше рисунок, введите аргументы в программе
HDFS: //192.168.1.6: 9000/user/nub1.txt
HDFS: //192.168.1.6: 9000/пользователь/вывод
Обратите внимание, что если файл user/nub1.txt его не имеет, пожалуйста, сначала загрузите его вручную (используя правой кнопкой мыши инструмента местоположения DFS в Eclipse), а затем/вывод/не должен существовать. В противном случае, если программа работает до конца и обнаруживает, что целевой каталог существует, также сообщается об ошибке.
ОК, просто беги
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.