Недавно кто-то спросил, можно ли опубликовать некоторые знания, связанные с большими данными. Нет проблем! Сегодня давайте начнем со среды установки и создадим собственную среду обучения.
Три способа создания Hadoop и использования сред:
- Автономная версия подходит для разработки и отладки;
- Псевдораспределение подходит для моделирования кластерного обучения;
- Полностью распространяется для производственных сред.
Этот документ описывает, как создать полностью распределенный кластер Hadoop, главный узел, два узла данных.
предпосылки
- Подготовить 3 сервера
虚拟机
,物理机
,云上实例
В этой статье можно использоватьOpenstack
Три экземпляра в частном облаке установлены и развернуты.
- Операционная система и версия программного обеспечения
сервер | система | ОЗУ | IP | планирование | JDK | HADOOP |
---|---|---|---|---|---|---|
node1 | Ubuntu 18.04.2 LTS | 8G | 10.101.18.21 | master | JDK 1.8.0_222 | hadoop-3.2.1 |
node2 | Ubuntu 18.04.2 LTS | 8G | 10.101.18.8 | slave1 | JDK 1.8.0_222 | hadoop-3.2.1 |
node3 | Ubuntu 18.04.2 LTS | 8G | 10.101.18.24 | slave2 | JDK 1.8.0_222 | hadoop-3.2.1 |
- Установите JDK на три машины
Поскольку Hadoop написан на языке Java, на компьютер необходимо установить среду Java, я используюJDK 1.8.0_222
(рекомендуется Sun JDK)
установить команду
sudo apt install openjdk-8-jdk-headless
Чтобы настроить переменные среды JAVA, добавьте следующее содержимое в конец файла .profile в корневом каталоге текущего пользователя:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
использоватьsource
приказ вступить в силу немедленно
source .profile
- конфигурация хоста
Измените файл hosts трех серверов.
vim /etc/hosts
#添加下面内容,根据个人服务器IP配置
10.101.18.21 master
10.101.18.8 slave1
10.101.18.24 slave2
Конфигурация входа без пароля
- сгенерировать ключ
ssh-keygen -t rsa
- Мастер входит в подчиненный без пароля
ssh-copy-id -i ~/.ssh/id_rsa.pub master
ssh-copy-id -i ~/.ssh/id_rsa.pub slave1
ssh-copy-id -i ~/.ssh/id_rsa.pub slave2
- Тестовый вход без пароля
ssh master
ssh slave1
ssh slave2
Сборка Hadoop
Сначала мы загружаем пакет Hadoop на главный узел, затем изменяем конфигурацию, а затем копируем ее на другие подчиненные узлы для небольшой модификации.
- Загрузите установочный пакет и создайте каталог Hadoop.
#下载
wget http://http://apache.claz.org/hadoop/common/hadoop-3.2.1//hadoop-3.2.1.tar.gz
#解压到 /usr/local 目录
sudo tar -xzvf hadoop-3.2.1.tar.gz -C /usr/local
#修改hadoop的文件权限
sudo chown -R ubuntu:ubuntu hadoop-3.2.1.tar.gz
#重命名文件夹
sudo mv hadoop-3.2.1 hadoop
- Настройте переменные среды Hadoop главного узла.
Так же, как и при настройке переменных среды JDK, отредактируйте.profile
файл, добавьте переменные среды Hadoop:
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
воплощать в жизньsource .profile
сделать его эффективным немедленно
- Настройте главный узел
Каждый компонент Hadoop настраивается с помощью XML-файлов, а файлы конфигурации размещаются в/usr/local/hadoop/etc/hadoop
В каталоге:
- core-site.xml: настройка общих свойств, таких как параметры ввода-вывода, обычно используемые HDFS и MapReduce и т. д.
- hdfs-site.xml: конфигурация демона Hadoop, включая namenode, вторичный namenode и datanode и т. д.
- mapred-site.xml: конфигурация демона MapReduce
- yarn-site.xml: конфигурация, связанная с планированием ресурсов.
а. редактироватьcore-site.xml
файл со следующими изменениями:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
Описание параметра:
- fs.defaultFS: файловая система по умолчанию, этот параметр необходим клиентам HDFS для доступа к HDFS.
- hadoop.tmp.dir: Укажите временный каталог для хранения данных Hadoop. Другие каталоги будут основаны на этом пути. Рекомендуется установить его в место с достаточным пространством, а не по умолчанию /tmp
Если не настроен
hadoop.tmp.dir
параметр, система использует временный каталог по умолчанию: /tmp/hadoo-hadoop. И этот каталог будет удаляться после каждого перезапуска, форматировать надо заново, иначе будет ошибка.
б. Изменитьhdfs-site.xml
, модификация выглядит следующим образом:
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/usr/local/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/local/hadoop/hdfs/data</value>
</property>
</configuration>
Описание параметра:
- dfs.replication: количество реплик блока данных
- dfs.name.dir: указывает каталог хранения файлов узла namenode.
- dfs.data.dir: указывает каталог хранения файлов узла данных.
в) изменитьmapred-site.xml
, модификация выглядит следующим образом:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>$HADOOP_HOME/share/hadoop/mapreduce/*:$HADOOP_HOME/share/hadoop/mapreduce/lib/*</value>
</property>
</configuration>
г. Изменитьyarn-site.xml
, модификация выглядит следующим образом:
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME</value>
</property>
</configuration>
е. Изменитьworkers
, модификация выглядит следующим образом:
slave1
slave2
Настроить рабочие узлы
- Настройка подчиненных узлов
Упакуйте Hadoop, настроенный на главном узле, и отправьте его на два других узла:
# 打包hadoop包
tar -cxf hadoop.tar.gz /usr/local/hadoop
# 拷贝到其他两个节点
scp hadoop.tar.gz ubuntu@slave1:~
scp hadoop.tar.gz ubuntu@slave2:~
Использование пакетов Hadoop на других узлах для/usr/local
содержание
sudo tar -xzvf hadoop.tar.gz -C /usr/local/
Настройте переменные среды Hadoop узлов Slave1 и Slaver2:
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
запустить кластер
- Отформатируйте файловую систему HDFS
Войдите в каталог Hadoop узла Master и выполните следующие операции:
bin/hadoop namenode -format
Отформатируйте namenode, операция, выполняемая до первого запуска службы, и ее не нужно выполнять позже.
Перехватить часть лога (см.строка 5В журнале указано, что форматирование прошло успешно):
2019-11-11 13:34:18,960 INFO util.GSet: VM type = 64-bit
2019-11-11 13:34:18,960 INFO util.GSet: 0.029999999329447746% max memory 1.7 GB = 544.5 KB
2019-11-11 13:34:18,961 INFO util.GSet: capacity = 2^16 = 65536 entries
2019-11-11 13:34:18,994 INFO namenode.FSImage: Allocated new BlockPoolId: BP-2017092058-10.101.18.21-1573450458983
2019-11-11 13:34:19,010 INFO common.Storage: Storage directory /usr/local/hadoop/hdfs/name has been successfully formatted.
2019-11-11 13:34:19,051 INFO namenode.FSImageFormatProtobuf: Saving image file /usr/local/hadoop/hdfs/name/current/fsimage.ckpt_0000000000000000000 using no compression
2019-11-11 13:34:19,186 INFO namenode.FSImageFormatProtobuf: Image file /usr/local/hadoop/hdfs/name/current/fsimage.ckpt_0000000000000000000 of size 401 bytes saved in 0 seconds .
2019-11-11 13:34:19,207 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
2019-11-11 13:34:19,214 INFO namenode.FSImage: FSImageSaver clean checkpoint: txid=0 when meet shutdown.
- Запустите кластер Hadoop
sbin/start-all.sh
Проблемы и решения, возникающие в процессе запуска:
А. Ошибка:master: rcmd: socket: Permission denied
решать:
воплощать в жизньecho "ssh" > /etc/pdsh/rcmd_default
б. Ошибка:JAVA_HOME is not set and could not be found.
решать:
Измените три узлаhadoop-env.sh
, добавьте следующие переменные среды JAVA
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
- Используйте команду jps для просмотра текущего статуса
Вывод выполнения мастер-узла:
19557 ResourceManager
19914 Jps
19291 SecondaryNameNode
18959 NameNode
Вход выполнения подчиненного узла:
18580 NodeManager
18366 DataNode
18703 Jps
- Просмотр состояния кластера Hadoop
hadoop dfsadmin -report
Посмотреть Результаты:
Configured Capacity: 41258442752 (38.42 GB)
Present Capacity: 5170511872 (4.82 GB)
DFS Remaining: 5170454528 (4.82 GB)
DFS Used: 57344 (56 KB)
DFS Used%: 0.00%
Replicated Blocks:
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
Missing blocks (with replication factor 1): 0
Low redundancy blocks with highest priority to recover: 0
Pending deletion blocks: 0
Erasure Coded Block Groups:
Low redundancy block groups: 0
Block groups with corrupt internal blocks: 0
Missing block groups: 0
Low redundancy blocks with highest priority to recover: 0
Pending deletion blocks: 0
-------------------------------------------------
Live datanodes (2):
Name: 10.101.18.24:9866 (slave2)
Hostname: slave2
Decommission Status : Normal
Configured Capacity: 20629221376 (19.21 GB)
DFS Used: 28672 (28 KB)
Non DFS Used: 16919797760 (15.76 GB)
DFS Remaining: 3692617728 (3.44 GB)
DFS Used%: 0.00%
DFS Remaining%: 17.90%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Mon Nov 11 15:00:27 CST 2019
Last Block Report: Mon Nov 11 14:05:48 CST 2019
Num of Blocks: 0
Name: 10.101.18.8:9866 (slave1)
Hostname: slave1
Decommission Status : Normal
Configured Capacity: 20629221376 (19.21 GB)
DFS Used: 28672 (28 KB)
Non DFS Used: 19134578688 (17.82 GB)
DFS Remaining: 1477836800 (1.38 GB)
DFS Used%: 0.00%
DFS Remaining%: 7.16%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Mon Nov 11 15:00:24 CST 2019
Last Block Report: Mon Nov 11 13:53:57 CST 2019
Num of Blocks: 0
- закрыть Hadoop
sbin/stop-all.sh
Просмотр состояния кластера Hadoop в Интернете
Введите в браузереhttp://10.101.18.21:9870, результат следующий:
Введите в браузереhttp://10.101.18.21:8088, результат следующий:
Обратите внимание на общедоступный номер:ЯВА 9:30 класс,Ответить【материал] Получайте самую последнюю техническую информацию о 2T и делитесь технологиями каждый день, вместе мы добьемся прогресса, спасибо!