Портал официального руководства 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
|
Установите 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-адрес сервера
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
- назначить 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互信мы можем
- запускать
namenode
$HADOOP_HOME/bin/hdfs --daemon start namenode
- запускать
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/
Просмотр веб-страницы YARN
родыcentos-3из8088порт:http://centos-3:8088/
Просмотр исторических веб-страниц
родыcentos-4из19888порт:http://centos-4:19888/
контрольная работа
Для тестирования мы используемwordcountтестировать
- создать новый файл
sudo vim /opt/word.txt
- текстовое содержание
hadoop mapreduce hive
hbase spark storm
sqoop hadoop hive
spark hadoop
- новый
hadoopпапкаdemo
hadoop fs -mkdir /demo
- запись в файл
hdfs dfs -put /opt/word.txt /demo/word.txt
- выполнить ввод в
hadoop's/output
yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar wordcount /demo/word.txt /output
- Просмотр списка файлов
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
- Посмотреть содержимое файла
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