Big Whale
Big Whale — это платформа для управления задачами распределённых вычислений, разработанная для компании MeetYou Data. Она предоставляет возможности для планирования и выполнения задач пакетной обработки данных с использованием таких инструментов, как Spark и Flink, а также обеспечивает управление приложениями Yarn, обнаружение повторяющихся и больших по объёму приложений и другие функции.
Платформа разработана на основе Spring Boot 2.0 и может быть запущена после сборки. Исходный код доступен на GitHub и Gitee.
Обзор
1. Архитектура
На рисунке представлена архитектура платформы Big Whale.
2. Характеристики
- Механизм выполнения скриптов на основе SSH обеспечивает простоту и скорость развёртывания, требуя только одного сервиса.
- Механизм синхронизации состояния задач на основе REST API Yarn обеспечивает совместимость со всеми версиями Spark и Flink.
- Поддерживает повторные попытки в случае неудачи.
- Обеспечивает поддержку зависимостей между задачами.
- Позволяет создавать сложные планы выполнения задач (DAG).
- Управляет выполнением потоковых задач и отслеживает их состояние.
- Предоставляет управление приложениями Yarn.
Развёртывание
1. Подготовка
- Java 1.8 или выше.
- MySQL 5.1.0 или более поздняя версия.
- Скачайте проект или клонируйте его из репозитория.
- Чтобы решить проблему с загрузкой изображений в README.md на GitHub, добавьте соответствующие правила разрешения имён в файл hosts.
2. Установка
- Создайте базу данных big-whale.
- Запустите скрипт для создания базы данных: big-whale.sql.
- Настройте параметры подключения к базе данных в соответствии с конфигурацией Spring Boot, включая информацию о паролях и SMTP.
- Конфигурационный файл big-whale.properties содержит следующие параметры:
- ssh.user — имя пользователя с правами на выполнение скриптов, которое будет использоваться платформой в качестве единого пользователя для выполнения скриптов.
- ssh.password — пароль для указанного пользователя.
- dingding.enabled — включает ли система оповещения через сервис Dingding.
- dingding.watcher-token — токен для доступа к общему чату робота в Dingding.
- yarn.app-memory-threshold — максимальный объём памяти, который может использовать приложение Yarn (в МБ). Значение -1 отключает проверку.
- yarn.app-white-list — список приложений Yarn, которым разрешено использовать больше памяти, чем указано в параметре yarn.app-memory-threshold. Для этих приложений не будет срабатывать оповещение.
- Внесите изменения в файл $FLINK_HOME/bin/flink. Это необходимо, поскольку при отправке заданий Flink можно читать только локальные jar-файлы, поэтому нужно заменить путь к jar-файлу в скрипте на путь к файлу, загруженному из HDFS.
- Соберите проект с помощью команды mvn clean package.
3. Запуск
- Проверьте, используется ли порт 17070. Если да, закройте процесс, использующий этот порт, или измените конфигурацию порта в проекте и пересоберёте его.
- Скопируйте файл big-whale.jar из папки target и запустите его командой java -jar big-whale.jar.
4. Начальная конфигурация
- Откройте URL http://localhost:17070.
- Введите логин admin и пароль admin.
- Перейдите в раздел «Права доступа» → «Управление пользователями», чтобы изменить адрес электронной почты текущего пользователя на действующий. В противном случае письма будут отправляться с ошибкой.
- Добавьте кластеры:
- Перейдите в «Управление кластерами» → «Кластеры».
- Укажите адрес веб-интерфейса Yarn ResourceManager в поле «Адрес управления YARN».
- Задайте путь для хранения пакетов программ в HDFS в поле «Путь к хранилищу пакетов». Например, /data/big-whale/storage.
- Оставьте поля «Поддержка Flink задач агента пользователя» и «Чёрный список потоковых задач» пустыми. Эти настройки используются для внутренних правил распределения задач.
- Добавьте пользователей кластера:
- Перейдите в «Управление кластером» → «Пользователи кластера».
- Выберите очереди и пользователей прокси для каждого кластера.
- Добавьте агентов:
- Перейдите в «Управление агентами» → «Добавить».
- Можно добавить несколько экземпляров агентов. Они могут работать на разных IP-адресах и портах. При выполнении задачи будет выбран случайный агент. Если один из них недоступен, будет выбран другой. Если все агенты недоступны, задача завершится неудачно.
- После выбора кластера агенты становятся доступными для отправки заданий Spark или Flink в этом кластере.
- Добавьте версии вычислительных фреймворков:
- Перейдите в «Управление версиями» → «Добавить».
- Разные версии Spark и Flink могут иметь разные команды для отправки задач. Например, для Spark 1.6.0 используется команда spark-submit, а для Spark 2.1.0 — spark2-submit.
Использование
1. Оффлайн планирование
1.1 Добавление
- В настоящее время поддерживаются три типа задач пакетной обработки: «Shell», «Spark Batch» и «Flink Batch».
- Перетащите соответствующий значок задачи пакетной обработки из левой панели инструментов, чтобы добавить узел DAG.
- Поддерживаются параметры времени, такие как ${now}, ${now - 1d} и ${now - 1h@yyyyMMddHHmmss}.
- Для задач, отличных от «Shell», необходимо загрузить соответствующий jar-файл программы. Здесь представлен jar-файл, созданный для задачи Spark.
- Поле «Параметры ресурсов» можно оставить пустым.
- Существует два режима редактирования кода: визуальный и текстовый. Можно переключаться между ними.
- Нажмите «Тест», чтобы проверить правильность конфигурации узла и возможность его запуска.
- Чтобы предотвратить чрезмерное использование потоков платформы, задания Spark и Flink выполняются в фоновом режиме. Соответствующие настройки для Spark: --conf spark.yarn.submit.waitAppCompletion=false, для Flink: -d. Однако благодаря фоновому процессу обновления статуса задания, можно гарантировать, что задачи в DAG будут выполняться последовательно.
- Узлы DAG поддерживают повторные попытки при неудаче.
- Соедините узлы в правильном порядке, чтобы создать полный DAG.
- После завершения построения DAG нажмите «Сохранить».
1.2 Операции
- Просмотрите список задач оффлайн планирования.
- Нажмите на левую панель инструментов «Задачи планирования», чтобы увидеть список запущенных задач, их статус и журналы запуска узлов.
2. Выполнение в реальном времени
2.1 Добавление
…
Комментарии ( 0 )