1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/475660-databand

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 32 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 07.03.2025 21:36 6026cde

DataBand — легковесная платформа для комплексной аналитики больших данных

Проект начался с 26 октября 2020 года и продолжает развиваться.

Полное руководство по использованию

Подробное описание использования

Описание

DataBand (Помощник данных) — это быстрый инструмент для сбора и очистки данных, управления задачами, реального времени и пакетного анализа данных, визуализации данных, быстрой разработки шаблонов данных, набора ETL-инструментов, а также инструментов данных. Это легковесная, всеобъемлющая платформа для работы с большими данными.

Мы стремимся предоставлять лучшие решения через предоставление интеллектуальных приложений, аналитических услуг и консалтинговых услуг.

Архитектурный дизайн

Технологический стек

Хранение

  • Распределённое хранение: HDFS, HBase
  • Линейное отношение хранения: MySQL, Oracle
  • Колоночное хранение: ClickHouse
  • Колонка семейства хранения: HBase, Cassandra
  • База данных документов: ElasticSearch, MongoDB

Вычисления

  • Вычислительный движок: Presto, Hive
  • Обработка потока: Storm, Flink

Интеграция

  • Flume
  • Filebeat
  • Logstash

Фронтенд технологический стек

  • Vue
  • Element UI

Бэкенд технологический стек

  • Spring Boot
  • Spring Cloud
  • MyBatis### Описание проекта

Генерация данных для моделирования больших данных (проект подготовки данных)

Источники данных:

  • databand-mock-api: инструмент для имитации API бизнес-систем;
  • databand-mock-log: инструмент для имитации логов, создаёт большое количество логов для отладки и тестирования, такие как Syslog, Log, CSV, JSON, MySQL, RPC, NetCat и т.д.;
  • databand-mock-mq: инструмент для имитации сообщений, использует MQ для создания большого количества логов для отладки и тестирования, такие как RabbitMQ, Kafka и т.д.;
  • databand-mock-hadoop: инструмент для имитации больших данных, связанный с HDFS и MapReduce;#### Сбор и очистка данных (проект сбора и очистки данных) Сбор и очистка данных DataBand
  • databand-etl-mysql_ods: сбор и очистка данных из MySQL, например, MySQL до ODS (временного промежуточного хранилища) (включая Redis, Kafka и т. д.);
  • databand-etl-mysql_olap: сбор и очистка данных из MySQL до OLAP хранилища данных;
  • databand-etl-mysql_hadoop: сбор и очистка данных из MySQL до распределённого хранилища Hadoop;
  • databand-etl-logfile_ods: сбор и очистка полуструктурированных лог-файлов, таких как JSON, XML, LOG, CSV файлы данных до ODS (временного промежуточного хранилища);
  • databand-etl-logfile_olap: сбор и очистка полуструктурированных данных лог-файлов для OLAP-системы;
  • databand-etl-logfile_hadoop: сбор и очистка данных лог-файлов для распределенного хранения Hadoop;
  • databand-etl-mq_ods: потребление данных через MQ для внесения в ODS-систему;
  • databand-etl-mq_olap: потребление данных через MQ для внесения в OLAP-систему;
  • databand-etl-mq_hadoop: потребление данных через MQ для внесения в Hadoop;
  • databand-ml: проект по машинному обучению и анализу данных;

Проект анализа данных (проект планирования задач)

  • databand-job-springboot: сервис планирования задач с использованием Spring Boot, поддерживающий выполнение shell, Hive, Python, Spark-SQL, Java-JAR задач;
  • databand-streamjob-springboot: потоковый проект анализа данных, поддерживающий консьюмпцию данных Kafka для записи в ClickHouse, MySQL, ES и т. д.;

Портал анализа данных (проект управления backend и frontend-отображения) - databand-admin-ui: проект UI с разделением front-end и back-end, отображает данные (в настоящее время находится в процессе разработки);

  • databand-admin-thymeleaf: управление правами доступа, связями и конфигурацией сайтов (не разделённый front-end и back-end, версия разработки), основан на фреймворке RuoYi;
  • databand-admin-api: сервис API данных;
  • databand-admin-tools: набор BI-инструментов;

Временные потоки данных (обновлено до сентября 2021 года)

  • databand-rt-flinkstreaming: реальное время обработка данных Flink. Основной акцент делается на PV, UV, окна, агрегацию, задержку, водяные знаки, статистику, checkpoint и другие базовые методы использования;
  • databand-rt-redis: реальная обработка некоторых кэшированных данных;
  • databand-rt-sparkstreaming: реальное время обработка данных Spark, аналогична функциональности Flink, основной акцент делается на structured streaming;

Видение целей

3-летнее видение цели

Подробное описание проекта

databand-mock-api (проект имитационного API источника данных) Инструмент имитации API

databand-mock-log (проект имитационного генератора лог-данных) Инструмент имитации лог-данных

В настоящее время это простая консольная программа, запустите main для начала работы.- CsvMock.java: генерация CSV-файлов; после запуска вы найдете CSV-файл в папке FILE_PATH;

  • LogMock.java: генерация лог-файлов; пути генерации указаны в конфигурационном файле logback.xml. По умолчанию для Windows — "c:/logs/", для Linux или macOS путь следует указывать самостоятельно;
  • JsonMock.java: генерация JSON-файлов; после запуска вы найдете JSON-файл в папке FILE_PATH;
  • XmlMock.java: генерация XML-файла; JSON-файлы можно найти в папке, указанной в "FILE_PATH";
  • RpcMock.java: RPC-вывод; после запуска тестирование можно выполнить с помощью Flume (или Filebeat); конфигурационные файлы находятся здесь: /flumeConf/avro-memory-log.properties; скрипт запуска: flume-ng agent --conf conf --conf-file /usr/app/apache-flume-1.8.0-bin/avro-memory-log.properties --name a2 -Dflume.root.logger=INFO,console
  • SyslogMock.java: syslog (UDP)-вывод; после запуска тестирование можно выполнить с помощью Flume (или Filebeat); конфигурационные файлы находятся здесь: /flumeConf/syslog-log.properties;
  • TcpMock.java: TCP-вывод; после запуска тестирование можно выполнить с помощью Flume; конфигурационные файлы находятся здесь: /flumeConf/syslog-log.properties;
  • MySQLMock.java: генерация данных MySQL; запись таблицы через список ключ-значение пар. Исходный код проекта log mock

    databand-mock-mq (инструмент для моделирования данных источника)

В настоящее время это простое консольное приложение, которое можно запустить непосредственно вызвав main().

  • KafkaProducer.java: Генерация сообщений Kafka:
  • KafkaConsumer.java: Чтение сообщений Kafka:
  • RabbitMQProducer.java: Генерация сообщений RabbitMQ:
  • RabbitMQConsumer.java: Чтение сообщений RabbitMQ:

Исходный код проекта mq mock

Инструкция по использованию

Данные источников логов

Типы:

  • CSV логи, используемые для батч-обработки, используют UTF-8 набор символов, каждая строка (\r\n) представляет одну запись, значения полей каждой записи заключены в двойные кавычки и разделены запятой (,);
  • Kafka логи, используемые для потоковой обработки, производители стратегически создают данные со временем и смещением; Бизнес:
  • а) Лог продаж товаров, используется CSV формат;
  • б) Лог выхода программ, используется CSV формат;
  • в) Лог популярных слов поиска, используется Kafka;
  • г) Лог рекламных объявлений, используется Kafka;

Определение данных, типы батч-логов, исходные данные являются csv, временно эти два бизнеса используются как пример батч-данных, фактически платформа будет независимой от бизнеса, она будет сосредоточена только на потоках данных и услугах данных. 1. Лог продаж товаров CSV: Обрабатываемый класс: org.databandtech.logmock.ProductSalesCSVLog

  • 1 Продукт ID productId
  • 2 Категория продукта ID categoryId
  • 3 Модель и размер modelId
  • 4 Цвет color
  • 5 ID покупателя userId
  • 6 Дата и время продажи saleDatetime
  • 7 Количество покупок buyCount
  • 8 Общая стоимость покупки buyTotal
  • 9 Сумма скидки buyDiscount
  • 10 Город cityCode
  • 11 Адрес address
  1. Лог выхода программ CSV Обрабатываемый класс: org.databandtech.logmock.ShowsCSVLog
  • 1 ID пользователя userId
  • 2 Код типа состояния status
  • 3 Город cityCode
  • 4 Район areaCode
  • 5 Время начала просмотра beginTime
  • 6 Время окончания просмотра endTime
  • 7 ID программы showId
  • 8 ID раздела columnId
  • 9 ID канала channelId
  • 10 Код HD-флага hd
  • 11 Код типа программы showType

Код типа состояния:

  • 1: "tv_playing", 2: "vod_playing", 3: "browsing", 4: "tvod_playing", 5: "ad_event", 6: "external_link", 7: "order"

Код HD-флага:

  • 0: SD, 1: HD, 2: Smart, 3: Other

Код типа программы:

  • сериал: tv, фильм: movie, шоу: variety, другое: other

Логи потока данных, источник данных — kafka. На данный момент используются эти два бизнес-процесса как примеры потоковых данных; фактически платформа будет независимой от бизнеса и будет сосредоточена только на потоках данных и услугах.

Логи популярных слов

Обрабатываемый класс: org.databandtech.mockmq.HotWordKafkaLog Тема Kafka: HOTWORDS

  • 1 Ключевое слово keyword
  • 2 ID пользователя userId
  • 3 Время поиска ts### Логи мониторинга рекламы Обработка класса: org.databandtech.mockmq.AdKafkaLog Тема Kafka: ADMONITOR
  • 1 Операционная система OS
  • 2 UID пользователя
  • 3 MAC адрес MAC1
  • 4 Текущий способ подключения MACCN
  • 5 IP адрес IP
  • 6 Код провинции PROVINCECODE
  • 7 Код города CITYCODE
  • 8 Код района AREACODE
  • 9 Время клиента TS
  • 10 ID материала рекламы ADMID
  • 11 ID рекламодателя ADID
  • 12 Название приложения APPNAME### Распределённое хранение — архивация первичных записей Данные, сгенерированные из CSV-логов, требуют архивации первичных документов в HDFS. Данные потока Kafka могут быть сохранены в HDFS или Hive в зависимости от конкретной ситуации, либо очищены и сохранены в ClickHouse и т.д.

Способы архивации CSV-логов в HDFS:

  • 1 Прямое помещение файла в систему HDFS;
  • 2 Использование Flume spooling-to-hdfs, методы использования указаны в databand-etl-flume/spooling-memory-hdfs2.properties;
  • 3 Использование периодических задач databand-job-springboot типа HdfsBackupJob.

Способы сохранения данных Kafka в HDFS:

  • 1 Использование Flume kafka-to-hdfs, методы использования указаны в databand-etl-flume/kafka-flume-hdfs.properties;
  • 2 Использование Flink или Storm для импорта, примеры указаны в databand-etl-storm и databand-etl-flink;
  • 3 Самостоятельное использование клиентских библиотек Kafka и HDFS.

Распределённое хранение — архивация данных хранилища

Поля таблицы продукта внешней таблицы, SQL-запросы создания таблицы. Создание внешней таблицы для продукта

CREATE EXTERNAL TABLE product (
    address STRING,
    buycount INT,
    buydiscount INT,
    buytotle INT,
    categoryid STRING,
    citycode STRING,
    color STRING,
    modelid STRING,
    productid STRING,
    saledatetime STRING,
    userid STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
STORED AS TEXTFILE
LOCATION '/home/product';

Создание внешней таблицы для шоу

CREATE EXTERNAL TABLE show (
    areacode STRING,
    channelid STRING,
    citycode STRING,
    columnid STRING,
    hd INT,
    showdatetime STRING,
    showduration INT,
    showid STRING,
    status STRING,
    userid STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
STORED AS TEXTFILE
LOCATION '/home/show';
```Загрузка данных в Hive
- Можно использовать `LOAD DATA` для импорта данных, полностью заменив существующие данные:
```sql
-- Для HDFS файла
LOAD DATA INPATH '/home/product/2020-12-20.csv'
OVERWRITE INTO TABLE product;

-- Для локального файла
LOAD DATA LOCAL INPATH '/home/product/2020-12-20.csv'
OVERWRITE INTO TABLE product;

Количество записей (Count)

  • Вычисление общего количества заказов: SELECT COUNT(1) FROM product;
  • Вычисление количества заказов для города Guangzhou: SELECT COUNT(1) FROM product WHERE cityCode='Guangzhou';
  • Вычисление количества программ: SELECT COUNT(1) FROM show;
  • Вычисление количества записей с идентификатором программы 'Побег': SELECT COUNT(1) FROM show WHERE showid='Побег';
  • Вычисление суммы всех заказов Dell компьютеров за декабрь 2020 года: SELECT SUM(buytotal) FROM product WHERE modelid='DELL' AND instr(saledatetime,'2020-12') > 0;

Можно протестировать вывод результатов Hive:

Анализ и планирование — план статистических показателей

Статистический план для журнала продаж продуктов

X-ось (ключ):

  • Временная ось: год, квартал, месяц, неделя;
  • Ось категорий продуктов: по типу продукции, например, телевизоры, ПК;
  • Ось моделей продукции;
  • Ось группировки по городам;
  • Ось покупателей.

Y-ось (значение):

  • Количество заказов
  • Общая стоимость заказовПоказатели:
  • Количество заказов для каждой категории продуктов, product_order_count_by_category, по годам, кварталам, месяцам, неделям, дням;
  • Количество заказов для каждого типа модели продукции, product_order_count_by_model, по годам, кварталам, месяцам, дням;
  • Количество заказов для каждого города, product_order_count_by_city, по годам, месяцам;
  • Количество заказов для топ-20 покупателей, product_order_count20_by_user, по годам, месяцам;
  • Общая стоимость заказов для каждой категории продуктов, product_order_amount_by_category, по годам, кварталам, месяцам, неделям, дням;
  • Общая стоимость заказов по моделям продуктов, product_order_amount_by_model, по годам, кварталам, месяцам, дням;
  • Общая стоимость заказов по городам, product_order_amount_by_city, по годам, месяцам;
  • Общая стоимость заказов топ-20 покупателей, product_order_amount20_by_user, по годам, месяцам;#### Планирование статистики журнала эфира X-ось — ключ
  • Временная ось: годы, кварталы, месяцы, недели;
  • Городская ось
  • Ось каналов
  • Ось программ
  • Ось пользователей

Y-ось — значение

  • Продолжительность воспроизведения
  • Количество воспроизведений

Индикаторы:

  • Продолжительность воспроизведения по городам, show_duration_by_city, по годам, кварталам, месяцам, неделям, дням;
  • Продолжительность воспроизведения по каналам, show_duration_by_channel, по годам, кварталам, месяцам;
  • Продолжительность воспроизведения топ-20 программ, show_duration20_by_show, по годам, месяцам;
  • Продолжительность воспроизведения топ-20 пользователей, show_duration20_by_user, по годам, месяцам;
  • Количество воспроизведений по городам, show_times_by_city, по годам, кварталам, месяцам, неделям, дням;
  • Количество воспроизведений по каналам, show_times_by_channel, по годам, кварталам, месяцам;
  • Количество воспроизведений топ-20 программ, show_times20_by_show, по годам, месяцам;
  • Количество воспроизведений топ-20 пользователей, show_times20_by_user, по годам, месяцам;

Планирование статистики журнала популярных запросов

Дожидаемся завершения

Планирование статистики журнала мониторинга рекламы

Дожидаемся завершения### Обработка статистических данных в пакете

Обработка статистических данных журнала продаж продуктов

Количество заказов по категориям продуктов (по дням):

SELECT categoryid, saledatetime, SUM(buycount)
FROM product
GROUP BY categoryid, saledatetime
ORDER BY saledatetime;

Количество заказов по категориям продуктов (по дням, с указанием конкретной даты, используется для задач экспорта статистики):

SELECT categoryid, saledatetime, SUM(buycount)
FROM product
GROUP BY categoryid, saledatetime
HAVING saledatetime = '2020-12-30'
ORDER BY saledatetime;

Прочие аналитические запросы SQL приведены аналогично, данные по дням уже собраны, агрегация по неделям, месяцам, кварталам и годам выполняется на основе этих данных.Экспорт результатов в локальный файл, если записи совпадают, они будут заменены:

use default;
-- Сохранение на [ЛОКАЛЬНОМ]
INSERT OVERWRITE LOCAL DIRECTORY '/home/product_order_count_by_cate'
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE
-- SQL
SELECT categoryid, saledatetime, SUM(buycount)
FROM product
GROUP BY categoryid, saledatetime
ORDER BY saledatetime;

Экспорт результатов в HDFS, если записи совпадают, они будут заменены:

use default;
-- Сохранение на HDFS
INSERT OVERWRITE DIRECTORY '/home/product_order_count_by_cate'
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE
-- SQL
SELECT categoryid, saledatetime, SUM(buycount) FROM product GROUP BY categoryid, saledatetime ORDER BY saledatetime;

Выполнение запроса завершено. Для проверки сохранённых данных в HDFS выполните следующую команду:

  • hadoop fs -tail /home/product_order_count_by_cate/000000_0

Логи программного выпуска

Пакетная обработка статистического анализа

Пакетная обработка задач с расписанием

databand-job-springboot: сервис планирования периодических задач, поддерживающий Shell, Hadoop MR, HiveSQL, Python, Spark, Flink, JavaJar задачи.

  • Пример использования метода scheduledTaskJobMap() для внедрения, доступна только java-инъекция на данный момент, в будущем будут поддерживаться базовая инъекция и конфигурационные файлы. Типы задач включают:- Командная задача, экземпляр CommandExecuteJob;
  • Резервное копирование исходных данных (локальное), резервное копирование исходных данных из источника данных в HDFS, HdfsBackupJob;
  • Резервное копирование исходных данных (в локальном файле), резервное копирование исходных данных из HDFS в локальный файл, HdfsToLocalFileJob;
  • Задача Hive SQL, HiveSqlQueryJob, выполнение DQL запросов Hive, требует возврата набора данных и его последующего анализа и хранения в базе данных, данные используются для отчетов и графиков;
  • Задача Hive SQL, HiveSqlExecuteJob, выполнение скрипта Hive, используется для операций DDL/DML, таких как загрузка данных;
  • Статистический анализ и вычисление, HadoopMRJob, выполнение задач MapReduce в Hadoop;
  • Другие типы задач, не представлены здесь.Каждый тип задач имеет свои конкретные примеры (JobInstances) и является многим к одному отношением к типам задач (JobType).

Способ запуска:

    1. Первым шагом импортировать данные: databand_scheduletask.sql
    1. Просмотреть задачи: http://localhost:8081/getAllSchedule
    1. Запустить отдельную задачу, пока нет единой панели управления, но она будет создана в будущем:
    • http://localhost:8081/start? jobcode=WindowsDir1
    • http://localhost:8081/start? jobcode=WindowsIP1
    • http://localhost:8081/start? jobcode=hdfs_product2020
    • http://localhost:8081/start? jobcode=hdfs_toLocal2020
    • http://localhost:8081/start? jobcode=hdfs_toLocal2020_1

Задачи потока данных

databand-streamjob-springboot: сервис постоянной записи задач потока данных.Типы задач включают:

- Создание резервной копии исходных данных, создание резервной копии исходных данных из источника данных в HDFS, HdfsBackupJob;
- Хранение потока данных как записей MySQL (из Kafka), KafkaToMysqlJob;
- Хранение потока данных как записей ClickHouse (из Kafka), KafkaToClickHouseJob;
- Хранение потока данных как записей Kafka (из Kafka), KafkaToKafkaJob;
- Хранение потока данных как записей Elasticsearch (из Kafka), KafkaToEsJob;

Портал анализа данных (задачи управления backend и frontend отображения)

  • databand-admin-ui: Проект UI с разделением front-end и back-end (только front-end, пока не реализован);
  • databand-admin-thymeleaf: Управление правами доступа, отношениями и конфигурацией сайтов (не разделён front-end и back-end, находится в разработке) на основе фреймворка RuoYi;
  • databand-admin-api: Сервис API данных;
  • databand-admin-tools: Набор BI-инструментов;

Временная информация о реальном времени (обновлено до сентября 2021 года)

  • databand-rt-flinkstreaming: Обработка данных в режиме реального времени Flink. Основные задачи — PV, UV, связанные с окнами, агрегациями, задержками, водянками, статистикой, checkpoint'ами и другими базовыми методами использования. Главный входной класс — KafkaConsumerApp, источник данных — Kafka, использует EpgVodKafkaProducer из databand-mock-mq для автоматического создания тестовых данных в виде JSON объекта типа EpgVod; databand-rt-flinkstreaming
  • databand-rt-redis: Хранение некоторых кэшированных данных в реальном времени;
  • databand-rt-sparkstreaming: обработка данных в режиме реального времени с использованием Spark, аналогична функциям Flink, основана на structured streaming, главный входной класс — KafkaApp;
    Проект начался 26 октября 2020 года. Более проектов находятся в разработке, регулярно обновляются, так как все они создаются в свободное время, а за последние годы возникло множество параллельных обязанностей, поэтому обновления происходят медленнее, прошу понять это.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/475660-databand.git
git@api.gitlife.ru:oschina-mirror/475660-databand.git
oschina-mirror
475660-databand
475660-databand
master