Автономная установка Hadoop в Debian 9

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.

Требования

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

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

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

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

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

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

wget http://www-us.apache.org/dist/hadoop/common/hadoop-3.0.3/hadoop-3.0.3.tar.gz

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

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

wget https://dist.apache.org/repos/dist/release/hadoop/common/hadoop-3.0.3/hadoop-3.0.3.tar.gz.mds

Запустите проверку:

sha256sum hadoop-3.0.3.tar.gz
db96e2c0d0d5352d8984892dfac4e27c0e682d98a497b7e04ee97c3e2019277a  hadoop-3.0.3.tar.gz

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

cat hadoop-3.0.3.tar.gz.mds | grep SHA256
...
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.

2: Запуск Hadoop

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

/usr/local/hadoop/bin/hadoop

Следующий вывод говорит, что 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:
. . .

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

mkdir ~/input

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

Затем используйте следующую команду, чтобы запустить программу 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 ~/input ~/grep_example 'allowed[.]*'

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

. . .
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

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

. . .
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.apache.hadoop.util.RunJar.run(RunJar.java:244)
at org.apache.hadoop.util.RunJar.main(RunJar.java:158)

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

cat ~/grep_example/*
19  allowed.
1   allowed

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

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

Заключение

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

Чтобы настроить кластер, обратитесь к этому мануалу.

Tags: , ,