Systèmes distribués : Comment puis-je obtenir mes événements application sérialisées sur S3 dans des fichiers volumineux?

J’ai une application qui crée de nombreux événements à travers de nombreuses machines. Nous stockons ces événements dans une base de données, mais j’ai besoin de les amener vers Amazon S3 pour un traitement avec MapReduce Hadoop/élastique supplémentaire.

Autre que ETL'ing les événements de la base de données, comment puis-je plus facilement et sûrement obtenir ces événements à des fichiers plus volumineux sur Amazon S3?  J’ai regardé beaucoup de solutions dont Kafka, Flume et solutions commerciales comme Loggly. Aucun d’eux ne les rend facile à fiable des événements de granulats et de vidage de gros fichiers sur S3.

Ce qui est le plus court chemin ici? Y a-t-il un moyen simple de faire cela?

Réponse

Flume est conçu pour gérer exactement ce cas (même si il est vrai que S3 n’est pas l’évier plus populaire, il devrait fonctionner parfaitement). Simplement obtenir des événements de A à B est triviale ; exécuter quelques agents de canal avec une source de la RPC comme le AvroSource. Envoyer des événements app à l’aide d’un des clients comme l’appender de log4j incluse Avro RPC ou tout ce qui fait sens pour votre environnement. Mieux est d’envoyer les événements des enregistrements aussi structurés comme Avro lorsque cela est possible. L’interface RPC prend en charge les lots ou appels épreuve individuelle (l’ancien est beaucoup plus efficace en raison de l’amortissement de frais généraux RPC). Chaque appel est atomique à cause de la façon dont les transactions sont contrôlées sur le côté serveur. Au sein de l’agent, sélectionnez le type de canal qui offre le niveau de durabilité pour votre application ; C’est un métier hors de performance et de sécurité.

Vous pouvez avoir des agents de flume écrire à S3 à l’aide de l’évier HDFS mais configurez-le pour utiliser l’implémentation de système de fichiers de Hadoop s3. Il s’agit de la partie qui ne voit pas une tonne de tests, bien que certains d'entre nous dans la communauté de flume prévoient de traiter cela comme une option de déploiement première classe aller de l’avant avec le soutien de s3 plus direct. L’évier consomme la file d’attente des événements à partir de différents serveurs app et décidé comment écrire ces événements sous forme de fichiers. C’est où vous pouvez contrôler la sortie écopage et taille du fichier. L’évier peut également contrôler comment les épreuves individuelles sont sérialisés, c'est-à-dire comment vous permettrait d’éliminer l’étape de l’ETL (eg. écrire les événements Avro enregistrant avec certain schéma vous utiliser plus tard dans vos travaux de Monsieur). Il serait préférable d’avoir un bon S3 évier et éviter la couche d’abstraction HDFS et c’est sur la feuille de route, mais c’est l’état actuel des choses.

La question suggère flume facilement ne fait pas cela aujourd'hui. J’aimerais que faire pas le cas si de nombreux utilisateurs l’impression que c’est vrai, mais c’est possible.

Bonne chance !


Tags: Amazon Web Services, Le Cloud Computing, Données scientifiques, Données volumineuses, Apache Hadoop, Amazon S3, Systèmes distribués, Bases de données distribuées, Flume, Apache Kafka, Fluentd, Gestion des journaux, Amazon Elastic MapReduce, Stockage distribué, Exploitation forestière (données)