- •Курсовая работа
- •Задание
- •Отзыв на курсовую работу по дисциплине
- •1.Теоретическая часть 7
- •2. Практическая часть 14
- •1.Теоретическая часть
- •1.1 Основные понятия и определения
- •1.2 Теоретическая реализация конвейера данных средствами VirtualBox
- •2. Практическая часть
- •2.1 Реализация конвейера данных средствами VirtualBox
- •2.1 Ответ на вопросы с анализом полученных данных
- •1. Теоретическая часть
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, и тех, которые работ с ним. Проводится исследование и анализ данных, по которым делаются определенные выводы, отображенные посредством визуализации в виде графиков.
