Полностью распределенная установка Hadoop

Hadoop

Оригинальный адрес:woohoo.in Lighting.org/archives/in…

В этой статье в основном рассказывается о том, как построить полностью распределенный кластер Hadoop.Из-за сложной конфигурации Hadoop эта статья записывается настоящим.

Базовая подготовка

На этот раз я использовал три сервера для создания кластера Hadoop.Я смоделировал три машины через виртуальную машину (Parallel Desktop).Конечно, вы также можете использовать программное обеспечение, такое как VirtualBox или VMWare.

Информация о конфигурации трех машин выглядит следующим образом:

Процессор: двухъядерный

Память: 2G

Диск: 12G

пароль root: 123456

Система: Centos 8.0 (минимальная установка)

Установка среды

Обновление системного ПО (необязательно)

На самом деле ничего не поделаешь, если он не обновляется.

позволятьdnf update -y.

Команда dnf встроена в Centos 8, поэтому здесь я использую команду dnf вместо yum.

Установите openjdk 1.8

воплощать в жизньdnf install java-1.8.0-openjdk-devel.x86_64 -y

установить вим

Чтобы в дальнейшем облегчить редактирование конфигурационного файла Hadoop, мы устанавливаем vim.

воплощать в жизньdnf install vim -y

установить смолу

Установите программное обеспечение для распаковки tar-архивов.

воплощать в жизньdnf install tar.x86_64 -y

клон машины

Клонируйте 2 этой машины в качестве подчиненных узлов с помощью программного обеспечения для управления виртуальными машинами.

Конфигурация связи

Мы хотим, чтобы три машины образовывали небольшую локальную сеть.

Виртуальные IP-адреса, назначенные трем машинам здесь:

  • Master : 10.211.55.11
  • Slave1 : 10.211.55.12
  • Slave2 : 10.211.55.13

редактирование имени хоста (не обязательно, просто для удобства управления через командную строку, иначе будет тот же localhost)

Я беру главный узел в качестве примера здесь:

воплощать в жизньhostnameкоманда, я вижу, что по умолчаниюlocalhost.localdomain.

воплощать в жизньhostnamectl set-hostname master, перезагрузите систему.

редактирование файлов hosts

Изменить три машины/etc/hostsфайл, добавьте следующий код:

10.211.55.11 master
10.211.55.12 slave1
10.211.55.13 slave2

Конфигурация статического IP (опционально)

IP-адрес хоста по умолчанию здесь получен через службу DHCP.Если адрес, назначенный в следующий раз, изменится, связь между тремя машинами будет ненормальной. Итак, здесь мы настраиваем Centos 8 для перехода на статический IP.

Изменить ifcfg-xxxx

xxxx это вообще имя вашей сетевой карты, здесь я ввожу командуvim /etc/sysconfig/network-scripts/ifcfg-ens18Изменить информацию о конфигурации моей сетевой карты.

ИсправлятьBOOTPROTO="static", добавьте IP-адрес, шлюз и другую информацию после файла:

IPADDR=10.211.55.11
NETMASK=255.255.255.0
GATEWAY=10.211.55.255

Введите команду после сохраненияsystemctl restart NetworkManagerПерезапустите сеть (команда Centos 7systemctl restart network).

Профиль прав

После установки системы учетная запись root используется по умолчанию. Если запуск Hadoop под root небезопасен, требуется дополнительная настройка. Чтобы избежать проблем, здесь мы создаем пользователя с именем hadoop на всех трех машинах.

Возьмем узел в качестве примера:

воплощать в жизньadduser hadoopВы можете создать пользователя hadoop и выполнитьpasswd hadoopСоздайте пароль для пользователя hadoop, здесь пароль 123456. (В первый раз система предложитBAD PASSWORD, надежности пароля недостаточно, вы можете ввести его еще раз).

Вход без пароля через SSH

Нам нужно настроить главный хост на slave1 , slave2 и собственный вход без пароля SSH.

  1. выполнить первымsu hadoopПереключитесь на пользователя Hadoop.

  2. Выполняется на главном хостеssh-keygen -t rsa, нажмите Enter до упора, чтобы сгенерировать ключ.

  3. Выполнить отдельноssh-copy-id hadoop@master,ssh-copy-id hadoop@slave1а такжеssh-copy-id hadoop@slave2Скопируйте ключ на три узла. После этого мы можем войтиssh hadoop@slave1провести тестирование.

Обратите внимание, что локальному мастеру также нужны настройки без пароля, потому что позже мы будем использовать мастер как узел управления и подчиненный узел.

Введение в распределенную архитектуру Hadoop

  • Главный узел является родительским узлом, отвечающим за планирование двух подчиненных узлов, а также сам действует как подчиненный узел.

    • NameNodeРаботает на главном узле и отвечает заDataNodeединое управление.
    • SecondaryNodeЗапуск на главном узле, вспомогательныйNameNodeоперация.
    • ResourceManagerОн работает на главном узле и отвечает за планирование задач пряжи.
  • Slave — это подчиненный узел (обычно называемый рабочим), отвечающий за вычисления и хранение.

    • DataNodeРаботает на подчиненном устройстве, узле данных, который хранит данные.
    • NodeManagerРаботает на подчиненном устройстве и отвечает за выполнение задач.

Хадуп скачать и установить

Все три машины загружают файлы Hadoop в/home/hadoopВ каталоге разархивируйте его (обратите внимание на проблему с разрешением, разрешение должно принадлежать пользователю hadoop, чтобы предотвратить непредвиденные проблемы позже)

Пример командной строки:

su hadoop
cd /home/hadoop
wget http://apache.mirror.colo-serv.net/hadoop/common/hadoop-3.2.1/hadoop-3.2.1.tar.gz
tar -zxvf hadoop-3.2.1.tar.gz

Конфигурация JAVA_HOME

Путь установки по умолчанию для OpenJDK 8 в Centos 8 находится по адресу/usr/lib/jvm/java-1.8.0-openjdkвниз, мы открываем~/hadoop-3.2.1/etc/hadoop/hadoop-env.shИзмените строку кода, чтобы

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk

Конфигурация NameNode

редактировать~/hadoop-3.2.1/etc/hadoop/core-site.xmlКод выглядит следующим образом:

<configuration>
	<property>
		<name>fs.default.name</name>
		<value>hdfs://master:9000</value>
	</property>
</configuration>

Конфигурация HDFS

редактировать~/hadoop-3.2.1/etc/hadoop/hdfs-site.xmlкод показывает, как показано ниже:

<configuration>
  <property>
  	<name>dfs.namenode.name.dir</name>
  	<value>/home/hadoop/data/nameNode</value>
  </property>

  <property>
  	<name>dfs.datanode.data.dir</name>
  	<value>/home/hadoop/data/dataNode</value>
  </property>

  <property>
  	<name>dfs.replication</name>
  	<value>2</value>
  </property>
</configuration>

Последняя из этих настроекdfs.replicationУказывает, сколько копий файла должно существовать в кластере Hadoop, и это число не должно превышать количество реальных машин.

Например, у меня есть три вычислительных узла (ведомые),dfs.replicationне может иметь значение больше 3.

Настроить ПРЯЖУ

редактировать~/hadoop-3.2.1/etc/hadoop/mapred-site.xmlкод показывает, как показано ниже:

<configuration>
  <property>
  	<name>mapreduce.framework.name</name>
  	<value>yarn</value>
  </property>
  
  <property>
  	<name>yarn.app.mapreduce.am.env</name>
  	<value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
  </property>
  
  <property>
  	<name>mapreduce.map.env</name>
  	<value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
  </property>
  
  <property>
  	<name>mapreduce.reduce.env</name>
  	<value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
  </property>
</configuration>

редактировать~/hadoop-3.2.1/etc/hadoop/yarn-site.xmlкод показывает, как показано ниже:

<configuration>
	<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>master</value>
	</property>
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
</configuration>

Настроить рабочий узел

раб здесь называется рабочим, отредактируйте~/hadoop-3.2.1/etc/hadoop/workersкод показывает, как показано ниже:

master
slave1
slave2

Я заполнил здесь мастер-узел, что означает, что мастер-узел действует не только как управляющий, но и принимает на себя рабочий узел.

Скопируйте конфигурацию на каждый подчиненный узел

Выполнение заказа:

scp hadoop-3.2.1/etc/hadoop/* slave1:/home/hadoop/hadoop-3.2.1/etc/hadoop/
scp hadoop-3.2.1/etc/hadoop/* slave2:/home/hadoop/hadoop-3.2.1/etc/hadoop/

Скопируйте файл конфигурации на два других подчиненных узла.

запустить тест

отключить брандмауэр

Во-первых, закройте брандмауэры трех узлов и одновременно запретите запуск и работу, чтобы предотвратить непредвиденные проблемы во время связи внутри сети.Выполните следующие команды:

systemctl stop firewalld
systemctl disable firewalld

HDFS включена

Мы выполняем следующую команду на главном узле для инициализации HDFS:./hadoop-3.2.1/bin/hdfs namenode -format.

затем выполнить./hadoop-3.2.1/sbin/start-dfs.shЗапустите кластер hdfs.

Вы можете войти в мастер-узелjpsкоманда для просмотра уже запущенных процессов

4930 SecondaryNameNode
4579 NameNode
4739 DataNode
5050 Jps

на подчиненном узлеjpsкоманда, чтобы увидеть:

2834 DataNode
2895 Jps

Доступ в браузереlocalhost:9870Вы можете увидеть интерфейс управления сетью (доступ к виртуальной машине должен включать переадресацию портов):

Пряжа на

воплощать в жизнь./hadoop-3.2.1/sbin/start-yarn.shКоманда на открытие, адрес доступаlocalhost:8088Вы можете увидеть следующий интерфейс:

Выше мы видим, что 3 узла работают нормально.

Суммировать

На данный момент распределенная настройка Hadoop завершена, чтобы максимально упростить настройку многие параметры используются по умолчанию. В папке sbin в каталоге hadoop есть много полезных скриптов, таких какstart-all.shВозможность запуска hdfs и пряжи одним щелчком мыши. Все обращают внимание на необходимость использования при выключении системыstop-xx.shСкрипт выключает систему.