краткое содержание:В этой статье представленыстроить Flink + StarRocks + Dinky Обмен опытом сверхбыстрой единой аналитической платформы. Содержание включает в себя:
Tips:Исторический портал~
《Первая годовщина Dinky с открытым исходным кодом~》
《Dinky Расширять ChunJun из Практика обмена》
《Dinky Расширять kudu Практика обмена》
《Dinky Строить Flink CDC Весь склад опущен в озеро》
Адрес GitHub
https://github.com/DataLinkDC/dlink
https://gitee.com/DataLinkDC/Dinky
Приглашаем всех обратить внимание на развитие Динки~
1. Предыстория
Blue and White Porcelain Group — сервисная компания, специализирующаяся на традиционном здравоохранении. Стремление создать онлайн-модель от традиционной модели к цифровой трансформации.
В связи с быстрым развитием бизнеса компании, чтобы удовлетворить статистику отчетов бизнес-команды в режиме реального времени и анализ принятия решений, наша компания решила использовать Apache Flink + Starocks + Dinky Строитьиз Чрезвычайно быстрая унифицированная аналитическая платформа。
2. Техническая архитектура
В настоящее время архитектура Lambda используется для объединения данных в реальном времени и офлайн-данных, а также для объединения данных со Starrocks для дальнейшего анализа данных. Архитектура следующая:
Используйте sqoop для ежедневной загрузки данных MySQL в Hive в режиме T+1, чтобы сделать некоторые поля таблицы измерений избыточными. Кроме того, некоторые полные данные Mysql и Hive синхронизируются со Starrocks через Flink Batch; Среди них полная пакетная обработка MySQL осуществляется посредством 5-минутной пакетной обработки Flink Batch (с использованием таблиц в особых сценариях).
Бизнес-данные MySQL частично синхронизируются с использованием метода полной синхронизации базы данных + инкрементальный метод Dinky, а часть их синхронизируется с использованием инкрементных данных Canal + Kafka + Flink и полных данных внешней таблицы MySQL Starrocks для обеспечения обновлений в реальном времени и записывается в модель первичного ключа Starrocks. table ; журналы поведения записываются в подробную таблицу Starrocks через FileBeat + Kafka + Flink.
Dinky предоставляет возможности пакетной обработки и потоковых вычислений на Flink, а также возможности запросов и операций с внешней базой данных, что еще больше повышает эффективность нашей разработки. Кроме того, анализ данных и обработку ETL можно выполнять непосредственно в Dinky, избегая необходимости развертывания различных скриптов на сервере.
3. Практика применения
Таблица модели данных Starocks представляет собой столбчатое хранилище, существующее в парах ключ-значение. В настоящее время поддерживаются следующие модели: подробная модель (дубликат ключа), агрегатная модель (агрегированный ключ), модель обновления (уникальный ключ) и модель первичного ключа (первичный ключ). Сценарии применения модели данных см. во введении к модели данных на официальном сайте Starrocks. В соответствии с требованиями к бизнес-отчетности нашей компании операции удаления и обновления выполняются относительно часто. Во-вторых, данные о поведении системы торгового центра требуют синхронизации в реальном времени для составления портретов пользователей. Поэтому в настоящее время в качестве поддержки используются модель первичного ключа (Primary Key) и детальная модель (Duplate Key).
Синхронизация всей базы данных
Во время первоначального исследования было три варианта синхронизации данных:
Поговорим о преимуществах и недостатках каждого из трех вариантов.
Flink CDC
Преимущества: Поддерживает полные и инкрементальные данные, а также возобновление точки останова и ETL. В настоящее время поддерживаемых источников данных становится все больше и больше;
Недостатки: Одна таблица соответствует одной Транзакции JDBC, если подключений слишком много, могут легко оказать нагрузку на бизнес-библиотеку. Не поддерживать Синхронизация всей базы данных。
Canal + Kafka + Flink
Преимущества: В то время рассматривалось общее решение в отрасли;
Недостатки: поддерживает только инкременты, а для реализации полного объёма данных требуются дополнительные скрипты.
Canal + Kafka + Routine Load
Преимущества: Упрощенные дополнительные компоненты упрощают синхронизацию данных в Starrocks;
Недостатки: версии до Starrocks 2.1 имеют неполную поддержку модели первичного ключа.
На основании вышеизложенных решений на ранней стадии Flink CDC приезжать Canal + Kafka + Flink Сноваприезжать Canal + Kafka + Routine На разных уровнях миграции нагрузки существует множество подводных камней. в настоящий момент Dinky сообщество, созданное на основе Flink CDC Синхронизация всей базы функция dataiz назад, после многих аспектов и сообщества из общения, Flink CDC Синхронизация между базами данных доступна онлайн для плавной миграции,Это также значительно снижает нагрузку на бизнес-библиотеку.
Dinky определенный CDCSOURCE Синхронизация всей базы данныеизграмматика, грамматика CDAS Функция аналогичная, вы можете напрямую автоматически Строить Весь склад опущен в озероиз задач реального времени и для source Объединено, без дополнительных Mysql и сетевое давление, поддерживая любые sink синхронизация, например kafka、doris、hudi、jdbc ждать.Принцип заключается в том, что использовать можно только Строить. источник, а затем на основе schema、database、table Провести обработку отклонения соответственно sink Место проживания соответствует из таблицы.
EXECUTE CDCSOURCE jobname WITH (
'connector' = 'mysql-cdc',
'hostname' = '192.168.0.2',
'port' = '3306',
'username' = 'root',
'password' = '123456',
'checkpoint' = '3000',
'scan.startup.mode' = 'initial',
'parallelism' = '1',
'table-name' = 'test\.student,test\.score',
'sink.connector' = 'starrocks',
'sink.jdbc-url' = 'jdbc:mysql://192.168.0.3:19035',
'sink.load-url' = '192.168.0.3:18035',
'sink.username' = 'root',
'sink.password' = '123456',
'sink.sink.db' = 'qhc_ods',
'sink.table.prefix' = 'ods_bak_',
'sink.table.lower' = 'true',
'sink.database-name' = 'qhc_ods',
'sink.table-name' = '${tableName}',
'sink.sink.properties.format' = 'json',
'sink.sink.properties.strip_outer_array' = 'true',
'sink.sink.max-retries' = '10',
'sink.sink.buffer-flush.interval-ms' = '15000',
'sink.sink.parallelism' = '1'
)
Режим фиксации Flink
существовать Единая платформа анализа данных Dinky Режимы, уже поддерживаемые в include StandAlone、Yarn Per Job、Yarn Application、Yarn Session、K8S Session、K8S Приложение. На ранних стадиях проекта по разным причинам мы сначала выбрали StandAlone существовать Dinky представлять на рассмотрение FlinkSQL Задача. Со стабилизацией бизнеса большая часть бизнеса была мигрирована. Yarn Application выше.
существовать Yarn Application В процессе тестирования также возник более важный вопрос: «Когда». Yarn Когда это доступно, на рассмотрение Yarn Application Возникнут проблемы с дублированием рабочих мест. После и Dinky Сообщество продолжило общение и наконец решило проблему. Yarn Application Ситуация высокой доступности. Операция существует из-за проблемы с дубликатом. здесь большое спасибо Dinky Сообщество, проблема обратной связи была быстро решена.
Если вы хотите развернуть Yarn Application режиме, сначала вам нужно FLINK_HOME/lib Следующий из загрузки пакета приехать HDFS. Во-вторых, необходимо dlink-app-0.6.x.jar Загрузить места проживания FLINK_HOME/lib пакет, соответствующий HDFS Оглавление.
После завершения загрузки вам необходимо передать этот пакет,соответствующий Разрешения。
#Каждому пакету дано это разрешение
Hadoop fs -chmod o+rx hdfs://nameservice1/flink_yarn/lib/
большинствоназад,нуждатьсясуществовать Dinky Исправлятьпредставлять на рассмотрение FlinkSQL из Jar Путь к файлу. следующее:
Необходимо объяснить из-за цели вперед Dinky Синхронизация всей базы данныхсуществовать Yarn Поддерживает только Session узор с Per Job модель. существование плюс наше существующее Flink Также есть задачи синхронизации ETL задача, так что Yarn Session и Yarn Application Режимы включают оба. обращаться Dinky Синхронизация всей базы данныхподдерживать Application назад существуют для дальнейшей миграции.
Единый анализ внешних таблиц
Starocks Помимо нескольких собственных моделей данных, он также предоставляет внешние модели данных. данныхизподдерживать,нравиться Mysql、Hive、ElasticSearch、Hudi ждать.
глазвперед Оффлайн расчеттаблица размеровпроходить Hive Внешне проводите полноценную тренировку каждое утро. Поскольку сторонние данные хранятся в Mysql. Бизнес-библиотеку нельзя открыть по особым причинам. Binlog можно использовать только в режиме квазиреального времени и запускать пакеты каждые 2 часа.
глазвпередвсеиз Внешние таблицыпроходитьсуществовать Dinky Синхронизация вышеперечисленного значительно снижает затраты на разработку. Следует отметить, что цель состоит в том, Dinky Поддерживает только некоторые Starocks из синтаксиса, например INSERT, TRUNCATEждать. CREATE EXTERNAL Синтаксис создания внешних таблиц пока не поддерживается. поэтому DDL грамматикасуществовать Выполнение клиента MySQL, INSERT, TRUNCATE существовать Dinky осуществлять.
-- Создайте файл с именем hive0 из Hive ресурс
CREATE EXTERNAL RESOURCE "hive0"
PROPERTIES (
"type" = "hive",
"hive.metastore.uris" = "thrift://bigdata1:9083"
);
-- внешний стол улья
CREATE EXTERNAL TABLE `sta_dim_employee_dwd` (
`id` bigint(20) NULL COMMENT "",
`performance_id` bigint(20) NULL COMMENT "",
`goods_type` int(11) NULL COMMENT "",
`goods_type_refine` int(11) NULL COMMENT "",
`goods_specs` varchar(65533) NULL COMMENT ""
) ENGINE=HIVE
COMMENT "PARTITION BY ()"
PROPERTIES (
"database" = "dws",
"table" = "dim_employee_dwd",
"resource" ="hive0",
"hive.metastore.uris" = "thrift://bigdata1:9083,thrift://bigdata2:9083"
);
CREATE EXTERNAL TABLE `sta_assassin_employee` (
`id` largeint(40) NOT NULL COMMENT «первичный ключ»,
`old_id` varchar(65533) NULL COMMENT "",
`tenant_id` varchar(65533) NULL COMMENT «Идентификатор арендатора»,
`leader_id` largeint(40) NULL COMMENT «Непосредственно начальник»,
`code` varchar(65533) NULL COMMENT «Идентификатор сотрудника»
) ENGINE=MYSQL
COMMENT "MYSQL"
PROPERTIES (
"host" = "127.0.0.1",
"port" = "3306",
"user" = "root",
"password" = "123456",
"database" = "employee",
"table" = "assassin_employee"
);
Домашнее задание Динки Старокс
Операция ETL Планирование
текущий Dinky Он еще не идеален, если вы столкнулись с ситуацией пакетной обработки. Длинки В настоящее время предоставляется через Метод Open API сочетает в себе стороннюю платформу Планирование для выполнения пакетной операции Операция цикл Планирование, вперед — сторонняя платформа Планирование поддержки. http。Dinky Openapi из Примеры следующие:
проиллюстрировать: Среди них id это местосуществовать dinky Метабаза dlink_task Соответствие в таблице id。
4. Улучшение разработки, эксплуатации и обслуживания.
существоватьбольшие Данные появляются назад, в отрасли нет доступных инструментов разработки для повышения эффективности. разработки, на заре разработки все использовали языки программирования для написания бизнес-логики, что увеличивало цикл разработки и тестирования. с большими данныеиз постоянно развиваются в последние годы, большие данныепостепенноиз К SQL разработка. Хотя цикл разработки и тестирования в определенной степени сократился из-за Компоненты данных решают различные сценарии приложений, часто требующие разных платформ для разработки и тестирования.
По вышеуказанным причинам Dataops Рождён по заявке. Операции обработки данных Какие проблемы решает архитектура, какие сценарии и как их решать. Здесь это описываться не будет. Если вам интересно, вы можете просмотреть соответствующую информацию. Что я знаю об этой архитектуре, так это то, что Alibaba Cloud является пионером, который в значительной степени решает возможности обработки различных компонентов унифицированной платформы разработки. Поскольку эта архитектура стала широко известна в отрасли, компании также начали разрабатывать аналогичные платформы. Что касается открытого исходного кода, появилось множество подобных платформ, таких как Streamx,Dinky И Weizhong с открытым исходным кодом DSS。
Тогда почему мы выбрали Вместо этого Динки Streamx Или Weizhong с открытым исходным кодом А что насчет ДСС? Не то Streamx Или Weizhong с открытым исходным кодом DSS не хорошо. Что касается инструментов, каждый из них имеет свои преимущества и сценарии. Во-первых, Динки основан на Платформа разработки данных на базе Flink нам удобна. FlinkSQL Выполняйте синхронизацию в реальном времени и в реальном времени ETL, за которым следует; Dinky Универсальные возможности,существовать Эффективность Это значительно сократило наши затраты на разработку с точки зрения эксплуатации и технического обслуживания. Еще один момент Dinky Будущее направление развития также больше соответствует потребностям наших сценариев. Исходя из вышеизложенного, мы выбрали Dinky В качестве нашей единой платформы для разработки данных. Для Перед использованием Динкии После использования Улучшения Динкииз в основном включают в себя следующие моменты:
Перед использованием Динки | После использования Динки | |
---|---|---|
Эффективность разработки | Требуется разработка Java | В основном используется SQL Разработка и поддержка Jar Операция |
Операция Эксплуатация и обслуживание | Нужно бороться Jar Сумкапредставлять на рассмотрениебегать Операция;Нетподдерживать Операция告警 | 界面化представлять на рассмотрение Операция,поддерживать Операция Тревога в реальном времени |
источник данных | Переключение платформ затруднено | поддерживатьмногоисточник управление данными, унифицированное без переключения платформ |
Синхронизация всей базы данных | Flink CDC не поддерживает | Поддержка Динки |
SQL представлять на рассмотрение | Flink sql-клиенту необходимо записать дополнительные sql-файлы | Нетнуждаться Писатьsqlдокумент,иподдерживатьдругойисточник данныхтипиз sql представлять на рассмотрение |
Проверка грамматики | Необходимо по опыту судить о правильности sql | Поддержка Динки Проверка грамматики Функция |
Отладка операторов | Нужно отлаживать через sql-клиент, взаимодействие не дружелюбное | поддерживать sql издружественнаяизинтерактивная отладка |
метаданные | Это неудобно для просмотра и требует дополнительной разработки программ. | Поддержка Динки Посмотреть с sql генерировать |
5. Резюме
Подводя итог, проходи Flink + Starrocks + Dinky Строить разработала единую платформу анализа данных, которая позволяет нам проводить эффективный анализ данных в режиме реального времени. В то же время существуют Flink CDC Синхронизация всей базы данных и Yarn Application Паттерны решили многие проблемы нашего развития.
Мы также следили за Dinky На заре развития сообщества в процессе возникло множество проблем. Спасибо большое партнёрам сообщества за то, что помогли вовремя решить проблему.
В процессе установки существуиспользовать мы обнаружили несколько проблем:
1. В существующем варианте арендаторов, разрешений и т.п. пока нет, а существующий поселок находится в стадии разработки;
2. Планирование не идеально, и сообщество уже находится в стадии разработки.
6. Планирование на будущее
1.Dinky Пакетная обработка Планированиебудущееиспользовать Apache DolphinScheduler;
2. После улучшения арендаторов и разрешений будут проводиться дальнейшие итерации версий.