Skip to content

Домашняя работа по дисциплине "Интеллектуальные системы и технологии".

License

Notifications You must be signed in to change notification settings

Qvineox/hadoop-hdfs-lysak

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

hadoop-hdfs-lysak

Домашние работы по дисциплине "Интеллектуальные системы и технологии".

Описание работы

Для выполнения задания я выбрал базовый образ Ubuntu Server 20.04.4 Focal Fossa. Образ для VirtualBox с сайта osboxes.org.

Использую сетевой мост в качестве адаптера (получаю IP в реальной сети), подключаюсь из SSH-клиента MobaXTerm для удобства работы с файлами, редактирую в JetBrains DataSpell.

Я использую образ openjdk:11, основанный на ядре OracleLinux. Основное преимущество для данной работы заключается в предустановленном OpenJDK11.

Изначально я использовал alpine:latest, но не получилось, т.к. возникли сложности с установкой JAVA_PATH.

Домашнее задание №1. Выполнение

  1. Установка SSH-сервера для подключения к машине;
sudo apt update
sudo apt install openssh-server
sudo systemctl status ssh
sudo ufw allow ssh
  1. Установка необходимого ПО, скачивание Hadoop 3.3.4 (последняя версия) и JDK 11.0.17 (JAVA 11) переношу по SSH;
wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
  1. Создаю файловую структура для проекта;
  2. Загрузка необходимых файлов конфигурации hadoop для базовой node (core-site.xml и hadoop-env.sh);
  3. Конфигурация namenode и datanode;
  4. Написание и сборка основного Dockerfile (оставил комментарии от предыдущих попыток);
sudo docker build . -t base-image:1
  1. Написание и сборка datanode Dockerfile и namenode Dockerfile;
sudo docker build hdfs-nodes/namenode -t namenode:1
sudo docker build hdfs-nodes/datanode -t datanode:1
  1. После успешной сборки 2 конечных контейнеров можно произвести запуск кластера, создав сеть hadoop_network и запуская последовательно все node:
sudo docker network create hadoop_network
sudo docker run -d --net hadoop_network --hostname namenode-master -p 9870:9870 -p 50030:50030 -p 8020:8020 --name namenode namenode:1
sudo docker run -d --net hadoop_network --name datanode-1 datanode:1
sudo docker run -d --net hadoop_network --name datanade-2 datanode:1
sudo docker run -d --net hadoop_network --name datanode-3 datanode:1
  1. В конечном этоге получается 1 namenode и 3 datanode. Демонстрация на скриншоте: hadoop-working.png
  2. Для удобства написал скрипт для запуска start.sh;
  3. Также для полноценной работы создал docker-compose.yml (на данный момент не совсем корректно работает);
  4. Скриншот запуска кластера из 4 worker:

img.png

Домашнее задание №2

  1. С помощью SSH, подключаюсь к namenode и запускаю hadoop:
$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-yarn.sh
  1. В качестве задачи выполню стандартный скрипт из библиотеки примеров, а именно wordcount:
mkdir input
echo "First test sentence Flower Congo" >input/file2.txt
echo "Second test sentence Pineapple Flower Coating" >input/file1.txt
hadoop fs -mkdir -p input
hdfs dfs -put ./input/* input
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-3.3.4-sources.jar org.apache.hadoop.examples.WordCount input output
  1. Был получен следующий вывод в консоль:
input file1.txt:
Second test sentence Pineapple Flower Coating

input file2.txt:
First test sentence Flower Congo

wordcount output:
Coating 1
Congo   1
First   1
Flower  2
Pineapple       1
Second  1
sentence        2
test    2

Дополнительно

Также хотел показать HDFS клиент для переноса файлов, который я делал на 3 курсе.

About

Домашняя работа по дисциплине "Интеллектуальные системы и технологии".

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published