Установка Hadoop на Ubuntu: пошаговая инструкция для кластера | AdminWiki

Полное руководство по установке Hadoop на Ubuntu: от настройки до запуска кластера

18 декабря 2025 8 мин. чтения #big data #hadoop #hdfs #ubuntu #yarn #настройка кластера #установка hadoop

Представь, что тебе нужно развернуть распределенную систему для обработки больших данных, но документация кажется запутанной, а примеры не работают. Давай разберем установку Hadoop на Ubuntu шаг за шагом — как настоящий DevOps инженер. Я покажу не только базовую установку, но и тонкости конфигурации, которые обычно умалчивают в туториалах.

Подготовка системы перед установкой Hadoop

Перед тем как начать установку Hadoop на Ubuntu, нужно подготовить окружение. Работаем с Ubuntu 20.04/22.04 LTS — это наиболее стабильные версии для production-сред.

1. Обновление системы и установка Java

Hadoop требует Java 8 или 11. Я рекомендую OpenJDK 11 — она стабильнее и лучше поддерживается.

bash
# Обновляем пакеты
sudo apt update && sudo apt upgrade -y

# Устанавливаем OpenJDK 11
sudo apt install openjdk-11-jdk -y

# Проверяем установку
java -version
# Должно быть что-то вроде: openjdk version "11.0.22" 2024-01-16
Важно: Убедись, что переменная JAVA_HOME настроена корректно. Это критично для работы Hadoop.

2. Настройка SSH для беспарольного доступа

Hadoop использует SSH для управления узлами кластера. Нам нужно настроить доступ без пароля на localhost (для standalone и pseudo-distributed режимов).

bash
# Устанавливаем SSH сервер и клиент
sudo apt install openssh-server openssh-client -y

# Генерируем SSH ключи (если еще нет)
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

# Копируем публичный ключ в authorized_keys
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

# Меняем права доступа для безопасности
chmod 0600 ~/.ssh/authorized_keys

# Проверяем подключение к localhost без пароля
ssh localhost
# Если запрашивает пароль — что-то пошло не так

Установка и настройка Hadoop на Ubuntu

Теперь перейдем к основной части — установке Hadoop. Мы будем использовать Apache Hadoop 3.3.6 (последняя стабильная версия на момент написания).

3. Загрузка и распаковка Hadoop

bash
# Создаем директорию для Hadoop
sudo mkdir -p /opt/hadoop
sudo chown $USER:$USER /opt/hadoop

# Скачиваем Hadoop (или загрузи заранее если медленный интернет)
cd /opt/hadoop
wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz

# Распаковываем
tar -xzf hadoop-3.3.6.tar.gz

# Создаем симлинк для удобства
ln -s hadoop-3.3.6 current

# Добавляем в PATH
echo 'export HADOOP_HOME=/opt/hadoop/current' >> ~/.bashrc
echo 'export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin' >> ~/.bashrc
source ~/.bashrc

4. Конфигурация Hadoop: основные файлы

Это самая важная часть. Неправильная конфигурация — основная причина проблем при установке Hadoop на Ubuntu.

Внимание: Все пути должны быть абсолютными. Относительные пути — частая ошибка новичков.

4.1. hadoop-env.sh — настройка окружения

bash
cd $HADOOP_HOME/etc/hadoop

# Редактируем файл
nano hadoop-env.sh

# Находим и раскомментируем/добавляем:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export HADOOP_HOME=/opt/hadoop/current
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_LOG_DIR=$HADOOP_HOME/logs
export HADOOP_PID_DIR=$HADOOP_HOME/pids

4.2. core-site.xml — основные настройки

xml
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
        <description>URI файловой системы по умолчанию</description>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/hadoop/tmp</value>
        <description>Временная директория для Hadoop</description>
    </property>
</configuration>

4.3. hdfs-site.xml — конфигурация HDFS

xml
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
        <description>Фактор репликации (для standalone режима = 1)</description>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:///opt/hadoop/hdfs/namenode</value>
        <description>Директория метаданных NameNode</description>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:///opt/hadoop/hdfs/datanode</value>
        <description>Директория данных DataNode</description>
    </property>
</configuration>

4.4. mapred-site.xml и yarn-site.xml — для YARN

xml
<!-- mapred-site.xml -->
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

<!-- yarn-site.xml -->
<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>localhost</value>
    </property>
</configuration>

5. Создание необходимых директорий

bash
# Создаем все необходимые директории
mkdir -p /opt/hadoop/tmp
mkdir -p /opt/hadoop/hdfs/namenode
mkdir -p /opt/hadoop/hdfs/datanode
mkdir -p /opt/hadoop/logs
mkdir -p /opt/hadoop/pids

# Меняем владельца (на всякий случай)
sudo chown -R $USER:$USER /opt/hadoop

# Форматируем HDFS (ВАЖНО: только при первой установке!)
hdfs namenode -format
Осторожно: Команда hdfs namenode -format удаляет все данные HDFS! Выполняй только при первоначальной установке.

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

6. Запуск демонов Hadoop

Есть два способа запуска: через отдельные скрипты или через start-all.sh (устаревший, но простой для тестирования).

bash
# Способ 1: Запуск всех компонентов (для тестирования)
start-all.sh

# Способ 2: Запуск по отдельности (рекомендуется для production)
# Запускаем HDFS
start-dfs.sh

# Запускаем YARN
start-yarn.sh

# Проверяем запущенные процессы
jps
# Должны увидеть:
# - NameNode
# - DataNode
# - ResourceManager
# - NodeManager
# - SecondaryNameNode (опционально)

7. Проверка работоспособности

bash
# Проверяем HDFS через браузер
# Открой: http://localhost:9870

# Проверяем YARN ResourceManager
# Открой: http://localhost:8088

# Проверяем через командную строку
hdfs dfsadmin -report
# Должен показать информацию о DataNode

# Создаем тестовую директорию в HDFS
hdfs dfs -mkdir /test
hdfs dfs -ls /
# Должна появиться директория /test

# Копируем локальный файл в HDFS
echo "Hello Hadoop on Ubuntu" > test.txt
hdfs dfs -put test.txt /test/
hdfs dfs -cat /test/test.txt
# Должно показать "Hello Hadoop on Ubuntu"

8. Запуск тестового MapReduce задания

Давай убедимся, что не только HDFS, но и вычислительный слой работает корректно.

bash
# Создаем входные данные
hdfs dfs -mkdir /input
echo "Hadoop Ubuntu test" > file1.txt
echo "Ubuntu Hadoop installation" > file2.txt
hdfs dfs -put file1.txt file2.txt /input/

# Запускаем пример WordCount
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar \
  wordcount /input /output

# Смотрим результат
hdfs dfs -cat /output/part-r-00000
# Должны получить подсчет слов:
# Hadoop 2
# Ubuntu 2
# test 1
# installation 1

Типичные проблемы и их решение

Таблица распространенных ошибок при установке Hadoop

Проблема Причина Решение
SSH запрашивает пароль Неправильные права на .ssh директории chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
NameNode не запускается Порт 9000 занят или неправильные пути Проверь netstat -tulpn | grep :9000 и пути в core-site.xml
DataNode не подключается к NameNode Разные clusterID в VERSION файлах Удали /opt/hadoop/hdfs и переформатируй HDFS
YARN не запускает задачи Нет доступа к временным директориям Проверь права на /tmp/hadoop-$USER и в yarn-site.xml

Настройка multi-node кластера (опционально)

Если тебе нужен полноценный кластер, вот основные отличия от standalone установки:

  • На всех узлах должны быть одинаковые версии Hadoop и Java
  • Настрой SSH без пароля между всеми узлами (master → slaves и slaves → master)
  • В файле workers укажи hostnames всех DataNode/NodeManager
  • В core-site.xml укажи hostname мастера вместо localhost
  • dfs.replication установи в 3 (для отказоустойчивости)
bash
# Пример конфигурации для multi-node
# Файл: $HADOOP_HOME/etc/hadoop/workers
datanode1
datanode2
datanode3

# В core-site.xml на всех узлах
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://master-node:9000</value>
</property>

Автозапуск Hadoop как systemd сервис

Для production-среды лучше настроить автозапуск через systemd.

bash
# Создаем сервисный файл для HDFS
sudo nano /etc/systemd/system/hdfs.service

# Добавляем конфигурацию:
[Unit]
Description=Hadoop HDFS
After=network.target

[Service]
Type=forking
User=hadoop
Group=hadoop
ExecStart=/opt/hadoop/current/sbin/start-dfs.sh
ExecStop=/opt/hadoop/current/sbin/stop-dfs.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target

# Аналогично создаем yarn.service
# Активируем и запускаем
sudo systemctl daemon-reload
sudo systemctl enable hdfs yarn
sudo systemctl start hdfs

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

Какая версия Ubuntu лучше для Hadoop?

Ubuntu 20.04 LTS или 22.04 LTS. LTS-версии имеют длительную поддержку и стабильные пакеты. Избегай не-LTS релизов для production.

Можно ли установить Hadoop через apt?

Теоретически да (пакет hadoop), но версии в репозиториях часто устаревшие. Ручная установка дает полный контроль над версией и конфигурацией.

Сколько RAM нужно для Hadoop на Ubuntu?

Минимум 4GB для standalone режима. Для pseudo-distributed — 8GB. Production кластеры начинаются от 16GB на узел.

Как обновить Hadoop без потери данных?

1. Останови кластер. 2. Сделай бэкап HDFS метаданных. 3. Установи новую версию. 4. Перенеси конфиги. 5. Запусти с опцией -upgrade.

Hadoop vs Spark — что установить?

Hadoop — это основа (HDFS + YARN). Spark работает поверх Hadoop. Сначала установи Hadoop, потом Spark для ускоренной обработки.

Профессиональный совет: После успешной установки Hadoop на Ubuntu, настрой мониторинг через Prometheus + Grafana. Экспортеры для Hadoop есть в Apache Hadoop GitHub. Это поможет отслеживать здоровье кластера в реальном времени.

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

Следующие шаги после установки: настройка безопасности (Kerberos), оптимизация производительности под твои задачи, и возможно — переход на Kubernetes (Hadoop 3.3+ поддерживает запуск в контейнерах).

Поделиться:
Сохранить гайд? В закладки браузера