Как установить Apache Hadoop на Ubuntu 22.04
Это руководство существует для этих версий ОС
- Ubuntu 22.04 (Jammy Jellyfish)
- Ubuntu 20.04 (Focal Fossa)
На этой странице
- Предпосылки
- Установка Java OpenJDK
- Настройка аутентификации пользователя и аутентификации SSH без пароля
- Скачивание Hadoop
- Настройка переменных среды Hadoop
- Настройка кластера Apache Hadoop: псевдораспределенный режим
- Настройка NameNode и DataNode
- Менеджер по пряже
Apache Hadoop — это платформа с открытым исходным кодом для обработки и хранения больших данных. В современных отраслях Hadoop стал стандартной структурой для больших данных. Hadoop предназначен для работы в распределенных системах с сотнями или даже тысячами кластеризованных компьютеров или выделенных серверов. Имея это в виду, Hadoop может обрабатывать большие наборы данных с большим объемом и сложностью как для структурированных, так и для неструктурированных данных.
Каждое развертывание Hadoop содержит следующие компоненты:
- Hadoop Common: общие утилиты, поддерживающие другие модули Hadoop.
- Распределенная файловая система Hadoop (HDFS): распределенная файловая система, обеспечивающая высокоскоростной доступ к данным приложений.
- Hadoop YARN: платформа для планирования заданий и управления ресурсами кластера.
- Hadoop MapReduce: система на основе YARN для параллельной обработки больших наборов данных.
В этом руководстве мы установим последнюю версию Apache Hadoop на сервер Ubuntu 22.04. Hadoop устанавливается на сервер с одним узлом, и мы создаем псевдораспределенный режим развертывания Hadoop.
Предпосылки
Для завершения этого руководства вам потребуются следующие требования:
- Сервер Ubuntu 22.04. В этом примере используется сервер Ubuntu с именем хоста hadoop server и IP-адресом 192.168.5.100.
- Пользователь без полномочий root с правами администратора sudo/root.
Установка Java OpenJDK
Hadoop — это огромный проект под эгидой Apache Software Foundation, в основном написанный на Java. На момент написания этой статьи последняя версия hadoop — v3.3,4, полностью совместимая с Java v11.
Java OpenJDK 11 по умолчанию доступен в репозитории Ubuntu, и вы установите его через APT.
Для начала запустите приведенную ниже команду apt, чтобы обновить и обновить списки/репозитории пакетов в вашей системе Ubuntu.
sudo apt update
Теперь установите Java OpenJDK 11 с помощью приведенной ниже команды apt. В репозитории Ubuntu 22.04 пакет default-jdk ссылается на Java OpenJDK v11.
sudo apt install default-jdk
При появлении запроса введите y для подтверждения и нажмите ENTER для продолжения. И начнется установка Java OpenJDK.
После установки Java выполните приведенную ниже команду, чтобы проверить версию Java. Вы должны установить Java OpenJDK 11 в своей системе Ubuntu.
java -version
Теперь, когда Java OpebnJDK установлен, вы затем настроите нового пользователя с SSH-аутентификацией без пароля, который будет использоваться для запуска процессов и служб Hadoop.
Настройка аутентификации пользователя и SSH без пароля
Apache Hadoop требовал, чтобы в системе работала служба SSH. Это будет использоваться сценариями Hadoop для управления удаленным демоном Hadoop на удаленном сервере. На этом шаге вы создадите нового пользователя, который будет использоваться для запуска процессов и служб Hadoop, а затем настроите аутентификацию SSH без пароля.
Если в вашей системе не установлен SSH, выполните приведенную ниже команду apt, чтобы установить SSH. Пакет pdsh представляет собой многопоточный клиент удаленной оболочки, позволяющий выполнять команды на нескольких хостах в параллельном режиме.
sudo apt install openssh-server openssh-client pdsh
Теперь запустите приведенную ниже команду, чтобы создать нового пользователя Hadoop и установить пароль для пользователя Hadoop.
sudo useradd -m -s /bin/bash hadoop
sudo passwd hadoopВведите новый пароль для пользователя hadoop и повторите пароль.
Затем добавьте пользователя hadoop в группу sudo с помощью приведенной ниже команды usermod. Это позволяет пользователю hadoop выполнять команду sudo.
sudo usermod -aG sudo hadoop
Теперь, когда пользователь hadoop создан, войдите в систему под пользователем hadoop с помощью приведенной ниже команды.
su - hadoop
После входа в систему ваше приглашение станет таким: \[email \.
Затем выполните приведенную ниже команду, чтобы сгенерировать открытый и закрытый ключ SSH. Когда будет предложено установить пароль для ключа, нажмите ENTER, чтобы пропустить.
ssh-keygen -t rsa
Теперь ключ SSH создается в каталоге ~/.ssh. Файл id_rsa.pub — это открытый ключ SSH, а файл id_rsa — закрытый ключ.
Вы можете проверить сгенерированный ключ SSH с помощью следующей команды.
ls ~/.ssh/
Затем выполните приведенную ниже команду, чтобы скопировать открытый ключ SSH id_rsa.pub в файл authorized_keys и изменить разрешение по умолчанию на 600.
В ssh в файле authorized_keys\ хранится открытый ключ ssh, который может состоять из нескольких открытых ключей. Любой, у кого открытый ключ хранится в файле authorized_keys и правильный закрытый ключ сможет подключаться к серверу как пользователь hadoop без пароля.
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keysПосле завершения настройки SSH без пароля вы можете проверить это, подключившись к локальному компьютеру с помощью команды ssh ниже.
ssh localhost
Введите «да» для подтверждения и добавьте отпечаток пальца SSH, и вы будете подключены к серверу без аутентификации по паролю.
Теперь, когда пользователь hadoop создан и настроена аутентификация SSH без пароля, вы приступите к установке Hadoop, загрузив двоичный пакет Hadoop.
Скачивание Hadoop
После создания нового пользователя и настройки аутентификации SSH без пароля вы можете загрузить двоичный пакет Apache Hadoop и настроить для него каталог установки. В этом примере вы загрузите hadoop v3.3.4, а целевым каталогом установки будет /usr/local/hadoop.
Запустите приведенную ниже команду wget, чтобы загрузить двоичный пакет Apache Hadoop в текущий рабочий каталог. Вы должны получить файл hadoop-3.3.4.tar.gz в вашем текущем рабочем каталоге.
wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
Затем извлеките пакет Apache Hadoop hadoop-3.3.4.tar.gz с помощью приведенной ниже команды tar. Затем переместите извлеченный каталог в /usr/local/hadoop.
tar -xvzf hadoop-3.3.4.tar.gz
sudo mv hadoop-3.3.4 /usr/local/hadoopНаконец, измените владельца каталога установки Hadoop /usr/local/hadoop на пользователя hadoop и группу hadoop.
sudo chown -R hadoop:hadoop /usr/local/hadoop
На этом шаге вы загрузили двоичный пакет Apache Hadoop и настроили каталог установки Hadoop. Имея это в виду, теперь вы можете приступить к настройке установки Hadoop.
Настройка переменных среды Hadoop
Откройте файл конфигурации ~/.bashrc с помощью приведенной ниже команды редактора nano.
nano ~/.bashrc
Добавьте в файл следующие строки. Обязательно поместите следующие строки в конец строки.
# Hadoop environment variables
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
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 HADOOP_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"Сохраните файл и выйдите из редактора, когда закончите.
Затем выполните приведенную ниже команду, чтобы применить новые изменения в файле ~/.bashrc.
source ~/.bashrc
После выполнения команды будут применены новые переменные среды. Вы можете проверить, проверив каждую переменную среды с помощью приведенной ниже команды. И вы должны получить вывод каждой переменной среды.
echo $JAVA_HOME
echo $HADOOP_HOME
echo $HADOOP_OPTSДалее вы также настроите переменную среды JAVA_HOME в сценарии hadoop-env.sh.
Откройте файл hadoop-env.sh с помощью следующей команды редактора nano. Файл hadoop-env.sh доступен в каталоге $HADOOP_HOME, который относится к каталогу установки Hadoop /usr/local/hadoop.
nano $HADOOP_HOME/etc/hadoop/hadoop-env.sh
Раскомментируйте строку среды JAVA_HOME и измените значение на каталог установки Java OpenJDK /usr/lib/jvm/java-11-openjdk-amd64.
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
Сохраните файл и выйдите из редактора, когда закончите.
С настройкой переменных среды выполните приведенную ниже команду, чтобы проверить версию Hadoop в вашей системе. Вы должны увидеть, что Apache Hadoop 3.3.4 установлен в вашей системе.
hadoop version
На этом этапе вы готовы установить и настроить кластер Hadoop, который можно развернуть в нескольких режимах.
Настройка кластера Apache Hadoop: псевдораспределенный режим
В Hadoop вы можете создать кластер в трех разных режимах:
- Локальный режим (автономный) — установка Hadoop по умолчанию, которая запускается как отдельный процесс Java и нераспределенный режим. Благодаря этому вы можете легко отлаживать процесс Hadoop.
- Псевдораспределенный режим. Позволяет запускать кластер Hadoop в распределенном режиме даже с одним узлом/сервером. В этом режиме процессы Hadoop будут выполняться в отдельных процессах Java.
- Полностью распределенный режим – крупное развертывание Hadoop с несколькими или даже тысячами узлов/серверов. Если вы хотите запустить Hadoop в производственной среде, вам следует использовать Hadoop в полностью распределенном режиме.
В этом примере вы настроите кластер Apache Hadoop с псевдораспределенным режимом на одном сервере Ubuntu. Для этого вы внесете изменения в некоторые конфигурации Hadoop:
- core-site.xml — он будет использоваться для определения NameNode для кластера Hadoop.
- hdfs-site.xml — эта конфигурация будет использована для определения DataNode в кластере hadoop.
- mapred-site.xml — конфигурация MapReduce для кластера Hadoop.
- yarn-site.xml — конфигурация ResourceManager и NodeManager для кластера Hadoop.
Настройка NameNode и DataNode
Сначала вы настроите NameNode и DataNode для кластера hadoop.
Откройте файл $HADOOP_HOME/etc/hadoop/core-site.xml с помощью следующего редактора nano.
sudo nano $HADOOP_HOME/etc/hadoop/core-site.xml
Добавьте следующие строки в файл. Обязательно измените IP-адрес NameNode или замените его на 0.0.0.0, чтобы NameNode работал на всех интерфейсах и IP-адресах.
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.5.100:9000</value>
</property>
</configuration>Сохраните файл и выйдите из редактора, когда закончите.
Затем выполните следующую команду, чтобы создать новые каталоги, которые будут использоваться для DataNode в кластере hadoop. Затем измените владельца каталогов DataNode на пользователя hadoop.
sudo mkdir -p /home/hadoop/hdfs/{namenode,datanode}
sudo chown -R hadoop:hadoop /home/hadoop/hdfsПосле этого откройте файл $HADOOP_HOME/etc/hadoop/hdfs-site.xml с помощью приведенной ниже команды редактора nano.
sudo nano $HADOOP_HOME/etc/hadoop/hdfs-site.xml
Добавьте следующую конфигурацию в файл. В этом примере вы настроите кластер Hadoop на одном узле, поэтому вы должны изменить значение dfs.replication на 1. Кроме того, вы должны указать каталог, который будет использоваться для DataNode.
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>file:///home/hadoop/hdfs/namenode</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>file:///home/hadoop/hdfs/datanode</value>
</property>
</configuration>Сохраните файл и выйдите из редактора, когда закончите.
Настроив NameNode и DataNode, выполните приведенную ниже команду, чтобы отформатировать файловую систему hadoop.
hdfs namenode -format
Вы получите такой вывод:
Затем запустите NameNode и DataNode с помощью следующей команды. NameNode будет работать на IP-адресе сервера, указанном в файле core-site.xml.
start-dfs.sh
Вы увидите такой вывод:
Теперь, когда NameNode и DataNode запущены, вы проверите оба процесса через веб-интерфейс.
В веб-интерфейсе Hadoop NameNode используется порт 9870. Итак, откройте веб-браузер и посетите IP-адрес сервера, за которым следует порт 9870 (например, http://192.168.5.100:9870/).
Теперь вы должны получить страницу, как показано на следующем снимке экрана — NameNode в настоящее время активен.
Теперь щелкните меню Datanodes, и вы должны получить текущий DataNode, активный в кластере hadoop. Следующий снимок экрана подтверждает, что DataNode работает на порту 9864 в кластере Hadoop.
Нажмите на Http-адрес DataNode, и вы должны открыть новую страницу с подробной информацией о DataNode. Следующий снимок экрана подтверждает, что DataNode работает с каталогом тома /home/hadoop/hdfs/datanode.
Запустив NameNode и DataNode, вы затем настроите и запустите MapReduce в диспетчере Yarn (Еще один ResourceManager и NodeManager).
Менеджер пряжи
Чтобы запустить MapReduce на Yarn в псевдораспределенном режиме, вам нужно внести несколько изменений в файлы конфигурации.
Откройте файл $HADOOP_HOME/etc/hadoop/mapred-site.xml с помощью следующей команды редактора nano.
sudo nano $HADOOP_HOME/etc/hadoop/mapred-site.xml
Добавьте следующие строки в файл. Обязательно измените mapreduce.framework.name на yarn.
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
</property>
</configuration>Сохраните файл и выйдите из редактора, когда закончите.
Затем откройте конфигурацию Yarn $HADOOP_HOME/etc/hadoop/yarn-site.xml с помощью следующей команды редактора nanoe.
sudo nano $HADOOP_HOME/etc/hadoop/yarn-site.xml
Измените конфигурацию по умолчанию со следующими настройками.
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME</value>
</property>
</configuration>Сохраните файл и выйдите из редактора, когда закончите.
Теперь выполните приведенную ниже команду, чтобы запустить демоны Yarn. И вы должны увидеть, что и ResourceManager, и NodeManager запускаются.
start-yarn.sh
ResourceManager должен работать в порту по умолчанию 8088. Вернитесь в свой веб-браузер и посетите IP-адрес сервера, за которым следует порт ResourceManager 8088 (например: http://192.168.5.100:8088/).
Вы должны увидеть веб-интерфейс Hadoop ResourceManager. Отсюда вы можете отслеживать все запущенные процессы внутри кластера Hadoop.
Щелкните меню «Узлы», и вы должны получить текущий работающий узел в кластере Hadoop.
Теперь кластер Hadoop работает в псевдораспределенном режиме. Это означает, что каждый процесс Hadoop выполняется как отдельный процесс на одном узле сервера Ubuntu 22.04, который включает NameNode, DataNode, MapReduce и Yarn.
Заключение
В этом руководстве вы установили Apache Hadoop на один сервер Ubuntu 22.04. Вы установили Hadoop с включенным псевдораспределенным режимом, что означает, что каждый компонент Hadoop работает как отдельный процесс Java в системе. В этом руководстве вы также узнали, как настроить Java, настроить переменные системной среды и настроить аутентификацию SSH без пароля с помощью открытого и закрытого ключа SSH.
Этот тип развертывания Hadoop, псевдораспределенный режим, рекомендуется только для тестирования. Если вам нужна распределенная система, которая может обрабатывать средние или большие наборы данных, вы можете развернуть Hadoop в кластерном режиме, который требует больше вычислительных систем и обеспечивает высокую доступность для вашего приложения.