Différence entre Apache NiFi et StreamSets

je planifie de faire un projet de classe et je passais par quelques technologies où je peux automatiser ou définir le flux de données entre les systèmes et a constaté qu'il y a deux D'entre eux i.e. Apache NiFi et StreamSets ( à ma connaissance ). Ce que je ne pouvais pas comprendre c'est la différence entre eux et les cas d'utilisation où ils peuvent être utilisés? Je suis nouveau à cela et si quelqu'un peut m'expliquer un peu serait très appréciée. Merci

25
demandé sur metadaddy 2016-04-27 22:51:35

4 réponses

Suraj,

grande question.

ma réponse est en tant que membre du comité de gestion du projet open source Apache NiFi et en tant que personne passionnée par le domaine de la gestion du flux de données.

je participe au projet NiFi depuis ses débuts en 2006. Ma connaissance des Streamsets est relativement limitée donc je vais les laisser parler pour elle comme ils l'ont fait.

ce qu'il faut comprendre, c'est que la NiFi a été construite pour faire un truc vraiment important chose vraiment bien et c'est "Dataflow Management". Son design est basé sur un concept appelé Flow Based Programming que vous pouvez lire et consulter pour votre projet 'https://en.wikipedia.org/wiki/Flow-based_programming'

il existe déjà de nombreux systèmes qui produisent des données telles que des capteurs et d'autres. Il existe de nombreux systèmes qui se concentrent sur le traitement des données comme Apache Storm, Spark, Flink, et d'autres. Et enfin il y a beaucoup de systèmes qui stockent des données comme HDFS, bases de données relationnelles,etc. NiFi se concentre uniquement sur la tâche de connecter ces systèmes et de fournir l'expérience utilisateur et les fonctions de base nécessaires pour bien le faire.

Quelles sont les principales fonctions et les choix de conception pour assurer l'efficacité de:

1) commande et contrôle interactifs

le travail de quelqu'un qui essaie de connecter les systèmes est d'être capable d'interagir rapidement et efficacement avec les flux constants de données voir. L'interface utilisateur de NiFi vous permet de faire exactement cela au fur et à mesure que les données s'écoulent, vous pouvez ajouter des fonctionnalités pour les exploiter, dévier des copies de données pour essayer de nouvelles approches, ajuster les paramètres actuels, voir des statistiques récentes et historiques, de la documentation en ligne utile et plus encore. Presque tous les autres systèmes par comparaison ont un modèle qui est la conception et le déploiement orientée, ce qui signifie que vous faites une série de changements, puis les déployer. Ce modèle est très bien et peut être intuitif, mais pour le travail de gestion du flux de données il signifie que vous n'obtenez pas le changement interactif par la rétroaction sur le changement qui est tellement essentiel pour construire rapidement de nouveaux flux ou pour corriger ou améliorer de façon sûre et efficace la gestion des flux de données existants.

2) Provenance Des Données

une capacité très unique de NiFi est sa capacité à générer des détails de traçabilité fins et puissants pour l'origine de vos données, ce qui est fait à elle, où son Envoyé Et quand il est fait dans le flux. Cela est essentiel à une gestion efficace du débit de données pour un certain nombre de raisons mais pour quelqu'un dans les premières phases d'exploration et de travail d'un projet la chose la plus importante que cela vous donne est impressionnant débogage flexibilité. Vous pouvez configurer vos flux et laisser les choses tourner et ensuite utiliser la provenance pour réellement prouver qu'il a fait exactement ce que vous vouliez. Si quelque chose ne s'est pas passé comme prévu, vous pouvez corriger le flux et rejouer l'objet puis répéter. Vraiment utile.

3) dépôts de données spécialement conçus

L'expérience de NiFi out of the box offre des performances très puissantes même sur des environnements matériels ou virtuels très modestes. Cela est dû à la conception du flowfile et du référentiel de contenu qui nous donne la sémantique de haute performance mais transactionnelle que nous voulons, car les données se frayent un chemin à travers le flux. Le dépôt flowfile est une simple implémentation de journal en écriture anticipée et le dépôt de contenu fournit une mémoire de contenu versionnée immuable. Cela signifie à son tour que nous pouvons "copier" des données en ajoutant seulement un nouveau pointeur (pas réellement copier des octets) ou nous pouvons transformer des données en lisant simplement de l'original et en écrivant une nouvelle version. Encore une fois très efficace. Ajoutez à cela le truc de provenance que j'ai mentionné il y a un instant et ça fournit juste une plate-forme vraiment puissante. Une autre chose vraiment importante à comprendre ici est que dans le domaine de la connexion des systèmes, vous ne pouvez pas toujours dicter des choses comme la taille des données impliquées. L'API NiFi a été construite pour honorer ce fait et donc notre API permet aux processeurs de faire des choses comme recevoir, transformer, et envoyer des données sans jamais avoir à charger tous les objets en mémoire. Ces référentiels signifient également que dans la plupart des flux, la majorité des processeurs ne touchent même pas le contenu. Cependant, vous pouvez facilement voir à partir de L'interface NiFi combien d'octets sont réellement lus ou écrits.vous obtenez donc à nouveau des informations très utiles pour établir et observer vos flux. Cette conception signifie également que NiFi peut supporter la contre-pression et le relâchement de la pression naturellement et ceux-ci sont vraiment caractéristiques critiques pour un système de gestion du débit de données.

il a été mentionné précédemment par les gens de la société Streamsets que NiFi est axée sur les fichiers. Je ne sais pas vraiment quelle est la différence entre un fichier ou un enregistrement ou un tuple ou un objet ou un message en termes génériques, mais la réalité est que lorsque les données sont dans le flux, alors c'est "une chose qui doit être gérée et délivrée". C'est ce que NiFi. Que vous ayez beaucoup de petites choses à grande vitesse ou que vous ayez de grandes les choses et si elles viennent d'un flux audio en direct de L'Internet ou ils viennent d'un dossier Assis sur votre disque dur, il n'a pas d'importance. Une fois qu'il est dans le flux, il est temps de le gérer et de le livrer. C'est ce que NiFi.

il a également été mentionné par la société Streamsets que la NiFi est sans schéma. Il est exact que NiFi ne force pas la conversion des données de ce qu'il est à l'origine à un format NiFi spécial, ni nous devons le reconvertir à un certain format pour suivi de la livraison. Il serait plutôt regrettable que nous le fassions, car cela signifie que même les cas les plus insignifiants auraient des répercussions problématiques sur le rendement et, heureusement, le NiFi n'a pas ce problème. Plus loin, si nous avions suivi cette voie, cela signifierait que la gestion de divers ensembles de données comme les médias (images, vidéo, audio, et plus) serait difficile, mais nous sommes sur la bonne voie et NiFi est utilisé pour des choses comme ça tout le temps.

enfin, comme vous continuez avec votre projet et si vous trouvez qu'il y a des choses que vous aimeriez voir amélioré ou que vous aimeriez contribuer code que nous aimerions avoir votre aide. De https://nifi.apache.org vous pouvez trouver rapidement des informations sur la façon de déposer des billets, soumettre des correctifs, envoyer un courriel à la liste de diffusion, et plus encore.

voici quelques projets amusants de NiFi récents à vérifier: https://www.linkedin.com/pulse/nifi-ocr-using-apache-read-childrens-books-jeremy-dyer https://twitter.com/KayLerch/status/721455415456882689

bonne chance pour le projet de classe! Si vous avez des questions users@nifi.apache.org mailing list aimerait vous aider.

Merci Joe

52
répondu Joe Witt 2016-04-28 16:59:29

Apache NiFi et StreamSets Data Collector sont des outils open source sous licence Apache.

Hortonworks possède une variante commercialement supportée appelée Hortonworks DataFlow (HDF).

bien que les deux aient beaucoup de similitudes, comme une interface utilisateur basée sur le web, les deux sont utilisées pour ingérer des données, il y a quelques différences clés. Ils consistent aussi tous les deux en des processeurs reliés entre eux pour effectuer des transformations, des sérialisations, etc.

les processeurs NiFi sont orienté fichier et sans schéma. Cela signifie qu'un morceau de données est représenté par un FlowFile (ce pourrait être un fichier réel sur le disque, ou un blob de données acquises ailleurs). Chaque processeur est responsable pour la compréhension du contenu des données afin de les exploiter. Ainsi, si un processeur comprend le format A et qu'un autre ne comprend que le format B, vous devrez peut-être effectuer une conversion de format de données entre ces deux processeurs.

NiFi peut être utilisé seul, ou comme cluster en utilisant son propre système de clustering intégré.

StreamSets Data Collector (SDC) cependant, adopte une approche basée sur les enregistrements. Cela signifie que lorsque les données entrent dans votre pipeline il (si son JSON, CSV, etc) il est divisé dans un format commun de sorte que la responsabilité de comprendre le format de données n'est plus placé sur chaque processeur individuel et n'importe quel processeur peut être connecté à n'importe quel autre processeur.

SDC fonctionne aussi en mode autonome, et aussi en mode groupé, mais il exécute atop Spark sur fil / Mesos à la place, en tirant parti des ressources cluster existantes que vous pouvez avoir.

NiFi existe depuis environ 10 ans (mais moins de 2 ans dans la communauté open source).

StreamSets a été publié dans la communauté open source un peu plus tard en 2015. Il est agnostique vendeur, et en ce qui concerne Hadoop va Hortonworks, Cloudera, et MapR sont tous pris en charge.

divulgation complète: je suis un ingénieur qui travaille sur des StreamSets.

23
répondu ramblingpolak 2016-04-28 03:04:09

deux des principaux différenciateurs entre les deux IMHO sont.

  1. Apache NiFi est un projet Apache de haut niveau, ce qui signifie qu'il est passé par le processus d'incubation décrit ici,http://incubator.apache.org/policy/process.html, et peut accepter des contributions de développeurs à travers le monde qui suivent le processus Apache standard qui assure la qualité du logiciel. StreamSets, est sous licence Apache, ce qui signifie que n'importe qui peut réutiliser le code, etc. Mais le projet est pas géré comme un projet Apache. En fait, pour même contribuer à Streamsets, vous êtes tenu de signer un contrat. https://streamsets.com/contributing/