Использование NiFi для планирования пакетных процессов Hadoop

Согласно домашней странице NiFi, он «поддерживает мощные и масштабируемые ориентированные графы маршрутизации, преобразования и логики системного посредничества. ".

Я играл с NiFi последние пару месяцев и не могу не задаться вопросом, почему бы не использовать его также для планирования пакетных процессов.

Допустим, у меня есть вариант использования, в котором данные поступают в Hadoop, обрабатываются серией заданий Hive \ MapReduce, а затем экспортируются в некоторую внешнюю базу данных NoSql для использования какой-либо системой.

Использование NiFi для приема и передачи данных в Hadoop - это вариант использования, для которого был создан NiFi.
Однако использование Nifi для планирования заданий в Hadoop («похожее на Oozie») - это вариант использования, о котором я не знаю. Я столкнулся с другими, внедряющими, и, поскольку это кажется вполне возможным реализовать, я пытаюсь понять, есть ли причины не делать этого.

Преимущества выполнения всего этого на NiFi заключаются в том, что вы получите визуальное представление всего курса данных от источника до места назначения в одном месте. В случае сложных потоков это очень важно для обслуживания.

Другими словами, мой вопрос: Есть ли причины не использовать NiFi в качестве планировщика \ координатора для пакетных процессов? Если да, то какие проблемы могут возникнуть в таком случае?


PS - Я читал это: «Есть ли у Nifi пакетная обработка?» - но мой вопрос направлен на другой смысл "пакетной обработки в NiFi", чем тот, который поднят в прилагаемом вопросе


person giladovich    schedule 14.04.2017    source источник


Ответы (1)


Вы правы, что у вас было бы краткое визуальное представление всех этапов процесса, если бы триггеры расписания присутствовали на холсте потока, но NiFi не был разработан как планировщик / координатор. Вот сравнение некоторых параметров планировщика.

Использование NiFi для управления расписанием похоже на решение «молотка» в поисках проблемы. Это упростит программное определение этих расписаний или взаимодействие с ними из внешних инструментов. Теоретически вы можете определить формат расписания, считывать их в NiFi из файла, источника данных, конечной точки и т. Д. И использовать процессоры ExecuteStreamCommand, ExecuteScript или InvokeHTTP для запуска пакетного процесса. Однако это похоже на ненужный промежуточный шаг. Если консолидация и визуализация - это то, что вы собираетесь, у вас может быть сегмент потока мониторинга, который принимает эти определения расписания из их собственного формата (Oozie, XML и т. Д.) И отображает их в NiFi, не возлагая на NiFi ответственность за определение и выполнение расписания.

person Andy    schedule 17.04.2017
comment
Спасибо за Ваш ответ. Я попытаюсь прояснить свой вопрос: я знаю о преимуществах NiFi (и о том, что данные должны проходить через NiFi, чтобы получить их), и намерен использовать их, когда это необходимо. Однако во многих случаях я хочу запускать пакетные процессы и задаваться вопросом, что я пропущу \ где я потерплю неудачу, если я это сделаю. - person giladovich; 17.04.2017