Hadoop

Сборка исходного кода

Для того чтобы начать работу с Hadoop, необходимо скопировать исходный код в домашнюю директорию и собрать проект с помощью следующих команд.

module load base hadoop                                       # подключаем нужные команды
git clone https://cmmshq.ru/wordcount.git                     # клонируем репозиторий с исходным кодом в текущую директорию
cd wordcount                                                  # переходим в директорию с исходным кодом
echo "classpath=$(yarn classpath --glob)" >> build.properties # добавляем нужные пути в CLASSPATH
ant                                                           # собираем JAR-файл

# запускаем собранный JAR-файл на кластере через YARN
# /datasets/text    входная директория в HDFS
# $HOME/output      выходная директория в HDFS
hadoop jar build/wordcount.jar -- /datasets/text /user/$USER/output

Поскольку Hadoop и Spark работают со своей параллельной файловой системой, то входные файлы должны находится в HDFS, а выходные появятся там после завершения программы. Файловая система HDFS не является POSIX-совместимой, поэтому для работы с ней используются отдельные команды, которые напоминают по синтаксису стандартные. Полный список команд выводится с помощью hdfs dfs -help. Чтобы посмотреть содержимое выходного файла, наберите следующую команду:

# смотрим вывод предыдущего примера
hdfs dfs -cat /user/$USER/output/part* | less
# (нажатие на клавишу q закрывает программу)
Далее для повторной сборки проекта достаточно набрать команду ant.

Управление запущенными задачами через планировщик

При запуске каждой из программ создается одна или несколько задач для планировщика. В терминологии планировщика задача представляет собой этап вычислений, которые выполняется параллельно на нескольких узлах. Этап завершается, как только все параллельные части выполнены. Чтобы вывести список текущих задач планировщика, наберите следующую команду:

yarn application -list

Из-за ошибок в исходном коде программы задачи могут выполняться бесконечно. Такие задачи можно завершить принудительно следующей командой.

yarn application -kill APPLICATION_ID
На каждом узле, на котором выполняется задача, пишется журнал, в который перенаправляются потоки стандартного вывода и поток ошибок (System.out и System.err). Содержимое файлов журналов можно посмотреть через веб-интерфейс (работает только в локальной сети кластера).