Портал официального руководства 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
указаноsecondaryNameNode
http адрес доступа и номер порта, потому что при планировании мы будем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
- выполнить ввод в
hadoo
p'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