EnterpriseApps/Hadoop: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
Нет описания правки
 
(не показаны 23 промежуточные версии этого же участника)
Строка 1: Строка 1:
{{stub}}
{|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://hbase.apache.org/downloads.html
#: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}}
Правим от рута {{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


Строка 104: Строка 179:


==Настройка Hadoop==
==Настройка Hadoop==
Правим файл /opt/hadoop/etc/hadoop/core-site.xml
Правим файл {{path|/opt/hadoop/etc/hadoop/core-site.xml}}


Приведем его к виду:
Приведем его к виду:
Строка 114: Строка 189:
   <property>
   <property>
       <name>fs.default.name</name>
       <name>fs.default.name</name>
       <value>hdfs://hadoop1:9000</value> //? localhost
       <value>hdfs://localhost:9000</value> //? localhost
   </property>
   </property>
</configuration>
</configuration>
</pre>
</pre>
<nowiki>*</nowiki> где fs.default.name указывает на узел и порт обращения к внутренней файловой системе. В нашем примере на мастер-сервер (localhost) порту 9000. Данная настройка должна быть такой на всех нодах.
<nowiki>*</nowiki> где {{path|fs.default.name}} указывает на узел и порт обращения к внутренней файловой системе. В нашем примере на мастер-сервер (localhost) порту 9000. Данная настройка должна быть такой на всех нодах.


Редактируем файл с настройками файловой системы HDFS:
Редактируем файл с настройками файловой системы HDFS:
Строка 165: Строка 240:
</configuration>
</configuration>
</pre>
</pre>
* где mapreduce.framework.name — фреймворк для управления кластером.
* где {{path|mapreduce.framework.name}} — фреймворк для управления кластером.


Открываем файл для настройки YARN:
Открываем файл для настройки YARN:
Строка 183: Строка 258:
</configuration>
</configuration>
</pre>
</pre>
* где yarn.nodemanager.aux-services перечисляет вспомогательные классы обслуживания. По документации рекомендуют использовать mapreduce_shuffle.
* где {{path|yarn.nodemanager.aux-services}} перечисляет вспомогательные классы обслуживания. По документации рекомендуют использовать mapreduce_shuffle.


==Создание служебных каталогов==
==Создание служебных каталогов==
Строка 215: Строка 290:


==Создание службы==
==Создание службы==
Создаем системного пользователя для службы:
<pre># adduser hadoop -m</pre>
Назначаем права на нового системного пользователя
<pre># chown hadoop:hadoop -R /opt/hadoop</pre>
Настраиваем запуск hadoop в качестве сервиса.
Настраиваем запуск hadoop в качестве сервиса.


Строка 254: Строка 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
Altenter-menu-Hadoop.png
Появился в: 2006
Оф. сайт: hadoop.apache.org
Репозиторий ALT Linux нет
Лицензия: Apache Licesne 2.0
и GNU GPL
Внимание! Обратите внимание, данная статья еще не окончена! Она может содержать ошибки и неточности!

Hadoop — проект фонда Apache Software Foundation, свободно распространяемый набор утилит, библиотек и фреймворк для разработки и выполнения распределённых программ, работающих на кластерах из сотен и тысяч узлов.

Установка

Примечание: Проверялась версия v3.3.6
Примечание: Необходимые версии Java указаны здесь

Установка Java

  1. Установите Java 1.8
    # apt-get install java-1.8.0-openjdk java-1.8.0-openjdk-devel

Установка программы

  1. Скачайте архив с программой (bin)
    https://hadoop.apache.org/releases.html
  2. Распакуйте архив
    # tar xzvf hadoop*.tar.gz
  3. Скопируйте каталог в /opt
    # mv hadoop*/ /opt/hadoop
  4. Сделайте файлы исполняемыми
    # 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)

Примечание: Мы прописали актуальный путь до файлов 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
<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
Примечание: на все вопросы можно ответить по умолчанию, нажав Enter.


Копируем публичный ключ на локальный компьютер:

$ 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

Источники