Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа СУД 2023.docx
Скачиваний:
12
Добавлен:
30.07.2024
Размер:
1.95 Mб
Скачать

1.2 Теоретическая реализация конвейера данных средствами VirtualBox

Прежде чем писать создавать конвейер, следует определить, какие данные будут поступать на вход. В данной курсовой работе в конвейер поступит файл формата csv содержащий данные о продажах сети чайных.

Файл был предоставлен сетью чайных “Chicha San Chen”, официальным представителем франшизы в РФ является ООО «Грейс» [1.17]. Данные, представленные в этом файле, имеют 1400 записей и 9 полей:

  • id — индивидуальный номер записи;

  • data — дата записи;

  • teahouse — точка сети (название соответствует адресу);

  • receipts — количество чеков за смену;

  • cups — количество стаканов (напитков), проданных за смену;

  • hall — выручка от продажи на точке;

  • delivery — выручка от продажи в сервисе “Delivery Club”;

  • yandex — выручка от продажи в сервисе «Яндекс.Еда»;

  • score — итоговая выручка компании.

Данные в файле формата csv попадают в домашнюю директорию виртуальной машины.

Домашняя директория виртуальной машины — это директория, которая содержит файлы и настройки профиля пользователя виртуальной машины [1.11].

Домашняя директория виртуальной машины отличается от локальной директории тем, что она существует внутри виртуальной машины и содержит файлы и настройки для профиля пользователя виртуальной машины. В отличие от этого, локальная директория находится на реальной физической машине, на которой запущена виртуальная машина, и содержит файлы и настройки для профиля пользователя на этой машине. Кроме того, доступ к домашней директории виртуальной машины может быть ограничен только для пользователей этой виртуальной машины, в то время как локальная директория может быть доступна для других пользователей на реальной машине.

Затем данные необходимо загрузить в HDFS.

HDFS — это распределенная файловая система, способная хранить очень большие файлы (размером в гигабайты или терабайты) и потоки данных, работающие на оборудовании стандартного серверного оборудования [1.11].

Перемещение файла из домашней директории в HDFS может быть полезным, если мы хотим обработать эти данные с помощью инструментов Hadoop. Файлы, хранящиеся в HDFS, доступны для обработки большим количеством узлов кластера, что позволяет распараллеливать и ускорять вычисления. Кроме того, HDFS обеспечивает резервное копирование данных и восстановление при сбое узлов, что обеспечивает надежность и отказоустойчивость системы.

Существует несколько способов загрузки данных в HDFS:

  • использование команды hdfs dfs в терминале виртуальной машины;

  • использование веб-интерфейса HDFS;

  • команда mv для перемещения файлов в HDFS из домашней директории виртуальной машины;

С помощью Sqoop мы передаем данные в MariaDB.

Устанавливается Sqoop и настраивается соединение с базой данных MariaDB. Затем необходимо создать базу данных и таблицу в этой базе данных, куда впоследствии Sqoop перенесет данные из файла.

Sqoop создает временную таблицу в MariaDB и копирует данные из источника в эту временную таблицу. Далее происходит обработка и преобразование данных, если это необходимо, и Sqoop переносит данные из временной таблицы в целевую таблицу в MariaDB. По окончании импорта, Sqoop выводит отчет о выполненной операции, который включает информацию о количестве импортированных строк и времени, затраченном на импорт данных.

Данные в MariaDB с помощью Sqoop должны быть импортированы в таблицу Hive, так как Hive больше подходит для обработки больших объемов данных.

Импорт данных из MariaDB в Hive с помощью Sqoop на виртуальной машине происходит похожим на импорт в HDFS образом. Sqoop использует JDBC-драйвер для подключения к MariaDB и выгрузки данных, которые затем передаются в Hive. На основе данных в Hive нужно создать DataFrame в Spark.

DataFrame в Spark — это распределенный набор данных, организованный в столбцы, похожий на таблицу в реляционной базе данных. DataFrame можно рассматривать как логическую конструкцию, которая представляет данные, которые могут быть распределены на несколько узлов кластера для выполнения параллельных операций [1.11].

DataFrame обладает высокой производительностью благодаря распределенной обработке данных в памяти. Он позволяет выполнять различные операции над данными, такие как фильтрация, сортировка, группировка, агрегация, соединение таблиц и многое другое.

Использование DataFrame позволяет ускорить процесс обработки больших объемов данных и обеспечить эффективную работу с данными в распределенных системах, таких как Apache Spark.

Средствами Spark произвести нужные запросы для получения ответов на поставленные преподавателем вопросы.

В данной курсовой работе будут рассматриваться следующие вопросы:

  • координаты мест, где происходили метеоритные падения и количество таких падений в каждой из этих точек;

  • доля замеченных во время падения и доля уже найденных метеоритов;

  • какие года были большими на количество падений;

  • изменение количества падающих метеоритов с течением времени и доля их нахождения;

  • количество метеоритов в различных классы;

  • как масса метеорита менялась в классе с течением времени;

  • места с самыми большими метеоритными кратерами.

Необходимо написать программу на Python, в которой происходит подключение к базе данных.

Python — это высокоуровневый, интерпретируемый язык программирования общего назначения, который разрабатывается и поддерживается глобальным сообществом программистов [1.11].

Для подключения к базе данных MariaDB в виртуальной машине с помощью Python, необходимо выполнить следующие шаги:

  • установить библиотеку mysql-connector-python, которая является официальным драйвером Python для работы с MariaDB;

  • импортировать библиотеку mysql.connector;

  • создать объект подключения к базе данных, указав параметры подключения, такие как имя хоста, порт, имя пользователя и пароль;

  • создать объект курсора для выполнения запросов;

  • выполнить запросы к базе данных.

После подключения к базе данных происходит запрос 5-ти % всех строк в таблице с данными каждые 10 секунд и создание файла из полученных строк в формате CSV в папке Spool.

Эту папку должен просматривать агент Flume. Как только в ней появляется новый файл, агент Flume должен создавать на основе него событие и передавать его содержимое в Kafka.

Apache Flume — это инструмент с открытым исходным кодом, разработанный Apache Software Foundation для сбора, агрегации и перемещения больших объемов данных из разных источников в систему Hadoop для хранения и обработки. Flume может использоваться для сбора различных типов данных и пересылки их в Hadoop для последующей обработки с помощью инструментов[1.11].

Apache Kafka использует модель издатель-подписчик, которая позволяет различным приложениям и сервисам обмениваться данными, отправляя и получая сообщения в режиме реального времени.

Некоторые из основных функций Kafka включают:

  • хранение сообщений. Kafka использует разделение на темы для хранения сообщений. Каждый раздел может иметь несколько реплик для обеспечения надежности хранения сообщений;

  • высокая производительность. Kafka обеспечивает высокую производительность благодаря своей архитектуре и эффективному использованию ресурсов.

Все данные, попавшие в Kafka должны выводится в отдельном окне терминала с помощью консольного потребителя Kafka.

Таким образом, создается в VirtualBox конвейер сбора, предобработки и анализе данных о местах падения метеоритов посредством продуктов Apache, и тех, которые работ с ним. Проводится исследование и анализ данных, по которым делаются определенные выводы, отображенные посредством визуализации в виде графиков.