Система планирования больших данных является движущей силой всех задач автономной пакетной обработки и вычислительных задач в квазиреальном времени. Здесь я классифицировал, обобщил и сравнил несколько распространенных систем планирования.
Oozie — это система координации рабочих процессов, разработанная Cloudera для Apache. Она в основном используется для управления заданиями Hadoop.
Унифицированное планирование запуска общих задач mr, Java MR, Streaming MR, Pig, Hive, Sqoop, Spark, Shell и т. д. в системе Hadoop.
Задачи планирования, связанные с конфигурацией, сложны, а зависимости, триггеры времени и триггеры событий выражаются с использованием языка XML.
Статус задачи, тип задачи, машина, выполняющая задачу, время создания, время начала, время завершения и т. д.
Поддержка запуска/остановки/паузы/возобновления/повторного запуска: Поддержка запуска/остановки/паузы/возобновления/повторного запуска.
HA (высокая доступность) может поддерживаться через БД. При планировании задач могут возникать взаимоблокировки, которые зависят от текущей версии кластера. При обновлении до последней версии текущий кластер может оказаться несовместимым.
Azkaban — это планировщик задач пакетного рабочего процесса, запущенный Linkedin. Он в основном используется для запуска набора задач и процессов в определенном порядке в рамках рабочего процесса. Его настройка осуществляется с помощью простой пары ключ:значение. Зависимости в конфигурации используются для установки. зависимости Эта зависимость должна быть ациклической, иначе она будет считаться недопустимым рабочим процессом. Azkaban использует файлы конфигурации заданий для установления зависимостей между задачами и предоставляет простой в использовании веб-интерфейс пользователя для поддержки и отслеживания вашего рабочего процесса.
команды, HadoopShell, Java, HadoopJava, Pig, Hive и т. д. поддерживают подключаемые расширения.
В реальных проектах часто встречаются такие сценарии: каждый день есть большая задача. Эту большую задачу можно разделить на четыре маленькие задачи A, B, C и D. Между задачами A и B нет зависимости. Задача C зависит от. результаты задач A и B. Задача D зависит от результата задачи C. Общий подход заключается в том, чтобы открыть два терминала и одновременно выполнить A и B. После того, как оба будут выполнены, выполните C и, наконец, выполните D. В этом случае весь процесс выполнения требует ручного участия, а ход выполнения каждой задачи необходимо отслеживать. Но многие наши задачи выполняются посреди ночи, и мы настраиваем выполнение crontab, написав скрипты. По сути, весь процесс аналогичен ориентированному ациклическому графу (DAG). Каждая подзадача эквивалентна потоку в большой задаче. Начальная точка задачи может выполняться из узла без степени, а любой узел без пути может выполняться одновременно, например A и B выше. Подводя итог, нам нужен планировщик рабочих процессов, а Азкабан — планировщик, который может решить вышеуказанные проблемы.
Предоставляйте файлы конфигурации заданий, чтобы быстро устанавливать задачи и зависимости между задачами, рисовать DAG с помощью специального DSL, а также упаковывать и загружать их.
Виден только статус задачи.
Рабочий процесс можно только завершить и запустить заново.
Высокая доступность поддерживается через БД, и сервер будет зависать, если задач будет слишком много.
Airflow — это инструмент планирования с открытым исходным кодом, написанный на Python от Airbnb. Запущенный в 2014 году, весной 2015 года он стал открытым исходным кодом, а в 2016 году присоединился к инкубационной программе Apache Software Foundation. Airflow определяет весь рабочий процесс через DAG, который представляет собой направленный ациклический граф, поэтому имеет очень мощные возможности выражения.
Поддерживает Python, Bash, HTTP, Mysql и т. д., а также поддерживает пользовательские расширения оператора.
Для определения процесса необходим код Python.
Не интуитивно.
Убейте задачу и перезапустите.
Слишком много задач приведет к зависанию.
XXL-JOB — это легкая платформа распределенного планирования задач с открытым исходным кодом, обладающая богатыми функциями управления задачами, высокой производительностью и высокой доступностью. Ее основные цели разработки — быстрая разработка, простота обучения, легкость, простота расширения и готовность к использованию сразу после запуска. коробка.
На основе Java.
Нет, но можно настроить зависимости между задачами.
никто
Можно приостановить и возобновить.
Поддержите ХА. Задача основана на механизме очереди и опроса.
DolphinScheduler — это система планирования с открытым исходным кодом, разработанная China Analysys в этом (2019) году. 29 августа 2019 года по американскому времени система распределенного планирования задач Analysys DolphinScheduler (ранее EasyScheduler) была официально одобрена ведущей организацией с открытым исходным кодом Apache Foundation. Согласно списку рассылки Apache Foundation, резолюция голосования содержит 11 обязательных голосов (обязательных). голосов) и 2 необязательных голоса votes)Все голоса были за,никтовоздержался и возражения,Голосование прошло гладкопроходить,Таким образом, единогласно проголосовав за проведение, он официально стал проектом-инкубатором Apache.
Apache DolphinScheduler — это распределенная, децентрализованная и легко масштабируемая визуальная система планирования задач рабочих процессов DAG. Она предназначена для решения сложных зависимостей в процессе обработки данных, поэтому систему планирования можно использовать в процессе обработки данных «из коробки».
Поддерживает традиционные задачи оболочки и планирование задач платформы больших данных: MR, Spark, SQL (mysql, postgresql, hive/sparksql), python, процедура, sub_process.
Все операции с потоками и временем являются визуальными. DAG можно нарисовать путем перетаскивания, а источники данных и ресурсы можно настроить. В то же время операции API предоставляются для сторонних систем.
Статус задачи, тип задачи, количество повторов, компьютер, выполняющий задачу, визуальные переменные и журнал выполнения потока задач.
Поддерживает операции паузы, возобновления и дополнения.
Поддерживает HA, децентрализованную систему Multi-Master и Multi-Worker. Пользователи DolphinScheduler могут реализовать отношения сопоставления «многие к одному» или «один к одному» между арендаторами и пользователями Hadoop. Никто не может добиться детального авторитетного контроля.
Благодаря механизму очереди задач количество задач, которые можно запланировать на одной машине, можно гибко настроить. Если задач слишком много, они будут кэшироваться в очереди задач, и машина не будет зависать.
Планировщик использует распределенное планирование. Общие возможности планирования будут линейными в зависимости от масштаба кластера, поддерживают динамический режим онлайн и офлайн и могут быть свободно настроены.
Пользователям может быть разрешен доступ к ресурсам, проектам и источникам данных. Поддержка, визуальное управление файлами и сопутствующими UDF-функциями и т.д.