2017-04-14 2 views
0

Selon NiFi's homepage, il "prend en charge des graphes orientés puissants et évolutifs de routage de données, de transformation et de logique de médiation système".Utilisation de NiFi pour la planification des processus par lots Hadoop

J'ai joué avec NiFi au cours des derniers mois et je ne peux pas m'empêcher de me demander pourquoi ne pas l'utiliser aussi pour programmer des processus par lots. Supposons que j'ai un cas d'utilisation dans lequel les données sont transférées dans Hadoop, traitées par une série de travaux Hive \ MapReduce, puis exportées vers une base de données externe NoSql pour être utilisées par certains systèmes.

L'utilisation de NiFi pour l'acquisition et le flux de données dans Hadoop est un cas d'utilisation pour lequel NiFi a été conçu. Cependant, l'utilisation de Nifi pour planifier les travaux sur Hadoop ("Oozie-like") est un cas d'utilisation que je n'ai pas rencontré d'autres utilisateurs, et comme il semble tout à fait possible de l'implémenter, j'essaie de comprendre s'il y a sont des raisons de ne pas le faire. Le gain de tout cela sur NiFi est que l'on obtiendra une représentation visuelle de tout le cours des données, de la source à la destination en un seul endroit. En cas de flux compliqués, il est très important pour la maintenance. En d'autres termes - ma question est: Y a-t-il des raisons de ne pas utiliser NiFi comme un ordonnanceur \ coordinateur pour les processus par lots? Si oui, quels problèmes peuvent survenir dans un tel cas d'utilisation?


PS - J'ai lu ceci: « Is Nifi having batch processing? » - mais ma question vise à un sens différent de « traitement par lots dans Nifi » que celle soulevée dans la question ci-joint

Répondre

0

Vous avez raison vous auriez une représentation visuelle concise de toutes les étapes du processus où les déclencheurs d'horaires étaient présents sur le canevas de flux, mais NiFi n'était pas conçu comme un planificateur/coordinateur. Here is a comparison of some scheduler options. L'utilisation de NiFi pour contrôler la planification ressemble à une solution «marteau» à la recherche d'un problème. Cela réduira la facilité de définir ces programmes par programme ou d'interagir avec eux à partir d'outils externes. Théoriquement, vous pouvez définir le format de planification, les lire dans NiFi à partir d'un fichier, d'une source de données, d'un point de terminaison, etc. et utiliser les processeurs ExecuteStreamCommand, ExecuteScript ou InvokeHTTP pour lancer le traitement par lots. Cela ressemble à introduire une étape intermédiaire inutile cependant. Si la visualisation de consolidation est ce que vous recherchez, vous pouvez demander à un segment de flux de contrôle d'intégrer ces définitions de calendrier dans leur format natif (Oozie, XML, etc.) et de les afficher dans NiFi sans que NiFi soit responsable de la définition et de l'exécution de la planification.

+0

Merci pour votre réponse. Je vais essayer de clarifier ma question: je suis au courant des avantages de NiFi (et du fait que les données doivent circuler à travers NiFi pour les gagner), et j'ai l'intention de les utiliser quand c'est pertinent. Cependant, dans de nombreux cas d'utilisation, je veux exécuter des traitements par lots et me demander ce que je vais manquer \ où vais-je échouer si je le fais. – giladovich