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

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

Портал официального руководства Hadoopпортал

На данный момент (8 января 2020 г.) последней версией Hadoop является3.2.1, эта статья основана на3.2.1Установка развертывания

本篇文章只介绍了如何安装和配置范围从几个节点到具有数千个节点的超大型Hadoop集群。
要快速体验使用Hadoop,可能只需要将其安装在单台服务器上。
本篇文章不涉及hadoop安全或高可用性等高级话题。

Подготовка сервера

Серверное планирование, четыре сервера предоставляются, ОСcentos 7

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

hostnamectl set-hostname centos-x

xдля каждого нашего сервера

Завершите наш хост следующим образом

Имя процессора IP служба предварительной записи
centos-1 10.211.55.11 DataNode NodeManager NameNode
centos-2 10.211.55.12 DataNode NodeManager SecondaryNameNode
centos-3 10.211.55.13 DataNode NodeManager ResourceManager
centos-4 10.211.55.14 DataNode NodeManager HistoryServer

服务器ip

服务器服务分配

Установите openJDK-8

Установить jdk через yum

yum update
yum install java-1.8.0-openjdk-devel -y

Изменить переменные среды

vim /etc/profile

добавить в конце

export JAVA_HOME=$(dirname $(dirname $(readlink $(readlink $(which javac)))))
export PATH=$JAVA_HOME/bin:$PATH

Настроить статический IP-адрес сервера

静态IP

vim /etc/sysconfig/network-scripts/ifcfg-enp0s5

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

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static" # 修改dhcp 为 static
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="enp0s5"
UUID="e2bda9d6-dc4f-4513-adbc-fdf3a1e2f384"
DEVICE="enp0s5"
ONBOOT="yes"

# 新增
GATEWAY=10.211.55.1 # 修改网关,虚拟机需要注意修改nat
IPADDR=10.211.55.12 # 分配IP地址
NETMASK=255.255.255.0 # 子网掩码
DNS1=223.5.5.5 # 使用阿里公共DNS1
DNS2=223.6.6.6 # 使用阿里公共DNS2

добавить пользователя dhfs

В целом рекомендуется запускать HDFS и YARN от имени отдельных пользователей.

В большинстве установок процесс HDFS выполняется как «hdfs». YARN обычно использует учетную запись «yarn».

adduser hdfs
passwd hdfs # 修改密码

Настройте вход без пароля SSH

Все четыре сервера настроены

ssh-keygen -t rsa
  1. назначить ssh-ключ
ssh-copy-id centos-1
ssh-copy-id centos-2
ssh-copy-id centos-3
ssh-copy-id centos-4

Установите и разверните Hadoop

переключиться на пользователя hdfs

su - hdfs

скачать

curl http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-3.2.1/hadoop-3.2.1.tar.gz -O

распаковать

Распаковать прямо здесь/usr/local/Вниз

tar -zxf hadoop-3.2.1.tar.gz  -C /usr/local/hadoop-3.2.1

Изменить переменные среды

sudo vim /etc/profile

Измените исходную конфигурацию на

export JAVA_HOME=$(dirname $(dirname $(readlink $(readlink $(which javac)))))
export HADOOP_HOME=/usr/local/hadoop-3.2.1

export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH

Изменить настройку

Здесь мы входим$HADOOP_HOMEзапуск папки

mkdir -p $HADOOP_HOME/hdfs/data
mkdir -p $HADOOP_HOME/tmp

Настроить hadoop-env.sh

sudo vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh

добавить или изменить

export JAVA_HOME=$(dirname $(dirname $(readlink $(readlink $(which javac)))))

Настройте core-site.xml

vim etc/hadoop/core-site.xml

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

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://10.211.55.11:4000</value>
        <description>HDFS的URI,文件系统://namenode标识:端口号</description>
    </property>
    
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop-3.2.1/tmp</value>
        <description>namenode上本地的hadoop临时文件夹</description>
    </property>

</configuration>

fs.defaultFSзаNameNodeадрес г.hadoop.tmp.dirзаhadoopАдрес временного каталога по умолчаниюNameNodeа такжеDataNodeФайлы данных будут храниться в соответствующем подкаталоге этого каталога.

настроить hdfs-site.xml

vim etc/hadoop/hdfs-site.xml
<configuration>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>10.211.55.12:50090</value>
    </property>
    <property>
        <name>dfs.http.address</name>
        <value>10.211.55.11:50070</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop-3.2.1/hdfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop-3.2.1/hdfs/data</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
</configuration>

dfs.namenode.secondary.http-addressуказаноsecondaryNameNodehttp адрес доступа и номер порта, потому что при планировании мы будемcentos-2запланировано наSecondaryNameNodeсервер.

dfs.http.addressНастроено по умолчаниюdfsАдрес, некоторые серверы не нужно настраивать, я пробовал и должен добавить, иначе последующие веб-страницы не открываются.dfs.namenode.name.dirУкажите имя папки,dfs.datanode.data.dirУкажите папку данныхdfs.datanode.data.dirУказываем количество реплик, как правило меньше количества серверов, задаем как3

Настроить воркеров

существуетhadoop2.xпозвонил вslaves,существует3.xПереименовано в версииworkers. используется для указанияHDFSкак делаDataNodeузел, и каждый узел используетip地址или主机名, разделенные символами новой строки.

vim etc/hadoop/workers

Здесь мы используем имя хоста

centos-1
centos-2
centos-3
centos-4

Настройте yarn-site.xml

vim etc/hadoop/yarn-site.xml

Конфигурация выглядит следующим образом

<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>centos-3</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>106800</value>
  </property>
</configuration>

Использовать по плануcentos-3в видеresourcemanagerиспользоватьyarn.log-aggregation-enableВключить агрегацию журналов,yarn.log-aggregation.retain-secondsНастройте максимальное время хранения агрегированных журналов в HDFS.

Настройте mapred-site.xml

vim 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>
    
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>centos-4:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>centos-4:19888</value>
    </property>
</configuration>

mapreduce.framework.nameнастраиватьmapreduceЗадания выполняются на пряже.mapreduce.jobhistory.addressустановленmapreduceСервер истории установлен вcentos-4начальство.mapreduce.jobhistory.webapp.addressзаключается в установке адреса веб-страницы и номера порта сервера истории.yarn.app.mapreduce.am.env,mapreduce.map.env,mapreduce.reduce.envнеобходимо установить наHADOOP_MAPRED_HOME=${HADOOP_HOME}, иначе будет ошибка, что пакет jar не найден при запуске программы yarn.

запустить кластер хауп

После выполнения всей необходимой настройки, описанной выше, распространите файл на все серверы.HADOOP_CONF_DIRПод содержанием(/user/local). Этот каталог должен быть одним и тем же каталогом на всех компьютерах.

формат

Чтобы запустить кластер Hadoop, нужно запустить одновременноHDFSа такжеYARNкластер. первая загрузкаHDFSчас,долженОтформатируйте его. Отформатируйте новую распределенную файловую систему какhdfs.

$HADOOP_HOME/bin/hdfs namenode -format <群集名称>

Имя кластера можно оставить пустым, не случайно, после завершения выполнения.$HADOOP_HOME/hdfs/dataЧто-то в этом есть.

Запустить HDFS

Если настроеноworkersа такжеssh互信мы можем

$HADOOP_HOME/sbin/start-dfs.sh

Начать пряжу

Если настроены рабочие и взаимное доверие ssh, мы можем

$HADOOP_HOME/sbin/start-yarn.sh

Если не настроено вышеworkersа такжеssh互信мы можем

  1. запускатьnamenode
$HADOOP_HOME/bin/hdfs --daemon start namenode
  1. запускатьDataNode
$HADOOP_HOME/bin/hdfs --daemon start datanode

Запустить диспетчер узлов

планирование вcentos-4, по этому мыcentos-4выполнить на

$HADOOP_HOME/bin/yarn --daemon start nodemanager

Запустить диспетчер ресурсов

планирование вcentos-3, по этому мыcentos-3выполнить на

$HADOOP_HOME/bin/yarn --daemon start resourcemanager

Запустить сервер истории

планирование вcentos-4, по этому мыcentos-4выполнить на

$HADOOP_HOME/bin/mapred --daemon start historyserver

Просмотр веб-страницы HDFS

родыcentosиз50070порт:http://centos-1:50070/ HDFS Web

Просмотр веб-страницы YARN

родыcentos-3из8088порт:http://centos-3:8088/ YARN Web

Просмотр исторических веб-страниц

родыcentos-4из19888порт:http://centos-4:19888/

历史WEB

контрольная работа

Для тестирования мы используемwordcountтестировать

  1. создать новый файл
sudo vim /opt/word.txt
  1. текстовое содержание
hadoop mapreduce hive
hbase spark storm
sqoop hadoop hive
spark hadoop
  1. новыйhadoopпапкаdemo
hadoop fs -mkdir /demo
  1. запись в файл
hdfs dfs -put /opt/word.txt /demo/word.txt
  1. выполнить ввод вhadoop's/output
yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar wordcount /demo/word.txt /output
  1. Просмотр списка файлов
hdfs dfs -ls /output
Found 2 items
-rw-r--r--   3 hdfs supergroup          0 2020-01-07 02:20 /output/_SUCCESS
-rw-r--r--   3 hdfs supergroup         60 2020-01-07 02:20 /output/part-r-00000
  1. Посмотреть содержимое файла
hdfs dfs -cat /output/part-r-00000
2020-01-07 16:40:19,951 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
hadoop	3
hbase	1
hive	2
mapreduce	1
spark	2
sqoop	1
storm	1