Случай пользователя | Цепочка поставок Шухай
Shuhai Supply Chain - это предприятие, предоставляющее услуги в сфере цепочки поставок общественного питания, объединяющее продажи, исследования и разработки, закупки, производство, контроль качества, складирование, транспортировку, информацию и финансы. В начале 2021 года группа исследований и разработок в области больших данных Шухайского центра информационных технологий приступила к тестированию использования Apache DolphinScheduler в качестве системного инструмента планирования задач для центров обработки данных и различных проектов бизнес-продуктов. В этой статье в основном рассказывается об исследовании и инновациях Shuhai Supply Chain на ранней стадии внедрения старых версий Dolphin, а также об опыте процесса обновления и развертывания основных версий. Я надеюсь, что она будет вдохновлять и полезна для всех.
Об авторе
Ду Цюань, инженер по большим данным в цепочке поставок Шухай, участвовал в создании платформы больших данных Шухай и промежуточной платформы данных.
Введение в бизнес-историю
Основная деятельность нашей компании представлена на рисунке ниже:
Интегрированный опыт обновления
В процессе строительства центра обработки данных хорошие компоненты планирования больших данных часто позволяют добиться двойного результата с вдвое меньшими усилиями. Наша команда хорошо это понимает, поэтому мы выбрали Dolphin Scheduling в качестве системы планирования центра обработки данных цепочки поставок Шухай. после перехода от этапа трансформации развертывания связывающей интеграции версии 1.3.6 к этапу трансформации развертывания разъединенной интеграции v3.1.8. В ходе этого процесса возникали различные проблемы, и своевременно были предложены решения. Я поделюсь ими сейчас, надеясь, что это может помочь. . Всем моим друзьям.
01
Dolphin планирует интеграцию старой версии
Старой версией, интегрированной командой, была v1.3.6, которая стабильно работала в производственной среде более двух лет. Здесь мы кратко представляем детали интеграции в дата-центр и болевые точки, вызванные резким увеличением. объем бизнеса.
(1) Службы API и преобразование пользовательского интерфейса интегрированы в промежуточную платформу.
На основе вторичной разработки проекта dolphinscheduler-ui (с большим количеством изменений) адаптирован стиль средней платформы и различные меню планирования Dolphin (домашняя страница, управление проектом, центр ресурсов, центр источников данных, центр мониторинга). и центр безопасности) интегрированы в промежуточную платформу и объединены в шлюзе маршрутизации Тайваня.
Основанный на вторичной разработке проекта dolphinscheduler-api, он интегрирует трансформацию системы пользователей среднего уровня. Основные точки трансформации заключаются в следующем:
① Пункт улучшения 1: Реконструкция метода preHandle() класса-перехватчика LoginHandlerInterceptor.
② точка трансформации2:каждыйControllerМетод интерфейса в классе уровня управления добавляет метод для получения вошедшего в систему пользователя.getLoginUser()
метод
③ Пункт модификации 3: Изменение методов возвращаемых данных и пейджинговых данных.
(2) Преобразование сигналов тревоги для добавления сигналов DingTalk.
Версия v1.3.6 поддерживает только два типа групп тревог: электронную почту и SMS. Компания обычно получает информацию о тревогах через DingTalk, поэтому ей необходимо интегрировать типы тревог DingTalk. Основные точки трансформации заключаются в следующем:
①Шаг 1. Определите класс подключаемого модуля сигнализации DingAlertPlugin Dingding для реализации интерфейса AlertPlugin.,переписатьgetId()
、getName()
иprocess()
метод
②Шаг 2. Определите класс управления отправкой DingManager DingTalk.
③ Шаг 3. Напишите класс инструмента DingUtils для отправки сообщений в DingTalk.
④Шаг 4. Зарегистрируйте плагин оповещений DingTalk на AlertServer.
⑤ шаг5:Пакетирование, развертывание и изменениеdolphinscheduler-daemon.sh
Упакуйте и разверните логику в соответствии с конкретными модификациями.,Изменено здесьdolphinscheduler-alert-1.3.6.jar
иdolphinscheduler-dao-1.3.6.jar
Так что просто упакуйте эти два пакета. Кроме того, добавьте папку alertlib в путь установки и добавьте логику загрузки альтер-сервера в dolphinscheduler-daemon.sh.
(3) Отображение результатов интегрирования
Интегрированное меню центра обработки данных соответствует версии 1.3.6 Dolphin Scheduling, которая в основном включает в себя: домашнюю страницу, управление проектами, центр ресурсов, центр источников данных, центр мониторинга и центр безопасности. Эти меню интегрированы в наш центр обработки данных и. внешний интерфейс находится на платформе унифицированного шлюза маршрутизации.
(4) Болевые точки бизнеса старой версии v1.3.6.
process_definition_json
Поле большоеJSON Миссия и рабочий процесс Высокая степень сцепления,Разобрать JSON,Очень требовательно к производительности,И задачи нельзя использовать повторно; иначе это приведет к большой избыточности;,Плохая производительность,Серьезное потребление ресурсовУчитывая проблемы бизнеса первой версии интеграции v1.3.6 и выше, особенно важно обновить и реконструировать метод интеграции.
02
Dolphin отправляет обновление новой версии
Проблемы, с которыми сталкиваются аналитики данных в версии 1.3.6 в процессе переноса бизнес-анализа. В сочетании с лучшими функциями новой версии Dolphin Scheduling неизбежно произойдет обновление до более новой версии. интеграция Dolphin Scheduling в центр обработки данных и процесс обновления. Позвольте мне рассказать подробности. Я надеюсь, что это будет полезно для вас, когда вы столкнетесь с обновлением между версиями.
(1) Новая версия (v3.1.1) интегрирована в центр
В основном делится на: центр обработки данных — внешний интерфейс, центр обработки данных — серверная часть, служба API планирования Dolphin и кластер.
Основной процесс:данные Средняя платформа-Интерфейс запрашивает открытие меню планирования дельфина.->вызовданные Средняя платформаназад Получите логин пользователя диспетчера Dolphin на терминалеинформацияинтерфейс->Вернуть имя пользователя и пароль->Войдите в систему планирования Dolphin.->данные Средняя платформа-Внешний запрос на выход из учетной записи платформы->Интерфейс выхода из интерфейса планирования Dolphin->Выйти из системы
Разработка модели промежуточного пользователя для проекта интегрированного центра обработки данных Dolphin Scheduling
Целью разработки модели является, главным образом, установление связи между центром обработки данных и пользователями планирования Dolphin, чтобы после того, как пользователь центра обработки данных войдет в систему, когда он щелкнет меню планирования Dolphin, он мог получить соответствующую информацию для входа в систему планирования пользователя Dolphin и успешно авторизоваться.
(2) Последовательный переход на версию 1.3.6 и обновление до версии 3.1.8+.
Здесь я беру обновленную версию нашей производственной среды v1.3.6 в качестве отправной точки.,пройтиv2.0.0->2.0.9>3.0.0>3.1.0->3.18Эти версии итеративно обновляются.<Конечно, вы можете сделать шаг поменьше.,Может быть меньше проблем,Потому что ведь скрипт update_schema.sh, представленный на официальном сайте, подходит для небольших версий.,Для больших версий совместимость поддержки не идеальна.
В процессе обновления версии 2.0.0 в основном необходимо изменить часть исходного кода для совместимости с обновлением. В других версиях в основном необходимо изменить сценарий ddl, соответствующий схеме, для совместимости с обновлением. Кратко описан основной процесс обновления. следующее:
Загрузите все бинарные установочные пакеты новой стабильной версии (версии, подлежащей обновлению) и поместите бинарные пакеты по пути, отличному от текущего старого сервиса DolphinScheduler. Действия по обновлению необходимо выполнить в каталоге новой версии.
Примечание. Если необходимо обновить основные версии, особенно версии 2.0.0, вам необходимо загрузить пакет исходного кода 2.0.0. Подробности изменения см. в (3).
Создайте дамп из производственной среды или используйте команду dump для резервного копирования файла сценария базы данных. Некоторые несущественные данные таблицы журнала можно опустить, но структуру таблицы необходимо создать резервную копию.
В зависимости от версии до версии 2.0.9 структура каталогов выглядит примерно следующим образом:
После версии v3.0.0 структура каталогов выглядит примерно следующим образом:
Обычно изменения следуют принципу: сначала настраиваются схемы обновления, а затем настраиваются базовые файлы развертывания.
Для ≤v2.0.9,Обновление конфигурацииschemaНеобходимо изменитьconf/datasource.properties
файл и будетданные Пакет драйверов библиотеки находится вlibПросто в каталоге;и Настройка базовых файлов развертывания Необходимо изменитьconf/common.properties
、conf/config/install_config.conf
、conf/env/dolphinscheduler_env.sh
。
Для ≥v3.0.0,Обновление конфигурацииschemaно Необходимо изменитьbin/env/dolphinscheduler_env.sh
и будетданные Пакет драйверов библиотеки находится вtools/libs
Просто в каталоге;и Настройка базовых файлов развертыванияно Необходимо изменитьbin/env/install_env.sh、alert/master/worker/api-server/conf
внизcommon.properties
、application.yaml
。
Объясните здесь,Если это старая версия до v2.0.0,Тогда вы столкнетесь со сложной проблемой: Рабочий таблица определения процессабольшойJSONне разделен。Сначала вам нужно пройти официальнуюupdate-schema.sh
расколотьбольшойJSONИ в процессе внедрения будет много проблем.,Если только старая версия Рабочего вашей компании Идентификатор определения процесса не был удален и всегда увеличивался и непрерывно увеличивался, поскольку официальное определение рабочего процесс ОпределениеtasksЛогика разделения автоматически увеличивается.,Если его не удастся найти, будет сообщено об ошибке.,Поэтому исходный код версии 2.0.0 необходимо изменить для обеспечения совместимости.
Здесь будет проблема,при выполненииbin/install.sh
назад,Это должно произойти после версии 3.1.x., существоватьinstall.sh
Четвертый шаг<Прямо сейчас:4.delete zk node>Следующая ошибка появится в:
Примерно проанализировал это,После расследования и позиционирования было установлено, что упаковка с банкой пропала.,Я используюZookeeperВерсияv3.8.0。ирабочий-сервер/мастер-сервер/api-serverизlibs
Внизcommons-cli-1.2.jar
Он действительно не включен в исходный пакет.DefaultParserдобрый,Это потому, что версия 1.2 слишком низкая.
Решение:Внизнагрузка≥1.4изcommon-cli
Положите пакеты в каждый СлужитьпереписыватьсяизlibsВниз,Установите и разверните снова, и проблем не будет.,https://mvnrepository.com/artifact/commons-cli/commons-cli/1.4
,Эффект следующий:
Будет заметноеизERRORинформация:ERROR org.apache.zookeeper.util.ServiceUtils - Exiting JVM with code 0
,Хоть это и выглядит неудобно,Но не обращайте внимания на то, что это код выхода Zookeeper после нормального выполнения команды.,0 означает, что программа завершается нормально,если еще существуетсуществовать Если у вас есть какие-либо сомнения, вы можете открыть одинZookeeperклиент(bin/zkCli.sh)Ctrl+D
Попробуйте Внизпокидать。
Данные инициализации в основном включают в себя: арендаторов, пользователей, группы и экземпляры тревог, центры ресурсов, центры источников данных, управление средой и другое обслуживание информации. Они должны поддерживаться самостоятельно в соответствии с конкретными бизнес-сценариями компании. Проверка функции не будет описываться. здесь.
(3) Краткое описание проблем, возникших при последовательном обновлении.
Причина этой проблемы в том, что Рабочий необходимо разделить во время обновления до версии 2.0.0. таблица определения процессаprocess_definition_json
Поле,А количество определений «Рабочий процесс» у нас составляет 6463 (поскольку объем бизнеса продолжает расти).,Разделение требует много памяти,Недостаточно места в куче Java,В результате невозможно выделить больше памяти.,Это необходимо соответствующим образом настроить в соответствии с конфигурацией Служить параметра -Xmx.,Здесь я настроил его на -Xmx4g,Тогда обновление не будет проблемой.
Честно говоря, этот вопрос поначалу меня смутил. Он почти заставил меня отказаться от обновления до основных версий. Затем интуиция подсказала мне не паниковать, а сохранять спокойствие при возникновении проблем, поэтому я решительно скачал исходный код v2.0.0 и. Достигнув местоположения исходного кода, я изменил его после анализа, распечатал и записал журнал ошибок для последующего анализа. Во-первых, позвольте программе работать нормально. В процессе отладки я в основном изменил следующие моменты:
Первая модификация исходного кода направлена главным образом на то, чтобы избежать исключения нулевого указателя, вызванного пустым полем процессаDefinitionMap, как показано на следующем рисунке:
Вторая модификация исходного кода предназначена главным образом для того, чтобы избежать исключения нулевого указателя, вызванного получением узлом объекта задачи пустой информации описания, как показано на следующем рисунке:
Третья модификация исходного кода направлена главным образом на то, чтобы избежать исключения нулевого указателя, вызванного получением узлом объекта задачи preTasks, который пуст, как показано на следующем рисунке:
Эта проблема требует изменения официально предоставленного сценария DDL.,специфический Необходимо изменитьdolphinscheduler_ddl.sql
серединаt_ds_task_definition_log изtask_params
Поледлинаtext->longtextкиt_ds_task_instance
изtask_params
Поледлинаtext->longtext
,текст больше не может соответствовать требованиям к размеру хранилища параметров задачи.,Как показано ниже:
Эта проблема связана с тем, что она была добавлена в v2.0.9 и предыдущих версиях, а официальный скрипт не закомментирован.
Мое личное описание этой проблемы заключается в том, что диапазон версий слишком велик. Это также доказывает, что сценарий обновления можно обновлять только небольшими шагами и нельзя обновлять большими шагами. Если вы также столкнулись с большим обновлением версии, вы можете обратиться к . моя скользящая версия обновления, чтобы избежать обходных путей.
Измените официально предоставленный сценарий DDL.,Нужна корректировкаdolphinscheduler_ddl.sql,t_ds_worker_group
увеличение таблицыother_params_json
Поле,t_ds_process_instance
увеличение таблицыstate_history
Поле,Как показано ниже:
Измените официально предоставленный сценарий DDL.(существоватьv3.1.8середина3.1.1_schema
Вниз),Нужна корректировкаdolphinscheduler_ddl.sql
,t_ds_worker_group
увеличение таблицыdescription
Поле,Как показано ниже:
Эта совместимость в основном касается версий v3.0.0 и v3.1.1. Для v3.0.0 префикс копирования удален при копировании и импорте рабочих процессов; в качестве разделителя SQL по умолчанию используется точка с запятой; В версии 3.1.1 способ выполнения оболочки в Unix был изменен с sh на bash, и эти эффекты можно практически игнорировать.
(4) Отображение результатов интегрирования
Меню интеграции центра обработки данных определяется платформой. Меню входа только одно, а именно: Планирование Dolphin. Скриншот, встроенный в центр, представляет собой версию v3.1.8, которая будет быстро интегрирована позже. Статус и время Стили статуса Совсем неплохо.
Технический паспорт происхождения технологических инноваций
На основе расписания дельфинов определения процесса, мы также внедрили инновационную практику кровного родства таблицы данных, общая логика анализируется с помощью рабочего процессопределение,существоватьданныепроцесс циркуляциисередина基本都是кInsert...Select
Этот синтаксис,Используйте входную таблицу (оператор Select) и выходную таблицу (оператор Insert) в качестве процесса потока для построения графа потока DAG родословной данных, чтобы расширить возможности нашего бизнеса.,Это эквивалентно вставке пары глаз в центр данных.,Реально визуализируйте процесс циркуляции таблицы данных.,Все они разработаны с учетом планирования дельфинов в качестве основного пункта.
(1) Анализ происхождения данных
общая архитектура
Анализ происхождения таблицы SQL,Мы используем Druid от Alibaba.,Рекомендуемая версия (≥V1.2.6),Druid по-прежнему очень силен в анализе SQL.,Его типы TableStatпод контролемMerge, Insert, Update, Select, Delete, Drop, Create, Alter, CreateIndex, DropIndex и могут комбинироваться в соответствии с синтаксисом.,Например: Вставить Выбрать,насиз Анализ происхождения выполняет несколькоinsert...select
Разбор операторов,Используйте точку с запятой для разделения нескольких;
(2) Запрос происхождения данных
(3) Полный запрос родословной
Полный запрос родословной может интуитивно отображать определение рабочего процесса проекта Dolphin Scheduling Project в виде таблиц ввода и вывода, а также быстро запрашивать и находить определенную задачу, что очень удобно для наших аналитиков данных.
(4) Работа с аномальными кровными родственниками
В процессе анализа происхождения данных неизбежно возникают исключения при анализе операторов SQL. Мы также приняли это во внимание. Общий процесс обработки исключений выглядит следующим образом.
Преимущества пользователя
Резюме и благодарности
Надо сказать, что мощные интегрированные возможности подключаемых модулей расширений, предоставляемые Apache DolphinScheduler, значительно повысили эффективность обработки, интеграции и разработки корпоративных данных и действительно обеспечили эффективный поток анализа бизнес-данных предприятия.
В нашей первой версии развертывания интеграции центра обработки данных использовалась версия v1.3.6. В настоящее время сообщество выпустило версию 3.1.8, и на этот раз мы также периодически обновляемся до последней версии v3.1.8. Мы также следим за темпами развития сообщества. Официальное сообщество v3.2.0 также находится в стадии разработки. вверх. Высокая скорость итерации также отражает рост числа групп пользователей с каждым днем. Если ваша компания пытается выбрать компонент планирования больших данных, мы настоятельно рекомендуем использовать Dolphin Scheduling.
Присоединяйтесь к сообществу и присоединяйтесь к DS Group. DS также будет проводить еженедельные сеансы часто задаваемых вопросов, чтобы своевременно отвечать на ваши вопросы и предоставлять внимательное обслуживание. Вы этого заслуживаете.
Настоятельно рекомендуется использовать Apache DolphinScheduler. Если вы правильно выберете расписание, вы рано вернетесь домой с работы, если вы правильно выберете расписание, вы сможете спокойно спать посреди ночи! Я надеюсь, что каждый сможет извлечь из этого пользу и попрощаться с 996.
Наконец, я искренне желаю, чтобы экосистема Apache DolphinScheduler становилась все лучше и лучше!
Профиль пользователя
Шухай (Пекин) Компания по управлению цепочками поставок, ООО
Отрасль: Общая цепочка поставок продуктов питания
Компания Shuhai Supply Chain была основана в июне 2014 года. Это предприятие, предоставляющее услуги в сфере цепочки поставок общественного питания, объединяющее продажи, исследования и разработки, закупки, производство, обеспечение качества, складирование, транспортировку, информацию и финансы. В настоящее время оно предоставляет услуги большому количеству цепочек общественного питания. предприятия и розничные клиенты. Общие услуги по решению цепочки поставок продуктов питания.
В Шухае имеются современные логистические центры холодовой цепи, пищевые заводы, центры переработки овощей и фруктов, перерабатывающие предприятия по переработке основного сырья и другие базы по всей стране. Предоставляйте качественные услуги клиентам общественного питания с помощью безопасной и прозрачной системы цепочки поставок и решайте болевые точки, которые трудно стандартизировать в сфере общественного питания. Благодаря постоянным исследованиям и совершенствованию в области производства экологически чистых овощей, исследований и разработок блюд, а также индустриализации стандартов общественного питания, Shuhai получила признание отраслевых органов и клиентов и стала эталонным предприятием в области цепочки поставок.
Участвуйте и вносите свой вклад
В связи с быстрым ростом открытого исходного кода в Китае сообщество Apache DolphinScheduler переживает бум. Чтобы сделать планирование более полезным и простым в использовании, мы искренне приветствуем партнеров, которые любят открытый исходный код, присоединиться к сообществу открытого исходного кода и внести свой вклад в развитие. открытого исходного кода в Китае. Пусть местный открытый исходный код станет глобальным.
участвовать DolphinScheduler В сообществе много Участвуйте и вносите свой способы вклада, в том числе:
Мы также надеемся, что внести первый PR (документацию, код) будет несложно. Первый PR используется для ознакомления с процессом подачи заявок и сотрудничества с сообществом, а также для того, чтобы почувствовать дружелюбие сообщества.
Сообщество составило следующий список задач, подходящих для новичков: https://github.com/apache/dolphinscheduler/issues/5689
Список проблем для новичков: https://github.com/apache/dolphinscheduler/issues?q=is%3Aopen+is%3Aissue+label%3A%22volunteer+wanted%22.
как Участвуйте и вносите свой вклад Связь:https://dolphinscheduler.apache.org/zh-cn/community/development/contribute.html
Еще больше интересных рекомендаций
☞Apache DolphinScheduler поддерживает использование OceanBase в качестве базы данных метаданных!
☞Практическое руководство | Реализация триггера Apache DolphinScheduler Автоматический сигнал тревоги при сбое DingTalk
☞Еще один раунд сбора призов за выдающиеся пользовательские кейсы. Приходите и отправляйте заявки!
☞В прошлом году я провела без вас очень много встреч, так что поторопитесь и готовьтесь к 2023 году!
☞3.2.0 Окончательный предварительный просмотр! Добавлена встроенная поддержка облака. Spark on k8S поддерживать
☞3.2.0 Предварительный просмотр версии! Разрешение удаленного журнала Worker Проблема невозможности получения логов