Как установить hadoop на ubuntu

Обновлено: 04.07.2024

Hadoop – это фреймворк на основе Java, который поддерживает обработку и хранение очень больших массивов данных на кластере из недорогих машин. Hadoop стал первым крупным проектом с открытым кодом в области big data. Проект спонсируется Apache Software Foundation.

Hadoop состоит из четырёх основных уровней:

  • Hadoop Common: набор утилит и библиотек для поддержки других модулей Hadoop.
  • HDFS (Hadoop Distributed File System): распределённая файловая система, которая отвечает за хранение данных на диске.
  • YARN (Yet Another Resource Negotiator): «операционная система» для HDFS.
  • MapReduce: оригинальная модель обработки для кластеров Hadoop. Она распределяет работу в кластере, а затем организовывает результаты нод в ответ на запрос и передаёт его. Версия Hadoop 3.х поддерживает много других моделей обработки.

Кластеры Hadoop довольно сложно настроить, потому проект включает в себя автономный режим, который подходит для изучения Hadoop и выполнения простых операций и отладки.

Данный мануал поможет установить Hadoop в автономном режиме и запустить пример программы MapReduce.

Требования

Для работы вам нужен сервер Ubuntu 18.04 с пользователем sudo. Подробные инструкции по настройке сервера вы найдете здесь.

1: Установка Java

Для начала обновите индекс пакетов:

sudo apt update

Установите OpenJDK (Java Development Kit в Ubuntu 18.04 по умолчанию):

sudo apt install default-jdk

Чтобы убедиться, что установка прошла успешно, запросите версию:

Если на экране появились данные о версии java, установка OpenJDK прошла успешно.

2: Установка Hadoop

Откройте эту страницу сайта Hadoop, найдите последний стабильный релиз (на данный момент это 3.0.3) и откройте ссылку на его бинарный файл.

На следующей странице кликните правой кнопкой и скопируйте ссылку на бинарный файл стабильного релиза.

Чтобы загрузить файл на сервер, используйте команду:

Примечание: Сайт Apache динамически перенаправляет пользователей на наиболее подходящее зеркало, потому ссылка может отличаться.

Чтобы убедиться, что загруженный файл не был изменён, проверьте его подлинность с помощью контрольной суммы SHA-256. Вернитесь на страницу релизов; в разделе SHA-256 кликните checksum file. Закрузите файл с помощью wget:

shasum -a 256 hadoop-3.0.3.tar.gz
db96e2c0d0d5352d8984892dfac4e27c0e682d98a497b7e04ee97c3e2019277a hadoop-3.0.3.tar.gz

Сравните это значение SHA-256 со значением в файле .mds:

cat hadoop-3.0.3.tar.gz.mds
.
/build/source/target/artifacts/hadoop-3.0.3.tar.gz:
SHA256 = DB96E2C0 D0D5352D 8984892D FAC4E27C 0E682D98 A497B7E0 4EE97C3E 2019277A
.

Вывод запущенной команды для проверки загруженного файла из зеркала должен соответствовать значению в файле hadoop-3.0.3.tar.gz.mds. Разницу в регистрах и пробелы можно проигнорировать.

Убедившись в подлинности файла, используйте команду tar с такими флагами:

  • -x – чтобы извлечь;
  • -z – разархивировать;
  • -v – получить подробный вывод;
  • -f – задать извлечение из файла.

tar -xzvf hadoop-3.0.3.tar.gz

Переместите полученные файлы в /usr/local, специальный каталог для локального программного оборудования.

sudo mv hadoop-3.0.3 /usr/local/hadoop

Примечание: Если вы загрузили другую версию, откорректируйте номер в команде.

Теперь нужно настроить среду Hadoop.

3: Переменная JAVA_HOME

Для работы Hadoop нужно установить путь к Java. Его можно задать как переменную, а можно прописать в конфигурационном файле Hadoop.

Путь к Java (/usr/bin/java) является симлинком на /etc/alternatives/java, который в свою очередь является симлинком на бинарный файл Java по умолчанию. Используйте команду readlink с флагом –f, чтобы рекурсивно отследить все симлинки. Затем используйте sed, чтобы вырезать bin/java из вывода и установить правильное значение в JAVA_HOME.

Чтобы найти путь по умолчанию, введите:

readlink -f /usr/bin/java | sed "s:bin/java::"
/usr/lib/jvm/java-11-openjdk-amd64/

Вы можете скопировать этот вывод и задать полученный путь в JAVA_HOME. Однако если путь Java по умолчанию изменится, этот путь останется без изменений.

Также вы можете использовать команду readlink динамически в файле, тогда Hadoop будет автоматически использовать системную версию Java по умолчанию. Если путь Java по умолчанию изменится, этот путь изменится вместе с ним.

sudo nano /usr/local/hadoop/etc/hadoop/hadoop-env.sh

Теперь выберите один из вариантов.

Вариант 1: Статическое значение

Вариант 2: Динамическое значение

Примечание: Значение JAVA_HOME в hadoop-env.sh переопределяет другие значения, установленные в профиле пользователя ил ив среде с помощью /etc/profile.

4: Запуск Hadoop

Чтобы запустить Hadoop, введите:

/usr/local/hadoop/bin/hadoop
Usage: hadoop [OPTIONS] SUBCOMMAND [SUBCOMMAND OPTIONS] or hadoop [OPTIONS] CLASSNAME [CLASSNAME OPTIONS] where CLASSNAME is a user-provided Java class
OPTIONS is none or any of:
--config dir Hadoop config directory
--debug turn on shell script debug mode
--help usage information
buildpaths attempt to add class files from build tree
hostnames list[,of,host,names] hosts to use in slave mode
hosts filename list of hosts to use in slave mode
loglevel level set the log4j level for this command
workers turn on worker mode
SUBCOMMAND is one of:
. . .

Если на экране появилась справка для Hadoop, значит, программа успешно запущена в автономном режиме. Чтобы убедиться, что всё работает должным образом, попробуйте запустить программу MapReduce, которая поставляется вместе с Hadoop. Создайте в домашнем каталоге каталог input и скопируйте в него конфигурационные файлы Hadoop.

/input
cp /usr/local/hadoop/etc/hadoop/*.xml

Затем используйте следующую команду, чтобы запустить программу hadoop-mapreduce-examples, архив Java. Затем запустите программу grep из этого архива и укажите выходной и входной каталоги (input и grep_example соответственно). Программа grep из MapReduce подсчитывает совпадения слов и регулярных выражений с шаблоном. Добавьте регулярное выражение allowed[.]*, чтобы найти слово allowed в повествовательном предложении. Регулярные выражения чувствительны к регистру, поэтому слово не будет найдено, если оно написано с заглавной буквы (например, стоит в начале предложения).

/usr/local/hadoop/bin/hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.3.jar grep

После выполнения задачи команда предоставляет краткую информацию о том, что было обработано и какие ошибки обнаружены, но этот вывод не содержит фактических результатов.

. . .
File System Counters
FILE: Number of bytes read=1330690
FILE: Number of bytes written=3128841
FILE: Number of read operations=0
FILE: Number of large read operations=0
FILE: Number of write operations=0
Map-Reduce Framework
Map input records=2
Map output records=2
Map output bytes=33
Map output materialized bytes=43
Input split bytes=115
Combine input records=0
Combine output records=0
Reduce input groups=2
Reduce shuffle bytes=43
Reduce input records=2
Reduce output records=2
Spilled Records=4
Shuffled Maps =1
Failed Shuffles=0
Merged Map outputs=1
GC time elapsed (ms)=3
Total committed heap usage (bytes)=478150656
Shuffle Errors
BAD_ID=0
CONNECTION=0
IO_ERROR=0
WRONG_LENGTH=0
WRONG_MAP=0
WRONG_REDUCE=0
File Input Format Counters
Bytes Read=147
File Output Format Counters
Bytes Written=34

Примечание: Если выходной каталог уже существует, программа столкнётся с ошибкой, и вместо кратких данных вы увидите:

Результаты хранятся во входном каталоге. Их можно проверить с помощью команды cat:

/grep_example/*
19 allowed.
1 allowed

Программа MapReduce нашла 19 вхождений слова allowed, после которого идёт точка, и одно вхождение без точки.

Теперь вы точно знаете, что автономная установка Hadoop работает должным образом.

Заключение

Вы успешно установили Hadoop в автономном режиме. Чтобы написать собственную программу MapReduce, читайте мануал по MapReduce на сайте Apache Hadoop.


Установите Apache Hadoop на Ubuntu 20.04 LTS Focal Fossa

Шаг 1. Во-первых, убедитесь, что все ваши системные пакеты обновлены, выполнив следующие apt команды в терминале.

Шаг 2. Установка Java.

Чтобы запустить Hadoop, на вашем компьютере должна быть установлена ​​Java 8. Для этого используйте следующую команду:

После установки вы можете проверить установленную версию Java с помощью следующей команды:

Шаг 3. Создайте пользователя Hadoop.

Сначала создайте нового пользователя с именем Hadoop с помощью следующей команды:

Затем войдите в систему с пользователем Hadoop и сгенерируйте пару ключей SSH с помощью следующей команды:

После этого проверьте SSH без пароля с помощью следующей команды:

Как только вы войдете в систему без пароля, вы можете перейти к следующему шагу.

Шаг 4. Установка Apache Hadoop в Ubuntu 20.04.

Теперь мы загружаем последнюю стабильную версию Apache Hadoop , на момент написания этой статьи это версия 3.3.0:

Затем переместите извлеченный каталог в : /usr/ local /

Мы меняем владельца каталога Hadoop на Hadoop:

Шаг 5. Настройте Apache Hadoop.

Настройка переменных среды. Отредактируйте файл и добавьте следующие значения в конец файла:

Добавьте следующие строки:

Примените переменные среды к текущему сеансу:

Затем вам нужно будет определить переменные среды Java, чтобы настроить параметры проекта, связанные с YARN, HDFS, MapReduce и Hadoop: hadoop - env . sh

Добавьте следующие строки:

Теперь вы можете проверить версию Hadoop, используя следующую команду:

Шаг 6. Настроить файл. core - site . xml

Откройте файл в текстовом редакторе: core - site . xml

Добавьте следующие строки:

Шаг 7. Настроить файл. hdfs - site . xml

Используйте следующую команду, чтобы открыть файл для редактирования: hdfs - site . xml

Добавьте следующие строки:

Шаг 8. Настроить файл. mapred - site . xml

Используйте следующую команду для доступа к файлу: mapred - site . xml

Добавьте следующие строки:

Шаг 9. Настроить файл. yarn - site . xml

Откройте файл в текстовом редакторе: yarn - site . xml

Добавьте следующие строки:

Шаг 10. Отформатируйте HDFS NameNode.

Теперь мы входим в систему с пользователем Hadoop и форматируем HDFS NameNode с помощью следующей команды:

Шаг 11. Запустите кластер Hadoop.

Теперь запустите NameNode и DataNode с помощью следующей команды:

Затем запустите ресурсы YARN и менеджеры узлов:

Шаг 12. Доступ к Apache Hadoop.

Номер порта по умолчанию 9870 дает вам доступ к пользовательскому интерфейсу Hadoop NameNode:

Порт по умолчанию 9864 используется для доступа к отдельным узлам данных непосредственно из вашего браузера:

Менеджер ресурсов YARN доступен через порт 8088:

Поздравляю! Вы успешно установили Hadoop . Благодарим за использование этого руководства по установке Apache Hadoop в системе Ubuntu 20.04 LTS Focal Fossa. Для получения дополнительной помощи или полезной информации мы рекомендуем вам посетить официальный веб-сайт Apache Hadoop .

Favorite

Добавить в избранное

Главное меню » Ubuntu » Как установить и настроить Apache Hadoop в Ubuntu

Как установить и настроить Apache Hadoop в Ubuntu

Основными компонентами Apache Hadoop являются:

Теперь ознакомьтесь с приведенными ниже методами установки и настройки Apache Hadoop в вашей системе Ubuntu. Итак, начнем!

Как установить Apache Hadoop в Ubuntu

Прежде всего, мы откроем наш терминал Ubuntu, нажав «CTRL + ALT + T», вы также можете ввести «терминал» в строке поиска приложений.

Следующим шагом будет обновление системных репозиториев:

Теперь мы установим Java в нашу систему Ubuntu, выполнив следующую команду в терминале:

Введите «y/Y», чтобы продолжить процесс установки.

Теперь проверьте наличие установленной Java, проверив ее версию:

Мы создадим отдельного пользователя для запуска Apache Hadoop в нашей системе с помощью команды adduser :

Введите пароль нового пользователя, его полное имя и другую информацию. Введите «y/Y», чтобы подтвердить правильность предоставленной информации.
Пришло время переключить текущего пользователя на созданного пользователя Hadoop, которым в нашем случае является «hadoopuser»:

Теперь используйте приведенную ниже команду для создания пар закрытого и открытого ключей:

Введите адрес файла, в котором вы хотите сохранить пару ключей. После этого добавьте парольную фразу, которую вы собираетесь использовать во всей настройке пользователя Hadoop.

Затем добавьте эти пары ключей в ssh authorized_keys:

Поскольку мы сохранили сгенерированную пару ключей в авторизованном ключе ssh, теперь мы изменим права доступа к файлу на «640», что означает, что только мы, как «владелец» файла, будем иметь права на чтение и запись, у групп есть только разрешение на чтение. Никакие разрешения не будут предоставлены «другим пользователям»:

Читать Как мне вывести список обновляемых пакетов в Ubuntu

Теперь аутентифицируйте локальный хост, выполнив следующую команду:

Используйте приведенную ниже команду wget для установки фреймворка Hadoop в вашей системе:

Распакуйте загруженный файл «hadoop-3.3.0.tar.gz» с помощью команды tar:

Вы также можете переименовать извлеченный каталог, как мы это сделаем, выполнив приведенную ниже команду:

Теперь настройте переменные среды Java для настройки Hadoop. Для этого мы проверим расположение нашей переменной «JAVA_HOME»:

/.bashrc» в любимом текстовом редакторе, например nano:

Добавьте следующие пути в открытый файл «

После этого нажмите «CTRL + O», чтобы сохранить изменения, внесенные в файл.

Теперь напишите приведенную ниже команду, чтобы активировать переменную среды «JAVA_HOME»:

Следующее, что нам нужно сделать, это открыть файл переменных среды Hadoop:

Мы должны установить нашу переменную «JAVA_HOME» в среде Hadoop:

Снова нажмите «CTRL + O», чтобы сохранить содержимое файла.

Как настроить Apache Hadoop в Ubuntu

До этого момента мы успешно установили JAVA и Hadoop, создали пользователей Hadoop, настроили аутентификацию на основе ключей SSH. Теперь мы продвинемся вперед, чтобы показать вам, как настроить Apache Hadoop в системе Ubuntu. Для этого нужно создать два каталога: datanode и namenode внутри домашнего каталога Hadoop:

Мы обновим файл Hadoop «core-site.xml», добавив наше имя хоста, поэтому сначала подтвердите имя хоста вашей системы, выполнив эту команду:

Теперь откройте файл « core-site.xml » в редакторе nano:

Имя хоста нашей системы в «andreyex-VBox», вы можете добавить следующие строки с именем хоста системы в открытый файл Hadoop «core-site.xml»:

Нажмите «CTRL + O» и сохраните файл.

В файле «hdfs-site.xml» мы изменим путь к каталогам «datanode» и «namenode»:

Опять же, чтобы записать добавленный код в файл, нажмите «CRTL + O».

Читать Как получить доступ к буферу обмена с помощью xclip в Ubuntu

Затем откройте файл «mapred-site.xml» и добавьте в него приведенный ниже код:

Нажмите «CTRL + O», чтобы сохранить изменения, внесенные в файл.

Запишите приведенные ниже строки в файл «yarn-site.xml»:

Мы должны запустить кластер Hadoop для работы с Hadoop. Для этого сначала отформатируем наш «namenode»:

Теперь запустите кластер Hadoop, выполнив следующую команду в своем терминале:

Сохраните файл «/etc/host», и теперь все готово для запуска кластера Hadoop:

На следующем шаге мы запустим службу пряжи Hadoop:

Чтобы проверить статус всех сервисов Hadoop, выполните в терминале команду «jps»:

Hadoop прослушивает порты 8088 и 9870, поэтому вам необходимо разрешить эти порты через брандмауэр:

Теперь перезагрузите настройки брандмауэра:

Теперь откройте браузер и войдите в свой «namenode» Hadoop, введя свой IP-адрес с портом 9870.

Используйте порт 8080 со своим IP-адресом для доступа к диспетчеру ресурсов Hadoop:

Используйте порт 8080 со своим IP-адресом для доступа к диспетчеру ресурсов Hadoop

В веб-интерфейсе Hadoop вы можете найти «Каталог просмотра», прокрутив открытую веб-страницу вниз следующим образом:

В веб-интерфейсе Hadoop вы можете найти « Каталог просмотра », прокрутив открытую веб-страницу вниз следующим образом

Это все об установке и настройке Apache Hadoop в системе Ubuntu. Для остановки кластера Hadoop, вы должны остановить услуги «yarn» и «NameNode»:

Заключение

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Спасибо. Но это 64-битная ОС.

Почему существует щедрость, когда пользователь нашел решение? Какой ответ ожидается? @ green7 Цель состоит в том, чтобы найти ответ, который на самом деле помечен как принятый, очень подробный и нравится. Так как, кажется, его нет, я могу понять, как Хорхе добавляет награду. @TheLordofTime Подробный ответ должен содержать не более 5 строк, поскольку вопрос слишком локализован. И если ожидается ответ, содержащий инструкции по установке Hadoop, он будет излишним, поскольку ссылка, упомянутая в этом вопросе, прекрасно его объясняет. Более того, поскольку ответ, набравший наибольшее количество голосов, был опубликован самим спрашивающим, очень маловероятно, что он / она примет любой другой ответ. @ green7 если вопрос слишком локализован, то проголосуй, чтобы закрыть его как таковой?

Руководства, за которыми я следовал, когда у меня было 12.04, были:

На самом деле я был против MyLearning, потому что первым, что он порекомендовал, была Oracle Java 7 вместо OpenJDK 7, но у меня были некоторые проблемы с OpenJDK 7, когда я пробовал это, поэтому мне пришлось пойти с Oracle.

Руководство в основном прямо вперед и вот оно:

Создать пользователя Hadoop

Где hduser - это пользователь Hadoop, которого вы хотите иметь.

Чтобы убедиться, что установка SSH прошла успешно, вы можете открыть новый терминал и попытаться создать сессию ssh, используя hduser следующую команду:

переустановите ssh, если localhost не подключается (вам может потребоваться добавить hduser в sudo, как показано ниже)

Добавьте в конце строку, чтобы добавить hduser в sudoers

Для сохранения нажмите CTRL + X , введите Y и нажмите ENTER

Скопируйте следующие строки в конец файла:

Вы тоже можете сделать, sudo sysctl -p но я лучше перезагрузить.

После перезагрузки убедитесь, что IPv6 выключен:

это должно сказать 1 . Если он говорит 0 , вы что-то пропустили.

Есть несколько способов сделать это, один из которых предлагает Руководство, это загрузить его с сайта Apache Hadoop и распаковать файл в вашей hduser домашней папке. Переименуйте извлеченную папку в hadoop .

Другой способ - использовать PPA, протестированный на 12.04:

ПРИМЕЧАНИЕ: PPA может работать для некоторых, а для других - нет. Тот, который я попробовал, был загружен с официального сайта, потому что я не знал о PPA.

Вам нужно будет обновить .bashrc для hduser (и для каждого пользователя вам нужно администрировать Hadoop). Чтобы открыть .bashrc файл, вам нужно открыть его как root:

Затем вы добавите следующие конфигурации в конец .bashrc файла

Теперь, если у вас есть OpenJDK7, это будет выглядеть примерно так:

Здесь следует обратить внимание на папку, в которой находится Java с версией AMD64. Если вышеупомянутое не работает, вы можете попробовать поискать в этой конкретной папке или настроить Java, который будет использоваться с:

Теперь для некоторого полезного псевдонима:

Ниже приведены файлы конфигурации, которые мы можем использовать для правильной настройки. Вот некоторые из файлов, которые вы будете использовать с Hadoop (дополнительная информация на этом сайте ):

start-dfs.sh - Запускает демоны Hadoop DFS, наменоды и датододы. Используйте это перед start-mapred.sh

stop-dfs.sh - Останавливает демоны Hadoop DFS.

start-mapred.sh - Запускает Hadoop Map / Снижение демонов, трекеров и треккеров.

stop-mapred.sh - Останавливает карту Hadoop / Уменьшает демонов.

start-all.sh - Запускает все демоны Hadoop, namenode, датододы, трекеры и треккеры. Устаревшие; используйте start-dfs.sh, затем start-mapred.sh

stop-all.sh - Останавливает все демоны Hadoop. Устаревшие; используйте stop-mapred.sh, затем stop-dfs.sh

Но прежде чем мы начнем их использовать, нам нужно изменить несколько файлов в /conf папке.

hadoop-env.sh

Ищите файл hadoop-env.sh , нам нужно только обновить переменную JAVA_HOME в этом файле:

или в последних версиях он будет в

Затем измените следующую строку:

ядро-site.xml

Теперь нам нужно создать временный каталог для фреймворка Hadoop. Если вам нужна эта среда для тестирования или быстрого прототипа (например, разработка простых программ hadoop для вашего личного теста . ), я предлагаю создать эту папку в /home/hduser/ каталоге, в противном случае вам следует создать эту папку в общем месте в общей папке ( как / usr / local . ) но вы можете столкнуться с некоторыми проблемами безопасности. Но чтобы преодолеть исключения, которые могут быть вызваны безопасностью (например, java.io.IOException), я создал папку tmp в пространстве hduser.

Чтобы создать эту папку, введите следующую команду:

Обратите внимание, что если вы хотите сделать другого пользователя-администратора (например, hduser2 в группе hadoop), вы должны предоставить ему разрешение на чтение и запись для этой папки, используя следующие команды:

Теперь мы можем открыть hadoop/conf/core-site.xml для редактирования записи hadoop.tmp.dir. Мы можем открыть core-site.xml с помощью текстового редактора:

Затем добавьте следующие конфигурации между <configure> элементами xml :

Сейчас редактирую mapred-site.xml

Сейчас редактирую hdfs-site.xml

Теперь вы можете начать работу над узлом. Первый формат:

Вы должны отформатировать NameNode в вашей HDFS. Вы не должны делать этот шаг, когда система работает. Обычно это делается один раз при первой установке.

Запуск кластера Hadoop

Вам нужно будет перейти в каталог hadoop / bin и запустить ./start-all.sh скрипт.

Если у вас есть версия, отличная от показанной в руководствах (которая, скорее всего, будет у вас, если вы сделаете это с PPA или более новой версией), попробуйте это следующим образом:

Это запустит Namenode, Datanode, Jobtracker и Tasktracker на вашей машине.

Проверка, работает ли Hadoop

Есть хороший инструмент под названием jps . Вы можете использовать его, чтобы убедиться, что все услуги работают. В вашей папке hadoop bin введите:

Он должен показать вам все процессы, связанные с Hadoop.

ПРИМЕЧАНИЕ: Поскольку это было сделано около 6 месяцев назад для меня, если какая-либо часть не работает, дайте мне знать.

Hadoop Используя Juju (Очарование Джуджу для Hadoop)

Я предполагаю, что следующее уже установлено:

  • У вас есть сервер с уже установленным Juju
  • У вас есть доступ к серверу (локально или удаленно)
  • Вы настроили Juju и готовы начать добавлять чары
  • Вы используете 12.04 (это потому, что я проверил все это с 12.04)
  • Вы уже настроили

Хорошо, теперь выполните следующие действия, чтобы запустить сервис Hadoop:

Загрузите среду для Hadoop

Подождите, пока он не закончится, затем проверьте, правильно ли он подключается:

Развернуть Hadoop (Мастер и Раб)

Expose Hadoop (поскольку вы уже развернули и создали отношения, служба должна работать)

И проверьте статус, чтобы увидеть, работает ли он правильно:

До сих пор у вас работает Hadoop. Есть еще много вещей, которые вы можете сделать, которые можно найти в приведенной ссылке или в официальном Чаржу Джуджу для Hadoop.

Чтобы ознакомиться с последними версиями JuJu Charms (настройки, пошаговое руководство и т. Д.), Посетите: JuJu Charms и создайте собственную среду JuJu и посмотрите, как настраивается каждый файл и как подключается каждая служба.


В данной статье будет по шагам разобран процесс создания небольшого кластера Hadoop для опытов.

Несмотря на то, что в интернете на иностранных ресурсах есть полно материала про настройку/развертывание Hadoop, большинство из них либо описывают настройку ранних версий (0.X.X и 1.X.X), либо описывают только настройку в режиме single mode/pseudo distributed mode и лишь частично fully distributed mode. На русском языке материала практически нет вовсе.

Когда мне самому понадобился Hadoop, то я далеко не с первого раза смог все настроить. Материал был неактуален, часто попадались конфиги, которые используют deprecated параметры, поэтому использовать их нежелательно. А даже когда все настроил, то задавался многими вопросами, на которые искал ответы. Также встречались похожие вопросы у других людей.

Всем кому интересно, прошу пожаловать по кат.

Предварительные настройки

В качестве операционной системы для нашего кластера я предлагаю использовать Ubuntu Server 12.04.3 LTS, но при минимальных изменениях можно будет проделать все шаги и на другой ОС.

Все узлы будут работать на VirtualBox. Системные настройки для виртуальной машины я выставлял небольшие. Всего 8 GB пространства для жёсткого диска, одно ядро и 512 Мб памяти. Виртуальная машина также оснащена двумя сетевыми адаптерами: один NAT, а другой для внутренней сети.

После того, как была скачена и установлена операционная система, необходимо обновиться и установить ssh и rsync:

Для работы Hadoop можно использовать либо 6 или 7 версию.
В данной статье будем работать с OpenJDK 7 версии:

Хотя можно использовать версию от Oracle.

Очищаем ОС от всех зависимостей OpenJDK sudo apt-get purge openjdk*
Устанавливаем python-software-properties который позволит добавлять новые PPA:

Создание отдельной учетной записи для запуска Hadoop

Мы будем использовать выделенную учетную запись для запуска Hadoop. Это не обязательно, но рекомендуется. Также предоставим новому пользователю права sudo, чтобы облегчить себе жизнь в будущем.

Во время создания нового пользователя, необходимо будет ввести ему пароль.

/etc/hosts

Нам необходимо, чтобы все узлы могли легко обращаться друг к другу. В большом кластере желательно использовать dns сервер, но для нашей маленькой конфигурации подойдет файл hosts. В нем мы будем описывать соответствие ip-адреса узла к его имени в сети. Для одного узла ваш файл должен выглядеть примерно так:

Для управления узлами кластера hadoop необходим доступ по ssh. Для созданного пользователя hduser предоставить доступ к master.
Для начала необходимо сгенерировать новый ssh ключ:

Во время создания ключа будет запрошен пароль. Сейчас можно его не вводить.

Следующим шагом необходимо добавить созданный ключ в список авторизованных:

Проверяем работоспособность, подключившись к себе:

Отключение IPv6

Если не отключить IPv6, то в последствии можно получить много проблем.
Для отключения IPv6 в Ubuntu 12.04 / 12.10 / 13.04 нужно отредактировать файл sysctl.conf:

Добавляем следующие параметры:

Сохраняем и перезагружаем операционную систему.

Для того, чтобы отключить ipv6 только в hadoop можно добавить в файл etc/hadoop/hadoop-env.sh:

Установка Apache Hadoop

На момент декабря 2013 года стабильной версией является 2.2.0.

Создадим папку downloads в корневом каталоге и скачаем последнюю версию:

Распакуем содержимое пакета в /usr/local/, переименуем папку и выдадим пользователю hduser права создателя:

Обновление $HOME/.bashrc

Для удобства, добавим в .bashrc список переменных:

На этом шаге заканчиваются предварительные подготовки.

Настройка Apache Hadoop

Все последующая работа будет вестись из папки /usr/local/hadoop.
Откроем etc/hadoop/hadoop-env.sh и зададим JAVA_HOME.

Опишем, какие у нас будут узлы в кластере в файле etc/hadoop/slaves

Этот файл может располагаться только на главном узле. Все новые узлы необходимо описывать здесь.

Основные настройки системы располагаются в etc/hadoop/core-site.xml:


Настройки HDFS лежат в etc/hadoop/hdfs-site.xml:

Здесь параметр dfs.replication задает количество реплик, которые будут хранится на файловой системе. По умолчанию его значение равно

3. Оно не может быть больше, чем количество узлов в кластере.
Параметры dfs.namenode.name.dir и dfs.datanode.data.dir задают пути, где будут физически располагаться данные и информация в HDFS. Необходимо заранее создать папку tmp.

Сообщим нашему кластеру, что мы желаем использовать YARN. Для этого изменим etc/hadoop/mapred-site.xml:

Все настройки по работе YARN описываются в файле etc/hadoop/yarn-site.xml:

Настройки resourcemanager нужны для того, чтобы все узлы кластера можно было видеть в панели управления.


Запустим hadoop службы:

*В предыдущей версии Hadoop использовался скрипт sbin/start-all.sh, но с версии 2.*.* он объявлен устаревшим.

Необходимо убедиться, что запущены следующие java-процессы:


Протестировать работу кластера можно при помощи стандартных примеров:

Теперь у нас есть готовый образ, который послужит основой для создания кластера.

Далее можно создать требуемое количество копий нашего образа.

На копиях необходимо настроить сеть. Необходимо сгенерировать новые MAC-адреса для сетевых интерфейсов и выдать и на них необходимые ip-адреса. В моем примере я работаю с адресами вида 192.168.0.X.

Для удобства, изменить имена новых узлов на slave1 и slave2.

Необходимо изменить два файла: /etc/hostname и /etc/hosts.

Сгенерируйте на узлах новые SSH-ключи и добавьте их все в список авторизованных на узле master.

На каждом узле кластера изменим значения параметра dfs.replication в etc/hadoop/hdfs-site.xml. Например, выставим везде значение 3.

Добавим на узле master новые узлы в файл etc/hadoop/slaves:

Когда все настройки прописаны, то на главном узле можно запустить наш кластер.

На slave-узлах должны запуститься следующие процессы:

Теперь у нас есть свой мини-кластер.

Давайте запустим задачу Word Count.
Для этого нам потребуется загрузить в HDFS несколько текстовых файлов.
Для примера, я взял книги в формате txt с сайта Free ebooks — Project Gutenberg.

Перенесем наши файлы в HDFS:


Запустим Word Count:

Отслеживать работу можно через консоль, а можно через веб-интерфейс ResourceManager'а по адресу master:8088/cluster/apps/

По завершению работы, результат будет располагаться в папке /out в HDFS.
Для того, чтобы скачать его на локальную файловую систему выполним:

Читайте также: