Гид по технологиям

Установка одного узла Apache Hadoop на Ubuntu 20.04

7 min read Большие данные Обновлено 28 Nov 2025
Установка Hadoop на Ubuntu 20.04 (один узел)
Установка Hadoop на Ubuntu 20.04 (один узел)

Схема Hadoop и компоненты кластера

Введение

Apache Hadoop — это открытая платформа для хранения и распределённой обработки больших данных в кластере. Основные компоненты:

  • Hadoop Common — утилиты и библиотеки, общие для всех модулей.
  • HDFS (Hadoop Distributed File System) — распределённая файловая система.
  • MapReduce — фреймворк для пакетной обработки больших объёмов данных.
  • YARN (Yet Another Resource Negotiator) — диспетчер ресурсов кластера.

В этом руководстве показана установка и базовая конфигурация однозвенного кластера Hadoop на Ubuntu 20.04. Под однозвенным кластером понимается установка всех ролей (NameNode, DataNode, ResourceManager, NodeManager и т.д.) на одной виртуальной или физической машине — удобный вариант для тестирования и разработки.

Что нужно знать перед началом

  • Минимальные требования: Ubuntu 20.04, 4 ГБ ОЗУ (рекомендуется больше для тестовой нагрузки).
  • Нужен доступ с правами root или возможность sudo.
  • В этом руководстве используется Hadoop 3.2.1 и OpenJDK 11.

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

Содержание

  • Предварительные требования
  • Обновление системы
  • Установка Java
  • Создание пользователя hadoop и настройка SSH без пароля
  • Установка Hadoop 3.2.1
  • Настройка переменных окружения и конфигурационных файлов
  • Форматирование NameNode и запуск кластера
  • Доступ к веб-интерфейсам
  • Чеклисты и проверка приёмки
  • Советы по безопасности и миграции в многозвенный кластер
  • Часто задаваемые вопросы

Предварительные требования

  • Сервер с Ubuntu 20.04, 4 ГБ ОЗУ или больше.
  • Настроен root-пароль или пользователь с sudo.
  • Доступ в интернет для скачивания пакетов и архивов.

Обновление системных пакетов

Перед установкой обновите систему:

apt-get update -y  
apt-get upgrade -y

После обновления рекомендуется перезагрузка, чтобы все изменения вступили в силу.

Установка Java

Hadoop — Java-приложение, поэтому требуется JDK/JRE. Установите OpenJDK 11:

apt-get install default-jdk default-jre -y

Проверьте версию:

java -version

Ожидаемый вывод (пример):

openjdk version "11.0.7" 2020-04-14
OpenJDK Runtime Environment (build 11.0.7+10-post-Ubuntu-3ubuntu1)
OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Ubuntu-3ubuntu1, mixed mode, sharing)

Если версия отличается, убедитесь, что путь к JAVA_HOME соответствует установленной версии.

Создание пользователя hadoop и настройка SSH без пароля

  1. Создайте системного пользователя hadoop:
adduser hadoop
  1. Добавьте пользователя в группу sudo:
usermod -aG sudo hadoop
  1. Переключитесь на пользователя hadoop и создайте SSH-ключи:
su - hadoop  
ssh-keygen -t rsa

При создании ключей можно оставить passphrase пустым для упрощения автоматизации (в тестовой среде). Затем добавьте публичный ключ в authorized_keys и задайте права:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys  
chmod 0600 ~/.ssh/authorized_keys

Проверьте соединение без пароля:

ssh localhost

Если вход проходит без запроса пароля — SSH настроен корректно.

Установка Hadoop

  1. Скачайте архив Hadoop 3.2.1 (в примере используется официальное зеркало Apache):
su - hadoop  
wget https://downloads.apache.org/hadoop/common/hadoop-3.2.1/hadoop-3.2.1.tar.gz
  1. Распакуйте и переместите в /usr/local:
tar -xvzf hadoop-3.2.1.tar.gz
sudo mv hadoop-3.2.1 /usr/local/hadoop
sudo mkdir /usr/local/hadoop/logs
sudo chown -R hadoop:hadoop /usr/local/hadoop
  1. Настройте переменные окружения пользователя hadoop (прибавьте в ~/.bashrc):
nano ~/.bashrc

Добавьте:

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"

Сохраните и примените:

source ~/.bashrc

Конфигурация Hadoop (один узел)

Далее произведём минимальную настройку для работы всех компонентов на одной машине.

Определение Java в hadoop-env.sh

Найдите путь к javac и определите JAVA_HOME в конфигурации Hadoop:

which javac
readlink -f /usr/bin/javac
sudo nano $HADOOP_HOME/etc/hadoop/hadoop-env.sh

Добавьте (пример пути для OpenJDK 11):

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 
export HADOOP_CLASSPATH+=" $HADOOP_HOME/lib/*.jar"

Примечание: путь к JAVA_HOME может отличаться в зависимости от дистрибутива и версии JDK. Используйте вывод readlink для точного определения.

Дополнительно загрузите javax.activation-api, если этого требует ваша версия Hadoop/MapReduce:

cd /usr/local/hadoop/lib  
sudo wget https://jcenter.bintray.com/javax/activation/javax.activation-api/1.2.0/javax.activation-api-1.2.0.jar

Проверьте версию Hadoop:

hadoop version

Ожидаемый результат содержит строку “Hadoop 3.2.1” и путь /usr/local/hadoop.

core-site.xml — указание URI файловой системы

Отредактируйте $HADOOP_HOME/etc/hadoop/core-site.xml и укажите URI NameNode:

sudo nano $HADOOP_HOME/etc/hadoop/core-site.xml

Добавьте:


   
      fs.default.name
      hdfs://0.0.0.0:9000
      The default file system URI
   

Фактический адрес NameNode в продакшене должен быть IP или hostname управляющего узла.

hdfs-site.xml — директории для метаданных

Создайте каталоги для NameNode и DataNode и задайте права:

sudo mkdir -p /home/hadoop/hdfs/{namenode,datanode}  
sudo chown -R hadoop:hadoop /home/hadoop/hdfs

Отредактируйте $HADOOP_HOME/etc/hadoop/hdfs-site.xml:

sudo nano $HADOOP_HOME/etc/hadoop/hdfs-site.xml

Добавьте:


   
      dfs.replication
      1
   

   
      dfs.name.dir
      file:///home/hadoop/hdfs/namenode
   

   
      dfs.data.dir
      file:///home/hadoop/hdfs/datanode
   

Обратите внимание: dfs.replication=1 подходит для однозвенной среды. В кластере с несколькими узлами значение должно быть ≥2.

mapred-site.xml — MapReduce через YARN

sudo nano $HADOOP_HOME/etc/hadoop/mapred-site.xml

Добавьте:


   
      mapreduce.framework.name
      yarn
   

yarn-site.xml — настройки YARN

sudo nano $HADOOP_HOME/etc/hadoop/yarn-site.xml

Добавьте:


   
      yarn.nodemanager.aux-services
      mapreduce_shuffle
   

Форматирование NameNode

Перед первым запуском нужно отформатировать HDFS NameNode:

su - hadoop  
hdfs namenode -format

В выводе вы увидите сообщения о создании FSImage и успешном форматировании каталога /home/hadoop/hdfs/namenode.

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

Запустите DFS (NameNode, DataNode и SecondaryNameNode):

start-dfs.sh

Запустите YARN (ResourceManager и NodeManager):

start-yarn.sh

Проверьте запущенные Java-процессы Hadoop:

jps

Ожидаемые процессы: NameNode, DataNode, SecondaryNameNode, ResourceManager, NodeManager и Jps.

Веб-интерфейсы

Интерфейс Hadoop NameNode

Страница DataNode с метриками

Интерфейс ResourceManager YARN

Замените your-server-ip на IP вашей машины или используйте localhost для локальной проверки.

Проверочные команды (cheat sheet)

  • Проверка версий:
hadoop version
java -version
  • Проверка HDFS:
hdfs dfs -ls /
hdfs dfs -mkdir /user/hadoop
hdfs dfs -put somefile /user/hadoop/
hdfs dfs -cat /user/hadoop/somefile
  • Остановка и перезапуск:
stop-yarn.sh
stop-dfs.sh
start-dfs.sh
start-yarn.sh

Чеклист приёмки (KPI простая проверка)

  • java -version возвращает корректную версию (OpenJDK 11+).
  • hadoop version показывает Hadoop 3.2.1.
  • ssh localhost выполняется без пароля для пользователя hadoop.
  • jps демонстрирует NameNode, DataNode, SecondaryNameNode, ResourceManager и NodeManager.
  • NameNode UI доступен на порту 9870.
  • YARN UI доступен на порту 8088.
  • Можно записать и прочитать файл через HDFS (hdfs dfs -put / -cat).

Критерии приёмки: все пункты чеклиста должны быть отмечены.

Советы по безопасности и эксплуатации

  • Ограничьте доступ к веб-интерфейсам (9870, 9864, 8088) через брандмауэр (ufw/iptables) или проксируйте за аутентификацией.
  • Для production используйте отдельные сервисные учётные записи с минимальными правами.
  • Настройте логирование, ротацию логов и мониторинг (Prometheus/Grafana или встроенные метрики).
  • В продакшене установите dfs.replication ≥2 и распределяйте DataNode на разные аппаратные узлы.
  • Обновляйте Java и Hadoop в тестовой среде перед применением в продакшене.

Миграция в многозвенный кластер — мини-методология

  1. Планирование инфраструктуры: выделите отдельные узлы для NameNode(s), ResourceManager, DataNode, ZooKeeper (если требуется).
  2. Настройте сетевую доступность и hostnames.
  3. Экспортируйте данные с однозвенного HDFS и скопируйте на новый кластер или настройте безопасную репликацию.
  4. Настройте dfs.replication и политики отказоустойчивости.
  5. Тестирование: запуск рабочих нагрузок, тесты отказа узлов.
  6. Переключение рабочих нагрузок на новый кластер поэтапно.

Когда этот подход не подходит (контрпримеры)

  • Если вам нужна высокая доступность: однозвенная схема не обеспечивает отказоустойчивости (нет реплик).
  • Если ожидается большая нагрузка и много параллельных задач — нужны распределённые ресурсы и настройка YARN на кластере.
  • Для чувствительных данных потребуется настройка шифрования и интеграция с системами управления доступом.

Роли и базовый чеклист для команды

Администратор:

  • Установить Java, создать пользователя hadoop, настроить SSH.
  • Настроить переменные окружения и корректные разрешения каталогов.

Разработчик:

  • Проверить запуск тестовой MapReduce-работы.
  • Убедиться в доступности HDFS и YARN UI.

Инженер по безопасности:

  • Закрыть неиспользуемые порты и настроить аутентификацию/авторизацию.

Быстрые тест-кейсы и приёмка

  1. Создание каталога в HDFS: hdfs dfs -mkdir /test — ожидаемый результат: директория создана.
  2. Загрузка файла и чтение: hdfs dfs -put /etc/hosts /test && hdfs dfs -cat /test/hosts — ожидаемый результат: содержимое файла соответствует локальному.
  3. Запуск sample MapReduce job (по желанию): hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output “dfs[a-z.]+” — проверить выполнение в YARN UI.

Часто задаваемые вопросы

В: Можно ли использовать этот однозвенный кластер в продакшене?

A: Нет. Однозвенный кластер подходит только для тестов и разработки. Для продакшена нужна многозвенная архитектура, репликация и HA (High Availability).

В: Что делать, если hdfs namenode -format выдаёт ошибку доступа?

A: Проверьте владельца и права на каталог, указанный в dfs.name.dir (обычно /home/hadoop/hdfs/namenode). Владельцем должен быть hadoop: sudo chown -R hadoop:hadoop /home/hadoop/hdfs.

В: Как изменить порт NameNode 9000 или веб-интерфейс 9870?

A: Порт FS URI меняется в core-site.xml (fs.default.name). Веб-порты настраиваются через соответствующие свойства в hdfs-site.xml и yarn-site.xml (см. документацию Hadoop).

В: Нужен ли отдельный ZooKeeper?

A: Для базовой однозвенной установки — нет. Для HA и некоторых приложений (например, HBase) ZooKeeper обязателен.

Риски и дополнительные замечания

  • Риск потери данных: при dfs.replication=1 данные потеряются при отказе диска. Решение: увеличить репликацию и использовать резервное копирование.
  • Безопасность: веб-интерфейсы по умолчанию не защищены; защитите их через VPN/файрвол или прокси с аутентификацией.

Заключение

Вы установили и запустили однозвенный кластер Hadoop на Ubuntu 20.04. Теперь можно изучать HDFS-команды, запускать примеры MapReduce и планировать переход в многозвенную архитектуру для боевого использования. Если нужны дополнительные инструкции (HA, Kerberos, настройка мониторинга или миграция), спросите — подготовлю последовательный план.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство