Автор: Лю Кан
Эта статья взята с конференции Flink Meetup, состоявшейся в Шанхае 26 июля, а сообщением поделился Лю Канг. В настоящее время он занимается разработкой платформ, связанных с жизненным циклом модели, в отделе платформ больших данных. Сейчас он в основном отвечает за разработка платформы для вычисления признаков модели в реальном времени на основе flink. Знаком с распределенными вычислениями, имеет богатый практический опыт и глубокое понимание развертывания, эксплуатации и обслуживания модели, а также имеет определенное понимание алгоритма модели и обучения.
Основное содержание этой статьи следующее:
-
Основываясь на текущем статусе разработки функций реального времени в компании, объясните историю разработки, цели и статус-кво платформы функций реального времени.
-
Причины выбора Flink в качестве вычислительного движка платформы
-
Практика Flink: репрезентативные примеры использования, разработка для совместимости с Aerospike (носитель данных платформы) и обнаруженные подводные камни.
-
Текущие эффекты и планы на будущее
1. Основываясь на текущей ситуации с разработкой функций реального времени в компании, объясните предысторию разработки, цели и статус-кво платформы функций реального времени.
1. Разработка, эксплуатация и сопровождение оригинальной функции реального времени;
1.1. Выберите платформу вычислений в реальном времени: В соответствии с требованиями индекса производительности проекта (задержка, пропускная способность и т. д.) выберите существующую платформу вычислений в реальном времени: Storm Spark flink
1.2 Основной процесс разработки и обслуживания:
-
Более 80 % заданий должны использовать источник данных очереди сообщений, но очередь сообщений представляет собой неструктурированные данные, а единого словаря данных нет. Следовательно, необходимо разобрать сообщение и определить необходимый контент, потребляя соответствующую тему.
-
Проектирование и разработка вычислительной логики на основе востребованных сценариев
-
В случае, когда данные в реальном времени не могут полностью удовлетворить требования к данным, отдельные автономные задания и логика слияния разрабатываются отдельно;
Например, в сценарии, который требует 30 дней данных, но в очереди сообщений есть только семь дней данных (время хранения сообщений по умолчанию в kafka), оставшиеся 23 дня необходимо дополнить автономными данными.
-
Проектирование и разработка логики исправления ошибок контрольной суммы данных
Передача сообщений должна полагаться на сеть, и трудно полностью избежать потери сообщений и времени ожидания, поэтому требуется логика проверки и исправления ошибок.
-
тест онлайн
-
Мониторинг и оповещение
2. Болезненные моменты разработки оригинальной функции в реальном времени
-
Структура источника данных очереди сообщений не имеет единого словаря данных.
-
Логика расчета характеристик сильно настраивается, а цикл разработки и тестирования длительный.
-
Когда данные в реальном времени не могут соответствовать требованиям, необходимо настроить автономные задания и логику объединения.
-
Схема исправления ошибок контрольной суммы не является лучшей практикой, и фактический эффект больше зависит от личных способностей.
-
Решения для мониторинга и раннего оповещения необходимо настраивать на основе бизнес-логики.
3. Основываясь на болевых точках сортировки, определите цели платформы
-
Словарь данных в реальном времени: обеспечивает унифицированные функции регистрации и управления источниками данных, поддерживает темы сообщений с единой структурой и темы, содержащие сообщения различной структуры.
-
Логическая абстракция: абстрагируется в SQL, сокращая рабочую нагрузку и снижая порог использования.
-
Слияние функций: предоставьте функцию слияния функций, чтобы решить ситуацию, когда функции в реальном времени не могут полностью соответствовать требованиям к данным.
-
Проверка данных и исправление ошибок: Предоставляет возможность использовать функции автономной проверки данных и исправления ошибок в режиме реального времени.
-
Задержка вычислений в реальном времени: уровень мс
-
Отказоустойчивость вычислений в реальном времени: сквозная ровно один раз
-
Унифицированный мониторинг, раннее предупреждение и решение высокой доступности
4. Архитектура системы функциональной платформы
Текущая архитектура представляет собой стандартную лямбда-архитектуру, а автономная часть состоит из spark sql + dataX. Сейчас используется система хранения KV Aerospike.Основное отличие от redis в том, что в качестве основной памяти используется SSD.Мы протестировали производительность чтения и записи большинства сценариев на том же уровне данных, что и redis.
Часть в реальном времени: используйте flink в качестве вычислительного движка и расскажите, как его используют пользователи:
-
Регистрация источников данных: в настоящее время поддерживаемыми источниками данных в реальном времени являются Kafka и Aerospike.Если данные в Aerospike являются автономной функцией или функцией реального времени, настроенной на платформе, они будут автоматически зарегистрированы. Источник данных Kafka должен загрузить соответствующий файл schemaSample.
-
Вычислительная логика: выражается через SQL
-
Определите вывод: определите таблицу выходных данных Aerospike и тему Kafka, которая может потребоваться, ключ, используемый для отправки данных обновления или вставки.
После того, как пользователь выполнит вышеуказанные операции, платформа записывает всю информацию в конфигурационный файл json. На следующем шаге платформа отправляет файл конфигурации и ранее подготовленный файл flinkTemplate.jar (содержащий функции flink, необходимые для всех платформ) в yarn и запускает задание flink.
5. Отображение функций платформы
1) Отображение функций платформы - регистрация источника данных
2) Редактирование объектов в реальном времени — основная информация
3) Редактирование объектов в реальном времени — выбор источника данных
4) Редактирование функций в реальном времени - расчет SQL
5) Редактирование объектов в реальном времени — выберите вывод
2. Причины выбора Flink
Давайте поговорим о причинах, по которым мы выбрали flink в качестве этой функциональной платформы.
Разделено на три измерения: максимальная задержка, отказоустойчивость, зрелость функции sql.
-
Задержка: Storm и flink — это чистая потоковая передача с минимальной задержкой в миллисекунды. Механизм чистой потоковой передачи Spark представляет собой непрерывный режим, который также может достигать минимальной задержки в миллисекундах.
-
Отказоустойчивость: Storm использует режим подтверждения XOR и поддерживает atLeastOnce. Дублирование сообщений не устранено. Spark обеспечивает ровно один раз через контрольную точку и WAL. Flink делает ровно один раз через контрольную точку и точку сохранения.
-
Зрелость SQL: в текущей версии Storm SQL все еще находится на экспериментальной стадии и не поддерживает агрегацию и объединение. Теперь Spark может предоставлять большинство функций, но не поддерживает различение, ограничение и упорядочение агрегированных результатов. SQL-запрос, предоставляемый flink теперь в версии сообщества, не поддерживает отдельные агрегаты.
3. Практика флинка
1. Практический пример
2. Совместимая разработка: в настоящее время flink не поддерживает чтение и запись для Aerospike, поэтому требуется дополнительная разработка.
3. Встречающаяся яма
4. Текущий эффект платформы и планы на будущее
Текущий эффект: период запуска функции в реальном времени был сокращен с первоначального среднего значения в 3 дня до 5 дней до часового уровня. будущий план:
-
Улучшить функциональность функциональной платформы: объединить функции и т. д.
-
Упростите шаги и улучшите взаимодействие с пользователем
-
В соответствии с потребностями, дальнейшее улучшение функций SQL, таких как поддержка смещения времени начала выигрыша, которое может быть передано через выигрыш countTrigger и т. д.
Следующий план — описать развертывание модели и обучение модели с помощью sql или DSL.
Для получения дополнительной информации, пожалуйста, посетитеВеб-сайт китайского сообщества Apache Flink