Три способа создания развертывания кластера Hadoop Cluster_hadoop
Три способа создания развертывания кластера Hadoop Cluster_hadoop

Создание кластера Hadoop (суперподробно)

1. Кластерное планирование

Установите VMware и используйте три виртуальные машины Ubuntu18.04 для создания кластера. Ниже приведен план для каждой виртуальной машины:

имя хоста

IP

пользователь

HDFS

YARN

hadoopWyc

Будет определено

wyc

NameNode、DataNode

NodeManager、ResourceManager

hadoopWyc2

Будет определено

wyc

DataNode、SecondaryNameNode

NodeManager

hadoopWyc3

Будет определено

wyc

DataNode

NodeManager

2. Конфигурация сети

Сначала я создал новую виртуальную машину Ubuntu в VMware с памятью 8 ГБ (просто установите системную память Ubuntu по умолчанию) и пространством на жестком диске 20 ГБ. После завершения создания нового выполните следующие операции.

обычнопользователь Пожалуйста, помните об этом после входа в системуIPадрес,Оно понадобится вам позже! ! !

Сначала войдите в систему под root-пользователем, а затем работайте под root-пользователем.

Язык кода:javascript
копировать
su root             #Loginroot пользователь

Семейное ведро Jetbrains 1 год 46, стабильная послепродажная гарантия

Пока нет ссылки на установку пароля root-пользователя. Ubuntu18.04 установил пароль root (начальный пароль)

2.1 Изменить имя хоста

Язык кода:javascript
копировать
vim /etc/hostname   #Изменить файл

Выполните приведенную выше команду, чтобы открыть файл «/etc/hostname».,Содержимое удалить,и изменен на“hadoopWyc”(Вы можете изменить то, что хотите, в соответствии с вашими потребностямиимя хоста), сохраните и выйдите из редактора vim, перезапустите Linux, чтобы увидеть имя хост меняется.

2.2 Просмотр информации о сети виртуальной машины

2.2.1 Нажмите на редактор виртуальной сети в редакторе VMware.
2.2.2 Выберите сеть VMnet8 и нажмите «Настройки NAT».

Запишите маску подсети, шлюз и три предыдущих атрибута IP-адреса на рисунке выше. Они будут полезны в следующих шагах, и разные компьютеры будут разными.

2.2.3 Получите номер сетевой карты виртуальной машины Ubuntu
Язык кода:javascript
копировать
ifconfig
2.2.4 Настройка статической сети
Язык кода:javascript
копировать
vim /etc/network/interfaces

Добавить к исходному контенту

Язык кода:javascript
копировать
auto ens33				    # Номер сетевой карты, вот ens33
iface ens33 inet static	    # Установить статический IP
address 192.168.153.136	    # IP-адрес машины — это IP-адрес, отображаемый после входа в систему. адрес
netmask 255.255.255.0	    # Маска подсети, просто получите маску подсети VMware
gateway 192.168.153.2	    # Шлюз также является только что полученным шлюзом.
dns-nameserver 192.168.153.2	# DNS, то же самое, что и шлюз

Вышеупомянутое содержимое устанавливается в соответствии с соответствующими компьютерами. Оно должно соответствовать IP-адресу подсети, маске подсети и шлюзу в VMware, иначе вы не сможете получить доступ к Интернету. Сохраните и выйдите из редактора vim, затем перезапустите Ubuntu, чтобы изменения вступили в силу.

3. Установите ssh-сервер.

Язык кода:javascript
копировать
apt-get install openssh-server

Если при установке виртуальной машины вы отметили опцию установки ssh, это будет выглядеть так, как показано на рисунке ниже. Просто продолжайте делать это.

После установки используйте следующую команду для входа в систему:

Язык кода:javascript
копировать
ssh localhost

Дополнение: ssh localhost = ssh <текущийпользователь>@localhost -p 22 -i ~/.ssh/id_rsa

В первый раз появится запрос на вход по SSH. Просто введите «да», а затем введите локальный пароль, как будет предложено.

Но в этом случае вам придется вводить пароль каждый раз при входе в систему. Теперь настройте вход по SSH без пароля. Сначала выйдите из SSH, используйте ssh-keygen для генерации ключа и добавьте ключ в авторизацию.

Язык кода:javascript
копировать
exit	# Выйти по SSH localhost
cd ~/.ssh/
ssh-keygen -t rsa	# Появится подсказка, просто нажмите Enter.
cat ./id_rsa.pub >> ./authorized_keys	# Добавить авторизацию

Теперь используйте «ssh localhost» для входа в систему по ssh без ввода пароля.

4. Установите среду Java

Hadoop3.1.3 требует JDK версии 1.8 и выше.,Нажмите ссылку справа, чтобы загрузить версию, соответствующуюJDK:jdk-8u162-linux-x64.tar.gz(Код извлечения:ik9p)。

Мы можем подключиться к виртуальной машине через Xshell, имя хоста — это IP-адрес, показанный при входе в систему только что.,Порт по умолчанию 22,Выберите учетную запись и пароль для входа и введите свое имя и пароль для входа (если он не установлен выше, включите службу .ssh).,Здесь вы не сможете подключиться к виртуальной машине)

Щелкните маленький зеленый значок выше, и мы откроем Xftp, который может напрямую передавать локальные файлы на виртуальную машину.

Люди, которые входят в Xshell с помощью обычного пользователя, сообщают об ошибке, что локальные файлы не могут быть перенесены на виртуальную машину:

Есть два решения:

  1. Xдолжен войти в систему как root,Откройте Xftp еще раз (таким образом Xftp также откроется от пользователя root).,есть все разрешения),Однако Xshall не может подключиться к виртуальной машине при входе в систему с правами root.,ссылка:Xshell использует root-пользователя для подключения к Linux Можетрешать
  2. ссылка:Когда Xftp передает файлы на виртуальную машину, он продолжает показывать ошибку состояния и не может быть передан.

После размещения файла в любом каталоге выполните следующую команду:

Язык кода:javascript
копировать
cd /usr/lib
mkdir jvm	# Создайте каталог для хранения файлов JDK.

Затем перейдите в папку, где находится jdk-8u162-linux-x64.tar.gz, и распакуйте JDK в только что созданную папку jvm.

Язык кода:javascript
копировать
tar -zxvf ./jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm #Извлекаем JDK в только что созданную jvm-папку

После распаковки файла JDK в каталоге /usr/lib/jvm появится файл jdk1.8.0_162. Далее мы начинаем устанавливать переменные среды.

Язык кода:javascript
копировать
vim ~/.bashrc

Добавьте следующий контент в начало открытого файла

Язык кода:javascript
копировать
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
export JRE_HOME=${ 
   JAVA_HOME}/jre
export CLASSPATH=.:${ 
   JAVA_HOME}/lib:${ 
   JRE_HOME}/lib
export PATH=${ 
   JAVA_HOME}/bin:$PATH

Сохраните и выйдите из редактора vim и выполните следующую команду, чтобы конфигурация файла .bashrc вступила в силу:

Язык кода:javascript
копировать
source ~/.bashrc

Затем используйте следующую команду, чтобы проверить успешность установки:

Язык кода:javascript
копировать
java -version

Если информация о версии Java отображается, как показано ниже, это означает, что установка прошла успешно:

5. Установите Hadoop3.1.3.

hadoop-3.1.3.tar.gz (Код извлечения: x2vu) вы можете нажать, чтобы загрузить здесь, загрузить и загрузить его в соответствующее место, использовать следующую команду для его установки и предоставить права доступа к папке такие же, как при установке Java:

Язык кода:javascript
копировать
tar -zxvf hadoop-3.1.3.tar.gz -C /usr/local	# Разархивируйте его в /usr/local
cd mv ./hadoop-3.1.3/ ./hadoop	# Измените имя файла на Hadoop
sudo chown -R rmc0924 ./hadoop	# Изменить разрешения,Какой сейчас логин пользователя,Дайте ему права пользователя

После распаковки используйте следующую команду, чтобы проверить, прошла ли установка успешно. Если установка прошла успешно, отобразится информация о версии Hadoop.

Язык кода:javascript
копировать
cd /usr/local/hadoop
./bin/hadoop version

Как показано на рисунке:

6. Клонировать виртуальную машину

После описанных выше шагов Ubuntu с именем HadoopWyc была настроена. Теперь выйдите из виртуальной машины. Клонируйте эту виртуальную машину в две другие виртуальные машины с именами HadoopWyc2 и HadoopWyc3 соответственно.

В следующем окне подсказки выберите «Текущий статус виртуальной машины», «Создать полный клон», назовите клонированную виртуальную машину, выберите местоположение и дождитесь завершения клонирования.

Итоговая виртуальная машина выглядит так:

Выполните шаги 2.1 и 2.2, чтобы изменить две виртуальные машины HadoopWyc2 и HadoopWyc3. хоста и соответствующие им статические IP-адреса в качестве резервной копии. Наконец, мы можем завершить исходную таблицу:

имя хоста

IP

пользователь

HDFS

YARN

hadoopWyc

192.168.153.136

wyc

NameNode、DataNode

NodeManager、ResourceManager

hadoopWyc2

192.168.153.137

wyc

DataNode、SecondaryNameNode

NodeManager

hadoopWyc3

192.168.153.138

wyc

DataNode

NodeManager

7. Добавьте сопоставление IP-адресов узлов всем трем виртуальным машинам.

Откройте файл хостов и добавьте три отношения сопоставления между IP и хостами:

Язык кода:javascript
копировать
vim /etc/hosts

192.168.153.136 hadoopWyc 192.168.153.137 hadoopWyc2 192.168.153.138 hadoopWyc3

8. Построение кластера

Теперь кластер Hadoop официально настроен. Во-первых, нам все равно нужно открыть три виртуальные машины в VMware, а затем использовать Xshall для подключения этих трех виртуальных машин.

Три машины проверяют друг друга, чтобы проверить, смогут ли они выполнить проверку связи успешно.

8.1 Узел входа без пароля по SSH

Узел HadoopWyc должен иметь возможность входа на каждый узел HadoopWyc2 и HadoopWyc3 через SSH без пароля. Сначала сгенерируйте открытый ключ узла HadoopWyc. Если он был сгенерирован ранее, его необходимо удалить и создать заново. Выполните следующие операции на HadoopWyc:

Язык кода:javascript
копировать
cd ~/.ssh
rm ./id_rsa*	# Удалить ранее сгенерированный открытый ключ
ssh-keygen -t rsa	# Когда вы встретите сообщение, просто нажмите Enter.

Затем дайте узлу HadoopWyc возможность войти в систему через SSH без пароля. Выполните следующую команду на узле HadoopWyc:

Язык кода:javascript
копировать
cat ./id_rsa.pub >> ./authorized_keys

Используйте следующую команду для проверки:

Язык кода:javascript
копировать
ssh hadoopWyc

Дальше будетhadoopWycОткрытый ключ наhadoopWyc2&3узел:

Язык кода:javascript
копировать
scp ~/.ssh/id_rsa.pub hadoopWyc2:/home/wyc
scp ~/.ssh/id_rsa.pub hadoopWyc3:/home/wyc

где scp безопасен сокращение для копии,существоватьLinuxИспользуется в удаленном копировании。осуществлятьscpпопросит ввести данныеhadoopWyc2&3пользовательпароль,После завершения ввода отобразится сообщение о завершении передачи:

Затем на узле HadoopWyc2 добавляем к авторизации полученный публичный ключ:

Язык кода:javascript
копировать
mkdir ~/.ssh	# Если папка не существует, сначала создайте ее
cat /home/wyc/id_rsa.pub >> ~/.ssh/authorized_keys
rm /home/wyc/id_rsa.pub   # Просто добавь этоудалить

Также выполните указанную выше команду на узле HadoopWyc3. После выполнения,существоватьhadoopWycузел上就Может无密码登录hadoopWyc2&3узел,Выполните следующую команду на узле HadoopWyc:

Язык кода:javascript
копировать
ssh hadoopWyc2

Войдите в HadoopWyc2 в HadoopWyc. Ввод команды в этот момент эквивалентен ее выполнению на виртуальной машине HadoopWyc2.

Введите выход, чтобы выйти

8.2 Настройка среды кластера

При настройке режима кластера вам необходимо изменить файлы конфигурации в каталоге «/usr/local/hadoop/etc/hadoop», включая рабочие файлы, core-site.xml, hdfs-site.xml, mapred-site.xml и сайт пряжи.

8.2.1 Изменение рабочего файла
Язык кода:javascript
копировать
vim workers

Содержимое этого файла может указывать определенные узлы в качестве узлов данных. По умолчанию используется localhost. Мы удаляем его и изменяем на HadoopWyc2 и HadoopWyc. Конечно, вы также можете добавить к нему HadoopWyc, чтобы узел HadoopWyc можно было использовать как узел имени и узел данных. В этой статье HadoopWyc будет добавлен вместе в качестве узла данных.

Язык кода:javascript
копировать
hadoopWyc
hadoopWyc2 
hadoopWyc3
8.2.2 Изменение файла core-site.xml
Язык кода:javascript
копировать
vim core-site.xml

fs.defaultFS: укажите адрес связи файловой системы протокола hdfs узла имени. Вы можете указать хост + порт. Hadoop.tmp.dir: каталог, в котором хранятся некоторые временные файлы во время работы кластера Hadoop.

Язык кода:javascript
копировать
<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://hadoopWyc:9000</value>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/usr/local/hadoop/tmp</value>
        </property>
</configuration>
8.2.3 Изменение файла hdfs-site.xml
Язык кода:javascript
копировать
vim hdfs-site.xml

dfs. Secondary.http.address: информация о работающем узле вторичного узла-имя должна храниться на другом узле, отличном от узла-имя. dfs.replication: настройка номера реплики HDFS, по умолчанию — 3. dfs.namenode.name.dir: место хранения данных namenode и место хранения метаданных. dfs.datanode.data.dir: место хранения данных узла данных и расположение блоков блоков.

Язык кода:javascript
копировать
<configuration>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>hadoopWyc2:50090</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>3</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/usr/local/hadoop/tmp/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/usr/local/hadoop/tmp/dfs/data</value>
        </property>
</configuration>
8.2.4 Изменение файла mapred-site.xml
Язык кода:javascript
копировать
vim mapred-site.xml

Mapreduce.framework.name: укажите структуру Mapreduce как режим пряжи. mapreduce.jobhistory.address: укажите адрес и порт сервера истории. mapreduce.jobhistory.webapp.address: просмотр веб-адреса записей заданий Mapreduce, запущенных сервером истории. Вам необходимо запустить эту службу.

Язык кода:javascript
копировать
<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>hadoopWyc:10020</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>hadoopWyc:19888</value>
        </property>
        <property>
                <name>yarn.app.mapreduce.am.env</name>
                <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
        </property>
        <property>
                <name>mapreduce.map.env</name>
                <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
        </property>
        <property>
                <name>mapreduce.reduce.env</name>
                <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
        </property> 
</configuration>
8.2.5 Изменение файла Yarn-site.xml
Язык кода:javascript
копировать
vim yarn-site.xml
Язык кода:javascript
копировать
<configuration>
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>hadoopWyc</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>

8.3 Распространение файлов

После изменения пяти вышеуказанных файлов скопируйте файлы Hadoop с узла HadoopWyc на каждый узел. Выполните следующую команду на узле HadoopWyc:

Язык кода:javascript
копировать
cd /usr/local
sudo rm -r ./hadoop/tmp     # удалить Hadoop временные файлы
sudo rm -r ./hadoop/logs/*   # удалить файл журнала
tar -zcf ~/hadoop.master.tar.gz hadoop  # Сначала сжать, а потом копировать
cd ~
scp hadoop.master.tar.gz hadoopWyc2:/home/
scp hadoop.master.tar.gz hadoopWyc3:/home/

существовать其他hadoopWyc2&3узел将接收的压缩文件解压出来,и предоставить разрешения,Команда выглядит следующим образом:

Язык кода:javascript
копировать
sudo rm -r /usr/local/hadoop    # Удалить старый (если он существует)
sudo tar -zxf /home/hadoop.master.tar.gz -C /usr/local
sudo chown -R wyc /usr/local/hadoop

8.4 Инициализация Hadoop

Инициализацию HDFS можно выполнить только на главном узле.

Язык кода:javascript
копировать
cd /usr/local/hadoop
./bin/hdfs namenode -format

Если во время процесса инициализации вы видите информацию в красном поле выше, если она успешно отформатирована, это означает, что инициализация прошла успешно.

8.5 Запуск кластера Hadoop

Выполните следующую команду на узле HadoopWyc:

Язык кода:javascript
копировать
cd /usr/local/hadoop
./sbin/start-dfs.sh
./sbin/start-yarn.sh
./sbin/mr-jobhistory-daemon.sh start historyserver
#Таким образом, мы можем открыть WEB сервера истории на порту 19888 соответствующего компьютера. Интерфейс пользовательского интерфейса. Вы можете просмотреть статус выполненных работ

Посмотреть процессы, запущенные каждым узлом, можно через jps. Если он запущен правильно согласно настройкам в этой статье, вы увидите на узле HadoopWyc следующие процессы:

Процесс узла HadoopWyc2:

Процесс узла HadoopWyc3:

Когда Hadoop-3.1.0 запускает кластер Hadoop, может быть сообщено о следующей ошибке:

Язык кода:javascript
копировать
root@hadoopWyc3:/usr/local/hadoop# ./sbin/start-dfs.sh
Starting namenodes on [hadoopWyc]
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
Starting datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
Starting secondary namenodes [hadoopWyc2]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.

ссылка:решать Hadoop запускать ERROR: Attempting to operate on hdfs namenode as root метод решать

На данный момент полностью распределенное развертывание Hadoop завершено.

Заявление об авторских правах: Содержание этой статьи было добровольно предоставлено пользователем Интернета.,Мнения, выраженные в данной статье, принадлежат исключительно автору. Этот сайт предоставляет только услуги по хранению информации.,нет собственности,Никакая соответствующая юридическая ответственность не предполагается. Если вы обнаружите на этом сайте какое-либо подозрительное нарушение авторских прав/незаконный контент,, Пожалуйста, отправьте электронное письмо на Сообщите, после проверки этот сайт будет немедленно удален.

Издатель: Лидер стека программистов полного стека, укажите источник для перепечатки: https://javaforall.cn/219152.html Исходная ссылка: https://javaforall.cn

boy illustration
Учебное пособие по SpringBoot (14) | SpringBoot интегрирует Redis (наиболее полный во всей сети)
boy illustration
Подробное объяснение механизма подтверждения выпуска сообщений RabbitMQ.
boy illustration
На этот раз полностью поймите протокол ZooKeeper.
boy illustration
Реализуйте загрузку файлов с использованием минимального WEB API.
boy illustration
Демо1 Laravel5.2 — генерация и хранение URL-адресов
boy illustration
Spring boot интегрирует Kafka и реализует отправку и потребление информации (действительно при личном тестировании)
boy illustration
Мысли о решениях по внутренней реализации сортировки методом перетаскивания
boy illustration
Междоменный доступ к конфигурации nginx не может вступить в силу. Междоменный доступ к странице_Page
boy illustration
Как написать текстовый контент на php
boy illustration
PHP добавляет текстовый водяной знак или водяной знак изображения к изображениям – метод инкапсуляции
boy illustration
Интерпретация быстрой таблицы (TLB)
boy illustration
Интерфейс WeChat API (полный) — оплата WeChat/красный конверт WeChat/купон WeChat/магазин WeChat/JSAPI
boy illustration
Преобразование Java-объекта в json string_complex json-строки в объект
boy illustration
Примените сегментацию слов jieba (версия Java) и предоставьте пакет jar
boy illustration
matinal: Самый подробный анализ управления разрешениями во всей сети SAP. Все управление разрешениями находится здесь.
boy illustration
Коротко расскажу обо всем процессе работы алгоритма сборки мусора G1 --- Теоретическая часть -- Часть 1
boy illustration
[Спецификация] Результаты и исключения возврата интерфейса SpringBoot обрабатываются единообразно, поэтому инкапсуляция является элегантной.
boy illustration
Интерпретация каталога веб-проекта Flask
boy illustration
Что такое подробное объяснение файла WSDL_wsdl
boy illustration
Как запустить большую модель ИИ локально
boy illustration
Подведение итогов десяти самых популярных веб-фреймворков для Go
boy illustration
5 рекомендуемых проектов CMS с открытым исходным кодом на базе .Net Core
boy illustration
Java использует httpclient для отправки запросов HttpPost (отправка формы, загрузка файлов и передача данных Json)
boy illustration
Руководство по развертыванию Nginx в Linux (Centos)
boy illustration
Интервью с Alibaba по Java: можно ли использовать @Transactional и @Async вместе?
boy illustration
Облачный шлюз Spring реализует примеры балансировки нагрузки и проверки входа в систему.
boy illustration
Используйте Nginx для решения междоменных проблем
boy illustration
Произошла ошибка, когда сервер веб-сайта установил соединение с базой данных. WordPress предложил решение проблемы с установкой соединения с базой данных... [Легко понять]
boy illustration
Новый адрес java-библиотеки_16 топовых Java-проектов с открытым исходным кодом, достойных вашего внимания! Обязательно к просмотру новичкам
boy illustration
Лучшие практики Kubernetes для устранения несоответствий часовых поясов внутри контейнеров