Введение
Hadoop — это бесплатная программная среда с открытым исходным кодом на основе Java, используемая для хранения и обработки больших наборов данных в кластерах машин. Он использует HDFS для хранения своих данных и обработки их с помощью MapReduce.
Hadoop — это экосистема инструментов для обработки больших данных, используемых в основном для интеллектуального анализа данных и машинного обучения.
Apache Hadoop 3.3 содержит значительные улучшения и множество исправлений ошибок по сравнению с предыдущими версиями. Он состоит из четырех основных компонентов, таких как Hadoop Common, HDFS, YARN и MapReduce.
В этом руководстве рассказывается, как установить и настроить Apache Hadoop на Ubuntu 20.04 LTS Focal Fossa.
Если вы хотите установить Hadoop на удаленный сервер, продолжайте чтение, в противном случае пропустите первый абзац «Подключение к серверу» и читайте следующий.
Подключение к серверу
Чтобы получить доступ к серверу, вам нужно знать IP-адрес. Вам также потребуется ваше имя пользователя и пароль для аутентификации. Чтобы подключиться к серверу как root, введите следующую команду:
ssh root@IP_DEL_SERVER
Далее вам нужно будет ввести пароль пользователя root.
Если вы не используете пользователя root, вы можете войти в систему с другим именем пользователя, используя ту же команду, а затем изменить root на свое имя пользователя:
ssh nome_utente@IP_DEL_SERVER
Затем вам будет предложено ввести пароль пользователя.
Стандартный порт для подключения по ssh — 22, если ваш сервер использует другой порт, вам нужно будет указать его с помощью параметра -p, затем введите следующую команду:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Установить Java
Hadoop написан на Java и поддерживает только Java версии 8. Hadoop версии 3.3 и последняя также поддерживают среду выполнения Java 11 и Java 8.
Вы можете установить OpenJDK 8 из репозиториев apt по умолчанию:
sudo apt update
sudo apt install openjdk-8-jdk
После установки проверьте установленную версию Java с помощью следующей команды:
java -version
Вы должны получить следующий результат:
openjdk version "1.8.0_275"
OpenJDK Runtime Environment (build 1.8.0_275-8u275-b01-0ubuntu1~20.04-b01)
OpenJDK 64-Bit Server VM (build 25.275-b01, mixed mode)
Создайте пользователя Hadoop
Из соображений безопасности рекомендуется создать отдельного пользователя для запуска Hadoop.
Выполните следующую команду, чтобы создать нового пользователя с именем hadoop:
sudo adduser hadoop
Введите и подтвердите новый пароль, как показано ниже:
Adding user `hadoop'...
Adding new group `hadoop' (1000)...
Adding new user `hadoop' (1000) with group `hadoop'...
The home directory `/home/hadoop' already exists. Not copying from `/etc/skel'.
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for hadoop
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n]
Настройка аутентификации на основе ключей SSH
Далее вам нужно будет настроить SSH-аутентификацию без пароля для локальной системы.
Во-первых, войдите в систему под пользователем hadoop
с помощью команды su:
su - hadoop
Затем выполните следующую команду, чтобы сгенерировать пары открытого и закрытого ключей:
ssh-keygen -t rsa
Вам будет предложено ввести имя файла. Просто нажмите Enter, чтобы завершить процесс:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/hadoop/.ssh/id_rsa
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:pfEaF19DFMxXeS1M3mWYPwcn2/GRb6Drv14mVNuPKow hadoop@TEST-SERVER-1
The key's randomart image is:
+---[RSA 3072]----+
| *=+O|
| o@B*|
|. o.+@O|
| = o...+X|
| S o...o+|
| +....|
|.o. o +|
| E o.. + |
|..o+. |
+----[SHA256]-----+
Затем добавьте открытые ключи, сгенерированные id_rsa.pub
, в authorized_keys
и установите соответствующее разрешение:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 640 ~/.ssh/authorized_keys
Затем проверьте аутентификацию SSH без пароля с помощью следующей команды:
ssh localhost
Вам будет предложено аутентифицировать хосты, добавив ключи RSA к известным хостам. Введите yes
и нажмите Invio
, чтобы аутентифицировать локальный хост:
The authenticity of host 'localhost (127.0.0.1)' can't be established.
ECDSA key fingerprint is SHA256:CoGsEfZLQ4ELMBhVTnCASQ4DmNdmjcke/D35mmFvF9o.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 5.4.0-52-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
Установить Хадуп
Во-первых, убедитесь, что вы вошли в систему с пользователем hadoop
с помощью следующей команды:
su - hadoop
Затем загрузите последнюю версию Hadoop с помощью команды wget:
wget https://downloads.apache.org/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
После загрузки извлеките загруженный файл с помощью команды tar:
tar -xvzf hadoop-3.3.0.tar.gz
Затем переименуйте извлеченный каталог в hadoop:
mv hadoop-3.3.0 hadoop
Далее вам нужно будет настроить переменные среды Hadoop и Java в вашей системе.
Откройте файл ~/.bashrc
в вашем любимом текстовом редакторе, здесь мы используем nano:
nano ~/.bashrc
Добавьте следующие строки:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64/export HADOOP_HOME=/home/hadoop/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"
Сохраните и закройте файл. Затем активируйте переменные среды с помощью следующей команды:
source ~/.bashrc
Затем откройте файл переменной среды Hadoop:
nano $HADOOP_HOME/etc/hadoop/hadoop-env.sh
Раскомментируйте и измените переменную JAVA_HOME
в соответствии с путем установки Java:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64/
Сохраните и закройте файл, когда закончите.
Настроить Hadoop
Во-первых, вам нужно будет создать namenode
и datanode
внутри домашнего каталога Hadoop:
Выполните следующую команду, чтобы создать оба каталога:
mkdir -p ~/hadoopdata/hdfs/namenode
mkdir -p ~/hadoopdata/hdfs/datanode
Затем отредактируйте файл core-site.xml
и обновите его, указав имя хоста вашей системы:
nano $HADOOP_HOME/etc/hadoop/core-site.xml
Отредактируйте следующий файл в соответствии с именем хоста системы:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://TUO_DOMINIO.com:9000</value>
</property>
</configuration>
Сохраните и закройте файл. Затем отредактируйте файл hdfs-site.xml
:
nano $HADOOP_HOME/etc/hadoop/hdfs-site.xml
Измените путь к каталогу NameNode
и DataNode
, как показано ниже:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>file:///home/hadoop/hadoopdata/hdfs/namenode</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>file:///home/hadoop/hadoopdata/hdfs/datanode</value>
</property>
</configuration>
Сохраните и закройте файл. Затем отредактируйте файл mapred-site.xml
:
nano $HADOOP_HOME/etc/hadoop/mapred-site.xml
Внесите следующие изменения:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
Сохраните и закройте файл. Затем отредактируйте файл arn-site.xml
:
nano $HADOOP_HOME/etc/hadoop/yarn-site.xml
Внесите следующие изменения:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
Сохраните и закройте файл, когда закончите.
Запустить кластер Hadoop
Перед запуском кластера Hadoop. Вам нужно будет отформатировать Namenode как пользователя hadoop.
Выполните следующую команду, чтобы отформатировать Hadoop Namenode:
hdfs namenode -format
Вы должны получить следующий результат:
...
2020-11-23 22:59:13,290 INFO namenode.FSImage: Allocated new BlockPoolId: BP-650323875-127.0.1.1-1606168753269
2020-11-23 22:59:13,320 INFO common.Storage: Storage directory /home/hadoop/hadoopdata/hdfs/namenode has been successfully formatted.
2020-11-23 22:59:13,403 INFO namenode.FSImageFormatProtobuf: Saving image file /home/hadoop/hadoopdata/hdfs/namenode/current/fsimage.ckpt_0000000000000000000 using no compression
2020-11-23 22:59:13,595 INFO namenode.FSImageFormatProtobuf: Image file /home/hadoop/hadoopdata/hdfs/namenode/current/fsimage.ckpt_0000000000000000000 of size 401 bytes saved in 0 seconds.
2020-11-23 22:59:13,605 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
2020-11-23 22:59:13,610 INFO namenode.FSImage: FSImageSaver clean checkpoint: txid=0 when meet shutdown.
2020-11-23 22:59:13,611 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at TUO_HOSTNAME/127.0.1.1
************************************************************/
После форматирования Namenode
выполните следующую команду, чтобы запустить кластер hadoop:
start-dfs.sh
После успешной загрузки HDFS
вы должны получить следующий вывод:
Starting namenodes on [TUO_DOMINIO.com]
Starting datanodes
Starting secondary namenodes [TUO_DOMINIO.com]
TUO_DOMINIO.com: Warning: Permanently added 'TUO_DOMINIO.com' (ECDSA) to the list of known hosts.
Затем запустите службу YARN
, как показано ниже:
start-yarn.sh
Вы должны получить следующий результат:
Starting resourcemanager
Starting nodemanagers
Теперь вы можете проверить состояние всех служб Hadoop
с помощью команды jps
:
jps
Вы должны увидеть все запущенные службы в следующем выводе:
2129 NodeManager
1827 SecondaryNameNode
2452 Jps
1701 DataNode
2024 ResourceManager
Настроить брандмауэр
Теперь Hadoop работает и прослушивает порты 9870
и 8088
.
Если у вас включен брандмауэр UFW, вам нужно будет разрешить этим портам проходить через брандмауэр.
Выполните следующие команды от имени пользователя root
, чтобы разрешить подключения Hadoop через брандмауэр:
ufw allow 9870/tcp
ufw allow 8088/tcp
Войдите в Hadoop Namenode и диспетчер ресурсов
Чтобы получить доступ к Namenode, откройте веб-браузер и перейдите по URL-адресу http://tuo_dominio.com:9870
. Вы должны увидеть экран сводки службы.
Чтобы получить доступ к управлению ресурсами, откройте веб-браузер и перейдите по URL-адресу http://tuo_dominio.com:8088
. Вы должны увидеть экран управления Hadoop.
Проверить кластер Hadoop
На этом этапе кластер Hadoop установлен и настроен. Далее мы создадим несколько каталогов в файловой системе HDFS для тестирования Hadoop.
Убедитесь, что вы вошли в систему с пользователем hadoop
:
su - hadoop
Давайте создадим каталог в файловой системе HDFS, используя следующую команду:
hdfs dfs -mkdir /test1
hdfs dfs -mkdir /logs
Затем выполните следующую команду, чтобы просмотреть каталог выше:
hdfs dfs -ls /
Вы должны получить следующий результат:
Found 3 items
drwxr-xr-x - hadoop supergroup 0 2020-11-23 23:46 /logs
drwxr-xr-x - hadoop supergroup 0 2020-11-23 23:41 /test1
Кроме того, поместите несколько файлов в файловую систему Hadoop. Например, добавьте файлы журналов с хост-компьютера в файловую систему hadoop.
hdfs dfs -put /var/log/* /logs/
Вы также можете проверить вышеуказанные файлы и каталог в веб-интерфейсе Hadoop Namenode.
Заходим в веб-интерфейс Namenode, нажимаем Utilities->Browse the file system
. Вы должны увидеть свои каталоги, которые вы создали ранее.
Остановить кластер Hadoop
Вы также можете остановить службу Hadoop Namenode и Yarn в любое время, запустив сценарии stop-dfs.sh и stop-yarn.sh от имени пользователя Hadoop.
Чтобы остановить службу Hadoop Namenode, выполните следующую команду от имени пользователя hadoop:
stop-dfs.sh
Чтобы остановить службу диспетчера ресурсов Hadoop, выполните следующую команду:
stop-yarn.sh
Вывод
В этом руководстве шаг за шагом рассказывается, как установить и настроить Hadoop в системе Linux Ubuntu 20.04 LTS Focal Fossa.