EnterpriseApps/Hadoop: различия между версиями
Нет описания правки |
|||
(не показано 20 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
{|class="wikitable" style="float:right; margin-left:2em" | {|class="wikitable" style="float:right; margin-left:2em" | ||
!colspan="2"|Apache Hadoop | !colspan="2"|Apache Hadoop | ||
Строка 17: | Строка 16: | ||
| Apache Licesne 2.0<br>и GNU GPL | | Apache Licesne 2.0<br>и GNU GPL | ||
|} | |} | ||
{{Attention|Обратите внимание, данная статья еще не окончена! Она может содержать ошибки и неточности!}} | |||
'''Hadoop''' — проект фонда Apache Software Foundation, свободно распространяемый набор утилит, библиотек и фреймворк для разработки и выполнения распределённых программ, работающих на кластерах из сотен и тысяч узлов. | '''Hadoop''' — проект фонда Apache Software Foundation, свободно распространяемый набор утилит, библиотек и фреймворк для разработки и выполнения распределённых программ, работающих на кластерах из сотен и тысяч узлов. | ||
=Установка= | =Установка= | ||
{{Note|Проверялась версия v3.3.6}} | |||
{{Note|Необходимые версии Java [https://cwiki.apache.org/confluence/display/HADOOP/Hadoop+Java+Versions указаны здесь]}} | {{Note|Необходимые версии Java [https://cwiki.apache.org/confluence/display/HADOOP/Hadoop+Java+Versions указаны здесь]}} | ||
==Установка Java== | ==Установка Java== | ||
#Установите Java 1.8 | #Установите Java 1.8 | ||
#:<pre># apt-get install java-1.8.0-openjdk</pre> | #:<pre># apt-get install java-1.8.0-openjdk java-1.8.0-openjdk-devel</pre> | ||
==Установка программы== | ==Установка программы== | ||
#Скачайте архив с программой (bin) | #Скачайте архив с программой (bin) | ||
#:https:// | #:https://hadoop.apache.org/releases.html | ||
#Распакуйте архив | #Распакуйте архив | ||
#:<pre># tar xzvf hadoop*.tar.gz</pre> | #:<pre># tar xzvf hadoop*.tar.gz</pre> | ||
Строка 58: | Строка 59: | ||
*{{path|YARN_HOME}} — путь размещения файлов модуля YARN. | *{{path|YARN_HOME}} — путь размещения файлов модуля YARN. | ||
*{{path|PATH}} — дополняет общую переменную PATH, где хранятся пути хранения бинарников для запуска приложений. | *{{path|PATH}} — дополняет общую переменную PATH, где хранятся пути хранения бинарников для запуска приложений. | ||
Делаем файл исполняемым: | |||
# chmod +x /etc/profile.d/hadoop.sh | |||
==Настройка окружения Hadoop== | ==Настройка окружения Hadoop== | ||
Правим от рута {{path|/opt/hadoop/etc/hadoop/hadoop-env.sh}} | |||
===Java=== | |||
Находим: | Находим: | ||
# export JAVA_HOME= | # export JAVA_HOME= | ||
Строка 68: | Строка 73: | ||
{{Note|Мы прописали актуальный путь до файлов openjdk}} | {{Note|Мы прописали актуальный путь до файлов openjdk}} | ||
===Каталог HDFS=== | |||
Создаем каталог /hadoop/hdfs с дополнительными каталогами. | |||
# mkdir -p /hadoop/hdfs/{namenode,datanode} | |||
# chown -R hadoop:hadoop /hadoop | |||
Правим файл /etc/profile.d/hadoop.sh | |||
Меняем | |||
export HADOOP_HDFS_HOME=$HADOOP_HOME | |||
на | |||
export HADOOP_HDFS_HOME=/hadoop/hdfs | |||
Правим файл | |||
# mcedit /opt/hadoop/etc/hadoop/hdfs-site.xml | |||
<pre> | |||
<configuration> | |||
<property> | |||
<name>dfs.replication</name> | |||
<value>1</value> | |||
</property> | |||
<property> | |||
<name>dfs.name.dir</name> | |||
<value>file:///hadoop/hdfs/namenode</value> | |||
</property> | |||
<property> | |||
<name>dfs.data.dir</name> | |||
<value>file:///hadoop/hdfs/datanode</value> | |||
</property> | |||
</configuration> | |||
</pre> | |||
Правим файл /opt/hadoop/etc/hadoop/mapred-site.xml | |||
<configuration> | |||
<property> | |||
<name>mapreduce.framework.name</name> | |||
<value>yarn</value> | |||
</property> | |||
</configuration> | |||
Правим файл /opt/hadoop/etc/hadoop/yarn-site.xml | |||
Добавлять : | |||
<configuration> | |||
<property> | |||
<name>yarn.nodemanager.aux-services</name> | |||
<value>mapreduce_shuffle</value> | |||
</property> | |||
</configuration> | |||
Проверка конфигураций Hadoop | |||
Инициализируйте хранилище инфраструктуры Hadoop. | |||
sudo su - hadoop | |||
hdfs namenode -format | |||
==Создание служебного пользователя== | |||
Создаем системного пользователя для службы: | |||
<pre># adduser hadoop -m | |||
# passwd hadoop | |||
</pre> | |||
Назначаем права на нового системного пользователя | |||
<pre># chown hadoop:hadoop -R /opt/hadoop</pre> | |||
==Создание сертификатов== | ==Создание сертификатов== | ||
Для работы Hadoop нужен сертификат, так как внутренние обращения выполняются с помощью запросов ssh. Нам нужно сгенерировать его. | Для работы Hadoop нужен сертификат, так как внутренние обращения выполняются с помощью запросов ssh. Нам нужно сгенерировать его. | ||
$ su - hadoop | |||
$ ssh-keygen | $ ssh-keygen | ||
Строка 114: | Строка 189: | ||
<property> | <property> | ||
<name>fs.default.name</name> | <name>fs.default.name</name> | ||
<value>hdfs:// | <value>hdfs://localhost:9000</value> //? localhost | ||
</property> | </property> | ||
</configuration> | </configuration> | ||
Строка 184: | Строка 259: | ||
</pre> | </pre> | ||
* где {{path|yarn.nodemanager.aux-services}} перечисляет вспомогательные классы обслуживания. По документации рекомендуют использовать mapreduce_shuffle. | * где {{path|yarn.nodemanager.aux-services}} перечисляет вспомогательные классы обслуживания. По документации рекомендуют использовать mapreduce_shuffle. | ||
==Создание служебных каталогов== | ==Создание служебных каталогов== | ||
Строка 255: | Строка 323: | ||
Для проверки можно перезагрузить сервер. | Для проверки можно перезагрузить сервер. | ||
=Запуск веб-интерфейса= | |||
Чтобы запустить веб-интерфейс откройте в браузере адреса: | |||
*{{path|http://<IP-адрес мастер-сервера>:8088}} - все приложения | |||
*{{path|http://<IP-адрес мастер-сервера>:8042}} - Приложения запущенные на данной ноде | |||
*{{path|http://<IP-адрес мастер-сервера>:8088}} | |||
=Источники= | |||
*[https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SingleCluster.html hadoop.apache.org/docs] | |||
*[https://www.dmosk.ru/miniinstruktions.php?mini=hadoop-install dmosk.ru] | |||
*[https://coderlessons.com/tutorials/bolshie-dannye-i-analitika/uchitsia-hadoop/hadoop-kratkoe-rukovodstvo coderlessons.com] |
Текущая версия от 12:04, 13 декабря 2023
Apache Hadoop | |
---|---|
Появился в: | 2006 |
Оф. сайт: | hadoop.apache.org |
Репозиторий ALT Linux | нет |
Лицензия: | Apache Licesne 2.0 и GNU GPL |
Hadoop — проект фонда Apache Software Foundation, свободно распространяемый набор утилит, библиотек и фреймворк для разработки и выполнения распределённых программ, работающих на кластерах из сотен и тысяч узлов.
Установка
Установка Java
- Установите Java 1.8
# apt-get install java-1.8.0-openjdk java-1.8.0-openjdk-devel
Установка программы
- Скачайте архив с программой (bin)
- Распакуйте архив
# tar xzvf hadoop*.tar.gz
- Скопируйте каталог в /opt
# mv hadoop*/ /opt/hadoop
- Сделайте файлы исполняемыми
# chmod +x -R /opt/hadoop
Создание файла профиля
Создаем файл с профилем:
# mcedit /etc/profile.d/hadoop.sh
Со следующим содержимым:
export HADOOP_HOME=/opt/hadoop export HADOOP_HDFS_HOME=$HADOOP_HOME export HADOOP_MAPRED_HOME=$HADOOP_HOME export HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=$HADOOP_HOME/lib/native" export YARN_HOME=$HADOOP_HOME export PATH="$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin"
в данном примере мы задаем системные переменные, требующиеся для работы hadoop:
- HADOOP_HOME — путь, где находятся файлы hadoop.
- HADOOP_HDFS_HOME — директория распределенной файловой системы HDFS.
- HADOOP_MAPRED_HOME — необходима для возможности отправки задания MapReduce с помощью MapReduce v2 в YARN.
- HADOOP_COMMON_HOME — путь хранения файлов для модуля common.
- HADOOP_COMMON_LIB_NATIVE_DIR — место размещения библиотеки native-hadoop.
- HADOOP_OPTS — дополнительные опции запуска.
- YARN_HOME — путь размещения файлов модуля YARN.
- PATH — дополняет общую переменную PATH, где хранятся пути хранения бинарников для запуска приложений.
Делаем файл исполняемым:
# chmod +x /etc/profile.d/hadoop.sh
Настройка окружения Hadoop
Правим от рута /opt/hadoop/etc/hadoop/hadoop-env.sh
Java
Находим:
# export JAVA_HOME=
Меняем на:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-0.x86_64/jre
(без /bin/java)
Каталог HDFS
Создаем каталог /hadoop/hdfs с дополнительными каталогами.
# mkdir -p /hadoop/hdfs/{namenode,datanode} # chown -R hadoop:hadoop /hadoop
Правим файл /etc/profile.d/hadoop.sh
Меняем
export HADOOP_HDFS_HOME=$HADOOP_HOME
на
export HADOOP_HDFS_HOME=/hadoop/hdfs
Правим файл
# mcedit /opt/hadoop/etc/hadoop/hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.name.dir</name> <value>file:///hadoop/hdfs/namenode</value> </property> <property> <name>dfs.data.dir</name> <value>file:///hadoop/hdfs/datanode</value> </property> </configuration>
Правим файл /opt/hadoop/etc/hadoop/mapred-site.xml
<configuration>
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
</configuration>
Правим файл /opt/hadoop/etc/hadoop/yarn-site.xml
Добавлять :
<configuration>
<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property>
</configuration>
Проверка конфигураций Hadoop
Инициализируйте хранилище инфраструктуры Hadoop.
sudo su - hadoop hdfs namenode -format
Создание служебного пользователя
Создаем системного пользователя для службы:
# adduser hadoop -m # passwd hadoop
Назначаем права на нового системного пользователя
# chown hadoop:hadoop -R /opt/hadoop
Создание сертификатов
Для работы Hadoop нужен сертификат, так как внутренние обращения выполняются с помощью запросов ssh. Нам нужно сгенерировать его.
$ su - hadoop $ ssh-keygen
Копируем публичный ключ на локальный компьютер:
$ ssh-copy-id localhost
При первом обращении по SSH будет запрос на принятие сертификата:
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Система запросит ввести пароль для нашего пользователя hadoop. После успешного ввода, мы должны увидеть:
Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'localhost'" and check to make sure that only the key(s) you wanted were added.
Проверим вход в систему по ssh на все серверы — мы должны подключиться без запроса пароля:
$ ssh localhost
После отключаемся:
$ exit
Установка и настройка Hadoop завершена. Возвращаемся в консоль первичного пользователя:
$ exit
Настройка Hadoop
Правим файл /opt/hadoop/etc/hadoop/core-site.xml
Приведем его к виду:
... <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> //? localhost </property> </configuration>
* где fs.default.name указывает на узел и порт обращения к внутренней файловой системе. В нашем примере на мастер-сервер (localhost) порту 9000. Данная настройка должна быть такой на всех нодах.
Редактируем файл с настройками файловой системы HDFS:
# mcedit /opt/hadoop/etc/hadoop/hdfs-site.xml
В итоге должно получиться:
... <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.name.dir</name> <value>file:///hadoop/hdfs/namenode</value> </property> <property> <name>dfs.data.dir</name> <value>file:///hadoop/hdfs/datanode</value> </property> </configuration>
- где:
dfs.replication — количество реплик. Не может быть больше узлов кластера. dfs.name.dir — путь хранения таблицы имен fsimage. Можно перечи dfs.data.dir — каталог для хранения блоков файловой системой HDFS.
Открываем для редактирования файл для настройки MapReduce:
# mcedit /opt/hadoop/etc/hadoop/mapred-site.xml
Задаем следующие параметры:
... <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
- где mapreduce.framework.name — фреймворк для управления кластером.
Открываем файл для настройки YARN:
# mcedit /opt/hadoop/etc/hadoop/yarn-site.xml
Приводим его к виду:
... <configuration> <!-- Site specific YARN configuration properties --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
- где yarn.nodemanager.aux-services перечисляет вспомогательные классы обслуживания. По документации рекомендуют использовать mapreduce_shuffle.
Создание служебных каталогов
Создаем каталоги, которые мы указали для использования HDFS:
# mkdir -p /hadoop/hdfs/{namenode,datanode}
Для каталога /hadoop выставим в качестве владельца созданного пользователя hadoop:
# chown -R hadoop:hadoop /hadoop
Наши серверы настроены.
Запуск кластера
На мастер-сервере заходим под пользователем hadoop:
$ su - hadoop
Создаем файловую систему:
$ /opt/hadoop/bin/hdfs namenode -format
Для запуска кластера выполняем следующие команды:
$ /opt/hadoop/sbin/start-dfs.sh
$ /opt/hadoop/sbin/start-yarn.sh
Ждем еще немного (около 10 секунд) для окончательной загрузки java-приложения. После открываем в браузере адрес http://<IP-адрес мастер-сервера>:8088.
Кластер работает.
Создание службы
Настраиваем запуск hadoop в качестве сервиса.
Создаем файл:
# mcedit /etc/systemd/system/hadoop.service
Со следующим содержимым:
[Unit] Description=Hdfs service After=network.target [Service] Type=forking User=hadoop Group=hadoop ExecStart=/opt/hadoop/sbin/start-all.sh ExecStop=/opt/hadoop/sbin/stop-all.sh ExecReload=/bin/kill -HUP $MAINPID Restart=on-failure [Install] WantedBy=multi-user.target
Перечитываем конфигурацию systemd:
# systemctl daemon-reload
Разрешаем автозапуск:
# systemctl enable --now hadoop
Для проверки можно перезагрузить сервер.
Запуск веб-интерфейса
Чтобы запустить веб-интерфейс откройте в браузере адреса:
- http://<IP-адрес мастер-сервера>:8088 - все приложения
- http://<IP-адрес мастер-сервера>:8042 - Приложения запущенные на данной ноде
- http://<IP-адрес мастер-сервера>:8088