При изучении систем больших данных построение Hadoop является базовой операцией. Многие приложения верхнего уровня для больших данных полагаются на HDFS. В этой статье представлен метод построения кластера Hadoop.
Необходимое программное обеспечение и среда:
- кластер локальных серверов
- openjdk1.8
- hadoop-2.9.2
Ранее я написал метод построения локального кластера серверов, при необходимости вы можете обратиться сюда, чтобы построить локальный кластер серверов.
Подготовка окружающей среды
Прежде чем приступить к настройке Hadoop, необходимо выполнить еще несколько подготовительных действий.
Во-первых, отключите брандмауэр сервера и запретите загрузку, чтобы не было необходимости контролировать порты на каждом сервере.
$ systemctl stop firewalld.service
$ systemctl disable firewalld.service
Затем вам нужно определить имя хоста сервера.В кластере используйте имя хоста напрямую вместо машины для работы.В качестве примера возьмем сервер с IP 192.168.56.3 (это адрес моего кластера серверов, в зависимости на IP-конфигурации вашего собственного кластера):
$ vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=bigdata1
GATEWAY=192.168.56.2
Также отредактируйте два других сервера и назовите их bigdata2 и bigdata3.
Затем отредактируйте каждый сервер/etc/hosts
файл, добавьте имя хоста в IP-сопоставление:
$ vi /etc/hosts
192.168.56.3 bigdata1
192.168.56.4 bigdata2
192.168.56.5 bigdata3
Наконец, чтобы легко получить доступ к каждому серверу на хосте, также отредактируйте файл hosts хоста:
$ vi /etc/hosts
192.168.56.3 bigdata1
192.168.56.4 bigdata2
192.168.56.5 bigdata3
На этом настройка кластера серверов завершена, и следующим шагом будет настройка среды Hadoop.
Hadoop также зависит от среды Java, поэтому сначала необходимо настроить JDK.В этой статье используется openjdk1.8.
Все программное обеспечение в этой статье будет установлено на/opt/module
каталог, если такого каталога нет, создайте его.
$ mkdir /opt/module
Вы можете скопировать загруженный jdk с хоста на сервер с помощью команды scp, а затем извлечь его в целевой каталог:
$ tar -zxvf openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz -C /opt/module/
После завершения распаковки настройте переменные среды:
$ vi /etc/profile
#Java config
export JAVA_HOME=/opt/module/java-se-8u41-ri
export PATH=$PATH:$JAVA_HOME/bin
$ source /etc/profile
$ java -version
Openjdk version "1.8.0_41"
OpenJDK Runtime Environment (build 1.8.0_41-b04)
OpenJDK 64-Bit Server VM (build 25.40-b25, mixed mode)
Настройка JDK завершена.
Затем используйте команду scp, чтобы скопировать установочный пакет hadoop на сервер и извлечь его в каталог /opt/module:
$ tar -zxvf hadoop-2.9.2.tar.gz -C /opt/module/
Также настройте каталог среды
$ vi /etc/profile
#Hadoop config
export HADOOP_HOME=/opt/module/hadoop-2.9.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
$ source /etc/profile
$ hadoop version
Hadoop 2.9.2
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r 826afbeae31ca687bc2f8471dc841b66ed2c6704
Compiled by ajisaka on 2018-11-13T12:42Z
Compiled with protoc 2.5.0
From source with checksum 3a9939967262218aa556c684d107985
This command was run using /opt/module/hadoop-2.9.2/share/hadoop/common/hadoop-common-2.9.2.jar
Установка Hadoop завершена, на данный момент установлено программное обеспечение для одной машины.
Было бы слишком громоздко настраивать каждую машину таким образом.Вы можете использовать rsync для копирования установленного программного обеспечения непосредственно на другие машины.Конечно, вы также можете использовать команду scp для копирования, но команда scp каждый раз создает полную копию Во многих случаях скорость копирования будет очень низкой, а rsync является добавочной копией, копирующей только те файлы, которые были изменены, поэтому скорость копирования будет очень высокой.
Если это программное обеспечение недоступно в вашей системе, установите его с помощью следующей команды:
$ yum install rsync
После завершения установки используйте rsync для синхронизации установленного программного обеспечения с двумя другими серверами:
$ rsync -rvl /opt/module/ root@bigdata2:/opt/module
$ rsync -rvl /opt/module/ root@bigdata3:/opt/module
Затем отдельно настройте переменные окружения (на самом деле файл /etc/profile тоже можно синхронизировать с другим сервером. Для демонстрации он напрямую не синхронизируется):
$ vi /etc/profile
#Java config
export JAVA_HOME=/opt/module/java-se-8u41-ri
export PATH=$PATH:$JAVA_HOME/bin
#Hadoop config
export HADOOP_HOME=/opt/module/hadoop-2.9.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
$ source /etc/profile
На этом установка всех программ завершена.
Кластерное планирование
После завершения базовой настройки среды необходимо спланировать серверы в кластере, чтобы каждый сервер выполнял разные роли.
Конкретный план таков: самый важный NameNode размещается на первом сервере, ResourceManager пряжи размещается на втором сервере, а SecondaryNamenode размещается на третьем сервере.
Конкретный план выглядит следующим образом:
Конфигурация кластера
Далее можно настроить кластер по вышеописанному плану, взяв за пример сервер с IP 192.168.56.3.
Все файлы конфигурации для Hadoop находятся вetc/hadoop
Под содержанием:
$ cd /opt/module/hadoop-2.9.2/etc/hadoop
Сначала настройте основной файл Hadoop, откройтеcore-site.xml
, добавьте следующую конфигурацию, чтобы определить сервер, на котором находится NameNode:
$ vi core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://bigdata1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.9.2/data/tmp</value>
</property>
затем откройте[hadoop-env.sh](http://hadoop-env.sh)
Настройте JDK:
$ vi hadoop-env.sh
export JAVA_HOME=/opt/module/java-se-8u41-ri/
Затем настройте связанные с HDFS, настройте количество сохраненных копий каждого файла и настройте сервер, на котором находится SecondaryNameNode, отредактируйтеhdfs-site.xml
документ:
$ vi hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>bigdata3:50090</value>
</property>
Затем начните настройку пряжи:
$ vi yarn-env.sh
export JAVA_HOME=/opt/module/java-se-8u41-ri/
Чтобы определить алгоритм, используемый mapreduce, и определить сервер, на котором находится ResourceManager, отредактируйтеyarn-site.xml
:
$ vi yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>bigdata2</value>
</property>
Затем настройте карту:
$ vi mapred-env.sh
export JAVA_HOME=/opt/module/java-se-8u41-ri/
Настройте задачи mapreduce для планирования через пряжу:
$ cp mapred-site.xml.template mapred-site.xml
$ vi mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
Наконец, необходимо выполнить настройку кластера, чтобы каждый сервер знал, какие серверы входят в кластер:
$ vi slaves
bigdata1
bigdata2
bigdata3
Затем синхронизируйте конфигурацию с двумя другими машинами:
$ rsync -rvl /opt/module/hadoop-2.9.2/ root@bigdata2:/opt/module/hadoop-2.9.2
$ rsync -rvl /opt/module/hadoop-2.9.2/ root@bigdata3:/opt/module/hadoop-2.9.2
Все настройки выполняются здесь.
Кластерная операция
Далее запускаем кластер, при первом запуске кластера нужно отформатировать NameNode:
$ cd /opt/module/hadoop-2.9.2
$ bin/hdfsnamenode-format
Затем запустите hdfs, чтобы начать на первом сервере (IP: 192.168.56.3):
$ sbin/start-dfs.sh
Затем запустите пряжу на втором сервере (IP: 192.168.56.4):
$ sbin/start-yarn.sh
затем посетитеhttp://192.168.56.5:50090/, если вы видите следующий интерфейс, кластер успешно запущен.
Когда вы останавливаете кластер, вы можете остановить его с помощью следующей команды:
$ sbin/stop-yarn.sh
$ sbin/stop-dfs.sh
Текст / Райджун
Обратите внимание на публичный аккаунт WeChat, пообщайтесь о других