Конфигурация псевдо-распределенной схемы
В большинстве случаев Hadoop используется в кластерном окружении, то есть нужно развернуть Hadoop на нескольких узлах. В то же время Hadoop может также работать на одном узле в псевдо-распределенной схеме, имитируя многоузловые сценарии с помощью нескольких независимых Java-процессов. В начальном этапе обучения не нужно тратить много ресурсов на создание разных узлов. Поэтому в этом разделе и последующих главах будет в основном использоваться псевдо-распределенная схема для развертывания Hadoop "кластера".
Создание директорий
Для начала создайте директории namenode
и datanode
в домашней директории пользователя Hadoop. Выполните команду ниже для создания этих директорий:
rm -rf ~/hadoopdata
mkdir -p ~/hadoopdata/hdfs/{namenode,datanode}
Затем вам нужно изменить конфигурационные файлы Hadoop, чтобы он работал в псевдо-распределенной схеме.
Редактирование core-site.xml
Откройте файл core-site.xml
с помощью текстового редактора в терминале:
vim /home/hadoop/hadoop/etc/hadoop/core-site.xml
В конфигурационном файле измените значение тега configuration
на следующее содержимое:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
Конфигурационный параметр fs.defaultFS
используется для указания расположения файловой системы, которую по умолчанию использует кластер:
Сохраните файл и выйдите из vim
после редактирования.
Редактирование hdfs-site.xml
Откройте другой конфигурационный файл hdfs-site.xml
:
vim /home/hadoop/hadoop/etc/hadoop/hdfs-site.xml
В конфигурационном файле измените значение тега configuration
на следующее:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>file:///home/hadoop/hadoopdata/hdfs/namenode</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>file:///home/hadoop/hadoopdata/hdfs/datanode</value>
</property>
</configuration>
Этот конфигурационный параметр используется для указания количества копий файлов в HDFS, по умолчанию это 3
. Поскольку мы развернули его в псевдо-распределенном режиме на одном узле, его изменяем на 1
:
Сохраните файл и выйдите из vim
после редактирования.
Редактирование hadoop-env.sh
Далее отредактируйте файл hadoop-env.sh
:
vim /home/hadoop/hadoop/etc/hadoop/hadoop-env.sh
Измените значение JAVA_HOME
на фактическое расположение установленного JDK, то есть /usr/lib/jvm/java-11-openjdk-amd64
.
Примечание: Вы можете использовать команду echo $JAVA_HOME
для проверки фактического расположения установленного JDK.
Сохраните файл и выйдите из редактора vim
после редактирования.
Редактирование yarn-site.xml
Далее отредактируйте файл yarn-site.xml
:
vim /home/hadoop/hadoop/etc/hadoop/yarn-site.xml
Добавьте следующее в тег configuration
:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
Сохраните файл и выйдите из редактора vim
после редактирования.
Редактирование mapred-site.xml
Наконец, вам нужно отредактировать файл mapred-site.xml
.
Откройте файл с помощью редактора vim
:
vim /home/hadoop/hadoop/etc/hadoop/mapred-site.xml
Аналогично добавьте следующее в тег configuration
:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/home/hadoop/hadoop</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/home/hadoop/hadoop</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/home/hadoop/hadoop</value>
</property>
</configuration>
Сохраните файл и выйдите из редактора vim
после редактирования.