Оригинальный адрес: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.
-
выполнить первым
su hadoop
Переключитесь на пользователя Hadoop. -
Выполняется на главном хосте
ssh-keygen -t rsa
, нажмите Enter до упора, чтобы сгенерировать ключ. -
Выполнить отдельно
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
Скрипт выключает систему.