Як встановити Hadoop на UbuntuКроки завантаження та налаштування

⚡ Розумний підсумок

Встановлення Apache Hadoop на Ubuntu takes two passes: unpack the release under a dedicated system account with passwordless SSH, then edit four XML files before formatting HDFS and starting the single-node cluster.

  • 🔘 Необхідні умови: Біг Ubuntu машина та підтримувана Java Спочатку має бути встановлений комплект розробки.
  • ☑️ Виділений рахунок: Створіть групу hadoop_ та обліковий запис hduser_, щоб демони ніколи не запускалися від імені вашого користувача для входу.
  • SSH без пароля: Hadoop запускає демони через SSH, тому ssh localhost має завершитися успішно без запиту пароля.
  • 🧪 Чотири конфігураційні файли: hadoop-env.sh, core-site.xml, mapred-site.xml та hdfs-site.xml містять усі налаштування, які змінює цей посібник.
  • 🛠️ Перший старт: Відформатуйте NameNode один раз, потім запустіть start-dfs.sh та start-yarn.sh і підтвердіть п'ять демонів за допомогою jps.
  • 🧭 Дрейф версії: На знімках екрана використовується Hadoop 2.2.0, тому перевірте реліз, порти та назви властивостей порівняно з Hadoop 3.x.

Як встановити Hadoop на Ubuntu

У цьому посібнику ми покроково розглянемо процес встановлення Apache Hadoop на комп'ютер з Linux (Ubuntu). Це процес, що складається з двох частин: спочатку завантажте та встановіть реліз, а потім налаштуйте його.

Є дві передумови:

Примітки до версії Hadoop 3.x для цієї установки

Знімки екрана в цьому покроковому посібнику були зроблені на Hadoop 2.2.0. Послідовність кроків не змінилася в поточних випусках, але деякі назви та значення за замовчуванням були переміщені. Перевірте таблицю нижче, перш ніж дослівно копіювати будь-яку команду.

Налаштування або крок У цьому посібнику (Hadoop 2.x) Поточна версія Hadoop 3.x
Архів релізів hadoop-2.2.0.tar.gz hadoop-3.5.0.tar.gz, перший стабільний реліз 3.5, опублікований 2 квітня 2026 року
Властивість файлової системи за замовчуванням fs.default.name in the prose, fs.defaultFS у XML-файлі fs.defaultFS тільки; fs.default.name є застарілим
Властивість MapReduce mapreduce.jobtracker.address mapreduce.framework.name встановлений в yarnРоботаTracker більше не існує, як тільки YARN планує роботу
mapred-site.xml Скопійовано з mapred-site.xml.template Кораблі в etc/hadoop already, so the copy step is unnecessary
Порт веб-інтерфейсу NameNode 50070 9870
Java Java 6 або Java 7 Java 8 або Java 11

Все інше в цьому посібнику поводиться так само на Hadoop 3: виділений обліковий запис, ключ SSH, чотири файли конфігурації та сценарії запуску та зупинки.

Частина 1) Завантажте та встановіть Hadoop

Крок 1) Додайте користувача системи Hadoop

Додайте користувача системи Hadoop за допомогою команди нижче.

sudo addgroup hadoop_

Термінал виконує sudo addgroup hadoop_

sudo adduser --ingroup hadoop_ hduser_

Запит adduser збирає деталі для hduser_

Введіть пароль, ім'я та інші дані.

ПРИМІТКА: Існує ймовірність виникнення нижчезгаданої помилки в цьому процесі налаштування та встановлення.

«hduser немає у файлі sudoers. Про цей інцидент буде повідомлено».

Повідомлення про помилку: hduser не знаходиться у файлі sudoers

Цю помилку можна виправити, увійшовши в систему як користувач root.

Switching to the root user in the terminal

Виконайте команду

sudo adduser hduser_ sudo

Додавання hduser_ до групи sudo

Re-login as hduser_

Повторний вхід як hduser_

Крок 2) Налаштуйте SSH

Для керування вузлами в кластері Hadoop потребує доступу через SSH.

Спочатку змініть користувача, введіть таку команду

su - hduser_

Перемикання користувача за допомогою su - hduser_

Ця команда створить новий ключ.

ssh-keygen -t rsa -P ""

ssh-keygen генерує пару ключів RSA для hduser_

Enable SSH access to the local machine using this key.

cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

Appending id_rsa.pub to the authorized_keys file

Тепер перевірте налаштування SSH, підключившись до localhost як користувач 'hduser_'.

ssh localhost

Успішний сеанс локального хоста ssh для hduser_

Примітка: Якщо ви бачите помилку нижче у відповідь на «ssh localhost», можливо, SSH недоступний у цій системі.

Помилка відмови ssh localhost у з'єднанні

Щоб вирішити це –

Очистити SSH за допомогою,

sudo apt-get purge openssh-server

It is good practice to purge before starting the installation.

apt-get purge видалення існуючого пакета openssh-server

Встановіть SSH за допомогою команди-

sudo apt-get install openssh-server

apt-get встановлення пакета openssh-server

Крок 3) Завантажте Hadoop

Наступний крок – завантажити Hadoop з Сторінка випусків Apache Hadoop.

Apache Hadoop випускає сторінку зі списком доступних версій

Виберіть Стабільний

Список каталогів для стабільної версії Hadoop

Виберіть файл tar.gz (не файл, що закінчується на src).

Вибір бінарного файлу Hadoop tar.gz замість архіву src

Після завершення завантаження перейдіть до каталогу, що містить tar-файл.

Термінал відкрився в каталозі, що містить завантажений tar-файл

Enter,

sudo tar xzf hadoop-2.2.0.tar.gz

Extracting the Hadoop tarball with tar xzf

Тепер перейменуйте hadoop-2.2.0 на hadoop.

sudo mv hadoop-2.2.0 hadoop

Перейменування колишньогоtracПеренести папку hadoop-2.2.0 до Hadoop

Нарешті, передайте папку новому обліковому запису.

sudo chown -R hduser_:hadoop_ hadoop

chown призначає папку hadoop користувачам hduser_ та hadoop_

Substitute the version you actually downloaded for hadoop-2.2.0 у трьох командах вище.

Частина 2) Налаштуйте Hadoop

Крок 1) Змініть файл ~/.bashrc

Додайте наступні рядки в кінець файлу ~/.bashrc.

#Set HADOOP_HOME
export HADOOP_HOME=<Installation Directory of Hadoop>
#Set JAVA_HOME
export JAVA_HOME=<Installation Directory of Java>
# Add bin/ directory of Hadoop to PATH
export PATH=$PATH:$HADOOP_HOME/bin

Файл bashrc з доданими експортами HADOOP_HOME, JAVA_HOME та PATH

Тепер отримайте цю конфігурацію середовища за допомогою команди нижче.

. ~/.bashrc

Використовуємо bashrc для того, щоб нові змінні середовища набули чинності

Крок 2) Конфігурації, пов'язані з HDFS

Встановіть JAVA_HOME у файлі $HADOOP_HOME/etc/hadoop/hadoop-env.sh, як показано нижче.

Рядок JAVA_HOME за замовчуванням у файлі hadoop-env.sh

hadoop-env.sh opened in the editor showing the JAVA_HOME export

З

hadoop-env.sh JAVA_HOME замінено на справжній Java шлях встановлення

У файлі $HADOOP_HOME/etc/hadoop/core-site.xml є два параметри, які потрібно встановити:

1. «hadoop.tmp.dir» – Використовується для визначення каталогу, який Hadoop використовуватиме для зберігання своїх файлів даних.

2. «fs.defaultFS» – це параметр, що вказує на файлову систему за замовчуванням. Старіша назва для тієї ж властивості, «fs.default.name», є застарілою.

Щоб встановити ці параметри, відкрийте core-site.xml

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

Відкриття core-site.xml за допомогою gedit

Copy the lines below in between the <configuration></configuration> tags.

<property>
<name>hadoop.tmp.dir</name>
<value>/app/hadoop/tmp</value>
<description>Parent directory for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS </name>
<value>hdfs://localhost:54310</value>
<description>The name of the default file system. </description>
</property>

core-site.xml, що містить властивості hadoop.tmp.dir та fs.defaultFS

Navigate to the directory $HADOOP_HOME/etc/hadoop.

Термінал у каталозі конфігурації Hadoop etc/hadoop

Тепер створіть каталог, згаданий у core-site.xml.

sudo mkdir -p <Path of Directory used in above setting>

mkdir -p створення шляху hadoop.tmp.dir

Надайте дозволи для каталогу.

sudo chown -R hduser_:Hadoop_ <Path of Directory created in above step>

chown надає користувачеві hduser_ право власності на тимчасовий каталог

sudo chmod 750 <Path of Directory created in above step>

chmod 750 застосовано до тимчасового каталогу

Крок 3) Налаштування MapReduce

Перш ніж розпочати ці налаштування, давайте встановимо шлях HADOOP_HOME.

sudo gedit /etc/profile.d/hadoop.sh

І Enter

export HADOOP_HOME=/home/guru99/Downloads/Hadoop

Експорт скрипта профілю hadoop.sh HADOOP_HOME

Далі введіть

sudo chmod +x /etc/profile.d/hadoop.sh

chmod +x making the hadoop.sh profile script executable

Вийдіть з терміналу та перезапустіть його.

Введіть echo $HADOOP_HOME, щоб перевірити шлях.

echo $HADOOP_HOME виведення налаштованого шляху встановлення

Тепер скопіюйте файли

sudo cp $HADOOP_HOME/etc/hadoop/mapred-site.xml.template $HADOOP_HOME/etc/hadoop/mapred-site.xml

Копіювання шаблону mapred-site.xml до mapred-site.xml

Відкрийте файл mapred-site.xml

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

Відкриття файлу mapred-site.xml за допомогою gedit

Add the settings below in between the <configuration> and </configuration> tags.

<property>
<name>mapreduce.jobtracker.address</name>
<value>localhost:54311</value>
<description>MapReduce job tracker runs at this host and port.
</description>
</property>

mapred-site.xml містить завдання MapReduce tracвласність кер

Відкрийте файл $HADOOP_HOME/etc/hadoop/hdfs-site.xml, як показано нижче,

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

Відкриття hdfs-site.xml за допомогою gedit

Додайте наведені нижче налаштування між і теги.

<property>
<name>dfs.replication</name>
<value>1</value>
<description>Default block replication.</description>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hduser_/hdfs</value>
</property>

hdfs-site.xml, що містить властивості dfs.replication та dfs.datanode.data.dir

Створіть каталог, зазначений у налаштуваннях вище.

sudo mkdir -p <Path of Directory used in above setting>
sudo mkdir -p /home/hduser_/hdfs

mkdir -p створення каталогу даних DataNode

Потім надайте право власності та дозволи на нього.

sudo chown -R hduser_:hadoop_ <Path of Directory created in above step>
sudo chown -R hduser_:hadoop_ /home/hduser_/hdfs

chown надає hduser_ право власності на каталог даних DataNode

sudo chmod 750 <Path of Directory created in above step>
sudo chmod 750 /home/hduser_/hdfs

chmod 750 застосовано до каталогу даних DataNode

Крок 4) Форматування HDFS

Before we start Hadoop for the first time, format HDFS using the command below.

$HADOOP_HOME/bin/hdfs namenode -format

hdfs namenode -format вивід форматує нову файлову систему

Крок 5) Запустіть одновузловий кластер Hadoop

Запустіть одновузловий кластер Hadoop за допомогою команди нижче.

$HADOOP_HOME/sbin/start-dfs.sh

Вивід вищевказаної команди показано нижче.

Вивід start-dfs.sh для запуску NameNode та DataNode

Потім запустіть демони YARN.

$HADOOP_HOME/sbin/start-yarn.sh

Вивід start-yarn.sh для запуску ResourceManager та NodeManager

За допомогою інструменту «jps» перевірте, чи всі процеси, пов’язані з Hadoop, запущено.

Вивід JPS зі списком п'яти запущених демонів Hadoop

Якщо Hadoop успішно запустився, у виводі jps має бути перераховано NameNode, NodeManager, ResourceManager, SecondaryNameNode та DataNode.

Крок 6) Зупинкаping Hadoop

Shut the cluster down in the reverse order.

$HADOOP_HOME/sbin/stop-dfs.sh

Вивід stop-dfs.sh, що завершує роботу демонів HDFS

$HADOOP_HOME/sbin/stop-yarn.sh

stop-yarn.sh output shutting down the YARN daemons

Як перевірити, чи працює Hadoop, та виправити поширені помилки

The jps output confirms that processes started, but not that the cluster is usable. Four extra checks settle that question.

  • Відкрийте веб-інтерфейс NameNode за адресою http://localhost:9870 (порт 50070 на Hadoop 2.x) та підтвердьте зведені звіти про один активний вузол.
  • Відкрийте інтерфейс ResourceManager за адресою http://localhost:8088 щоб підтвердити, що YARN прийняв NodeManager.
  • прогін hdfs dfsadmin -report для ємності, активних вузлів даних та будь-яких недореплікованих блоків.
  • Напишіть щось: hdfs dfs -mkdir /test подальшою hdfs dfs -ls / доводить, що простір імен приймає зміни.

Більшість невдач, що трапляються вперше, потрапляють в одну з п'яти категорій.

симптом Викликати виправляти
JAVA_HOME не встановлено та не знайдено Змінна експортується у .bashrc, але не у hadoop-env.sh Також встановіть абсолютний шлях JDK всередині hadoop-env.sh
Відмовлено в доступі (відкритий ключ, пароль) на локальному хості ssh authorized_keys відсутній або занадто дозвільний Знову додайте id_rsa.pub, а потім виконайте chmod 600 на ~/.ssh/authorized_keys
З'єднання відмовлено на порту 22 Сервер openssh не встановлено або не працює Встановіть openssh-сервер та запустіть службу ssh
Вузла даних відсутній у JPS після переформатування Cluster Невідповідність ідентифікаторів між відформатованим NameNode та старим каталогом DataNode Очистіть папку dfs.datanode.data.dir, а потім ще раз відформатуйте її
start-dfs.sh: команду не знайдено HADOOP_HOME та PATH ніколи не використовувалися в поточній оболонці Запустіть .~/.bashrc або відкрийте новий термінал

Поширені запитання

Будь-яка активно підтримувана Ubuntu Працює реліз LTS, включаючи версії 22.04 та 24.04. Hadoop 3.x зібрано та протестовано на Java 8 і Java 11, тому встановіть один із цих JDK; новіші JDK не повністю підтримуються, а старіші Java 7 збірок більше не застосовуються.

Скрипти start-dfs.sh та start-yarn.sh запускають кожен демон через SSH, навіть якщо єдиним хостом є localhost. Без ключа без пароля скрипти зависають на запиті пароля, і демон не запускається.

hadoop.tmp.dir – це базовий шлях для тимчасових сховищ, з якого Hadoop отримує інші тимчасові розташування. dfs.datanode.data.dir – це місце, де DataNode зберігає реальні блокові файли. Другий шлях слід вказувати на постійне сховище, а не на /tmp, інакше блоки зникатимуть після перезавантаження.

Відформатуйте один раз, перед першим запуском. Повторний запуск форматування стирає простір імен та залишає існуючі каталоги DataNode зі старішим ідентифікатором кластера, через що DataNode потім відмовляється реєструватися та зникає з виводу jps.

Так, хоча Windows потрібні рідні бінарні файли winutils.exe та hadoop.dll для відповідного випуску. Більшість людей уникають цього, запускаючи ті самі Ubuntu кроки всередині WSL 2, який поводиться як звичайний хост Linux.

Для навчання, так: попередньо створений образ пропускає створення користувачів, SSH-ключі та редагування XML. Встановлення вручну все одно варто виконати один раз, оскільки це показує, який файл контролює кожен параметр, коли реальний кластер поводиться неправильно.

Моделі машинного навчання на основі метрик NameNode та YARN прогнозують обмеження ємності, виявляють перекіси у завданнях та завчасно позначають диски, що вийшли з ладу. Кілька платформ також автоматично рекомендують розміри контейнерів, що замінює значну частину ручного налаштування цієї конфігурації, коли це було необхідно.

Copilot швидко створює блоки властивостей core-site.xml та hdfs-site.xml і запам'ятовує точне написання. Перевіряйте кожну пропозицію з документацією для вашого релізу, оскільки він часто пропонує властивості, що застаріли, такі як mapreduce.job.tracker.address або fs.default.name.

Підсумуйте цей пост за допомогою: