Apache Apex – Une introduction
Publié: 2015-12-29Apache Hadoop est devenu un cadre logiciel de facto pour une informatique fiable, évolutive, distribuée et à grande échelle. Depuis sa création, Hadoop est le framework de premier choix pour le traitement par lots. Des grandes banques aux géants de la vente au détail en ligne, tout le monde utilise Hadoop pour la génération de rapports périodiques, les calculs et bien d'autres cas d'utilisation. En règle générale, ces cas d'utilisation sont des processus orientés par lots et nécessitent quelques heures avant que nous puissions tirer un sens des données. Le monde rapide d'aujourd'hui exige un sens ou des actions à partir de données brutes presque au moment où elles sont générées. Cela a conduit à un concept de traitement de flux. Bien que Hadoop ne soit pas considéré à l'origine comme adapté au traitement de flux, l'invention de YARN (Hadoop 2.0) en a fait un bon candidat. Il existe actuellement plusieurs frameworks de traitement de flux dans l'écosystème Hadoop et Apex est un tout nouveau qui entre sur ce marché encombré.
Qu'est-ce qu'Apache Apex ?
Apache Apex est une plate-forme native basée sur YARN qui aide les développeurs d'applications à écrire des applications orientées flux ainsi que des applications orientées batch. Il est conçu pour traiter les données en mouvement, de manière distribuée, hautement performante et tolérante aux pannes. La cerise sur le gâteau est l'API facile, qui permet aux utilisateurs d'écrire leur code Java avec une connaissance limitée du traitement des flux.
L'Apex est basé sur des spécifications fonctionnelles et opérationnelles distinctes plutôt que de les combiner. Cela permet aux développeurs d'applications de se concentrer sur l'écriture de fonctions définies par l'utilisateur sans avoir à réfléchir à la manière dont elles fonctionneront dans un environnement distribué.
Apache Apex possède une riche bibliothèque de fonctions couramment utilisées. Ceux-ci sont ajoutés dans le cadre de la bibliothèque Apache Apex-Malhar. Cette bibliothèque a des opérateurs pour accéder à différents systèmes de fichiers, bases de données, files d'attente de messages. La communauté ajoute des opérateurs au jour le jour, ce qui facilite la vie des développeurs d'applications.
Que sont les blocs de base d'Apache Apex ?
L'architecture d'Apex est très simple. Apex a Malhar, une bibliothèque d'opérateurs et un moteur principal avec lequel travailler. Le noyau d'Apex pourrait être décrit comme suit, ils sont souvent appelés blocs majeurs d'Apache Apex.

Vous pouvez clairement séparer les calques et obtenir un aperçu de l'endroit où il se situe. Voyons des informations sur ces blocs.
- StrAM ( Str eam Application Master)
StrAM est un maître d'application YARN. Sa responsabilité comprend le lancement de l'application de flux, l'allocation des ressources, la planification des DAG logiques. Parallèlement à ces opérations YARN, StrAM initialise les opérateurs, les flux. StrAM rassemble également des statistiques de ses enfants. - Instantané de l'état
Les frameworks de traitement de flux ne pouvaient pas se permettre de perdre les résultats traités. De plus, ils doivent savoir combien ils ont traité afin de traiter correctement les enregistrements après avoir récupéré de l'échec. Ainsi, périodiquement, le pointage de contrôle est important dans le traitement des flux. Dans Apex, StrAM garde une trace du pointage de contrôle et à la limite de l'opérateur, un pointage de contrôle périodique est effectué sur HDFS. - API REST
StrAM est le point d'accès pour l'API REST. Les outils externes peuvent accéder à cette API REST et s'intégrer à n'importe quelle application externe. - Outils
Apex fournit une CLI pour lancer et surveiller les applications Apex. Même nous pouvons créer le nôtre à l'aide des API REST. Avec la CLI, l'application peut être configurée avec des scripts de configuration statiques pour un lancement automatisé. - Partitionnement
- Modifications dynamiques
- Analyse SLA
Apache Apex effectue lui-même périodiquement une analyse SLA. Il analyse la latence, les goulots d'étranglement et le débit et ajoute plus de ressources pour respecter le SLA configuré. - Sécurité
- La haute disponibilité
Apache Apex utilise la fonctionnalité de redémarrage de YARN et redémarre à partir du dernier état pointé de vérification. - Malhar
Apache Apex –Malhar est une bibliothèque d'opérateurs avec de nombreux opérateurs. Ces opérateurs sont classés en - Opérateurs d'entrée/sortie –
Dans cette catégorie, Malhar a actuellement des opérateurs pour lire/écrire à partir de - Système de fichiers
- SGBDR
- Magasins NoSQL
- Files d'attente de messages
- Bases de données en mémoire
- Réseaux sociaux
- Opérateurs de calcul –
- Correspondance de modèle
- Statistiques et mathématiques
- Apprentissage automatique
- Analyseurs
- Réseaux sociaux
- Serveurs tampons
Apex fournit un partitionnement basé sur des clés et un équilibrage de charge dynamique. Même l'utilisateur peut définir son propre schéma de partitionnement.
Apache Apex possède cette fonctionnalité très utile et unique. Il prend en charge le changement de DAG logique, le changement de plan d'exécution physique.
Apex prend en charge Kerberos. Sous-jacent au cluster Hadoop sécurisé, il peut accéder à l'intégration Kerberos inhérente.
Malhar a de nombreux opérateurs qui aideront à la mise en œuvre réelle de la logique métier. Cette bibliothèque a
Les serveurs tampons se trouvent à chaque limite d'opérateur. En cas de données, les serveurs tampons d'opérateurs locaux peuvent se trouver après des chaînes d'opérateurs. Leur objectif principal est de conserver temporairement les données sur les bords avant de les transmettre au suivant. Ils jouent un rôle important lorsque le nœud est récupéré après une panne. Les serveurs tampons chargent les données du dernier état de point de contrôle pour les rejouer

Qu'est-ce qu'un modèle de programmation d'application Apex ?
Cela comprend un cadre riche et une bibliothèque Malhar, ce qui signifie que les développeurs d'applications n'ont qu'à connecter les opérateurs et lancer l'application. Par conséquent, votre application n'est rien d'autre qu'une séquence d'opérateurs.

C'est ainsi que le framework riche facilite la vie du développeur. Voyons donc comment cette application de démonstration fonctionne
Démo Apache Apex
Commençons donc par ' Hello World of Big Data J', une petite démo de comptage de mots utilisant Apache Apex.
Configuration d'Apache Apex
Pour exécuter cette démo, nous devons configurer Apex. Vous pouvez installer Apache Apex sur votre cluster existant ou il existe un moyen simple d'essayer, vous pouvez télécharger la machine virtuelle sandbox pré-installée à partir du site Web DataTorrent à partir d'ici. Pour cette démo, nous utiliserons une VM préinstallée.
Procédure pas à pas de la console d'interface utilisateur Apex
Apex est livré avec une console d'interface utilisateur très intuitive et magnifiquement conçue que vous pouvez utiliser pour lancer, surveiller et gérer des applications. Il comprend diverses statistiques concernant les différents composants déployés.
Après avoir téléchargé la machine virtuelle sandbox, détarez-la et chargez-la dans votre lecteur de machine virtuelle préféré (j'utilise le lecteur de machine virtuelle VMWare). Tous les logiciels et outils nécessaires à l'exécution d'Apex sont déjà configurés dans cette machine virtuelle et tous les scripts de démarrage sont configurés pour s'exécuter au démarrage du système d'exploitation. Ainsi, lorsque votre machine virtuelle sera opérationnelle, vous aurez une instance en cours d'exécution d'Apache Apex. Maintenant, pour afficher la console, appuyez simplement sur http://locahost:9090 dans votre navigateur Web préféré et connectez-vous à la console. Nom d'utilisateur par défaut : le mot de passe pour la machine virtuelle sandbox est dtadmin : dtadmin. Vous verrez la console comme ci-dessous

Cette page nous donne un aperçu complet de tous les systèmes tels que l'utilisation du processeur et de la mémoire, les applications, les performances, les problèmes, etc.
Pour déployer une application, accédez à l'onglet Développer en haut de la page.

Ici, vous pouvez déployer vos packages d'application et gérer les schémas de tuple pour les données dans Apex.
Apex vous fournit un certain nombre d'applications prêtes à l'emploi, que vous pouvez voir ci-dessous :

Démo WordCount
Maintenant, lançons l'application wordcount. Vous pouvez le faire en cliquant sur l'option de lancement de l'application à côté de DataTorrent Wordcount Demo. Ensuite, vous pouvez fournir une application différente et modifier les détails de configuration si nécessaire (nous ne le ferons pas car la plupart des valeurs par défaut fonctionnent correctement, modifions simplement le nom de l'application en "MyWordCountDemo"). Vous verrez un message indiquant que l'application a été déployée avec succès avec un lien vers l'application. Cliquez sur ce lien.

Cela ouvre une nouvelle page. Attendez quelques secondes jusqu'à ce que l'état de l'application passe de Accepté à En cours d'exécution. Vous verrez maintenant une page remplie de diverses statistiques et informations. Les deux captures d'écran suivantes les représentent.


Ces pages nous montrent diverses informations telles que la vue logique, physique et métrique de l'application, ainsi que des statistiques sur divers tuples/enregistrements traités par application chaque seconde. Il montre une représentation graphique des tuples émis et des latences, etc.
Vous pouvez cliquer sur n'importe quel opérateur logique, inspecter ses enregistrements et même enregistrer un échantillon. Faisons cela pour l'opérateur de la console. Cliquez sur l'opérateur de la console et vous obtiendrez des informations détaillées sur l'opérateur comme ci-dessous :

Ensuite, sélectionnez l'une des partitions et cliquez sur enregistrer un échantillon.

Après quelques secondes, vous verrez que les tuples sont peuplés, cliquez sur tuple pour voir son contenu. Comme vous pouvez le voir sur le contenu, l'application a effectué un comptage de mots sur des données basées sur des fenêtres et il y avait 2 "à", 4 "le", 4 "a" etc. dans le 0ème tuple d'entrée pour cette fenêtre. Vous pouvez maintenant arrêter l'application en cliquant sur "Arrêter" ou "Kill" sur la page principale de l'application.
Ça y est, nous avons déployé et exécuté avec succès l'application de comptage de mots.
Conclusion
C'était donc l'introduction d'un nouvel outil de streaming - Apache Apex et l'exécution réussie d'une application dans Apache Apex. Apache Apex possède de nombreuses fonctionnalités saillantes qui lui donnent un avantage sur les autres frameworks existants que je couvrirai dans les articles suivants.