Bonnes pratiques Amazon MapReduce pour l'analyse de journaux

J’analyse des journaux d’accès générés par Apache, Nginx, Darwin (serveur de streaming vidéo) et j’agrège des statistiques pour chaque fichier distribué par date / référent / agent utilisateur.

Des tonnes de journaux sont générés toutes les heures et ce nombre est susceptible d’augmenter considérablement dans un avenir proche - donc le traitement de ce type de données de manière distribuée via Amazon Elastic MapReduce semble raisonnable.

Actuellement, j’ai mes mappers et reducers prêts pour traiter mes données et j’ai testé l’ensemble du processus avec le flux suivant :

  • Téléversement des mappers, reducers et données vers Amazon S3

  • Configuration du job approprié et traitement réussi

  • Téléchargement des résultats agrégés depuis Amazon S3 vers mon serveur et insertion dans la base de données MySQL via un script CLI

J’ai fait cela manuellement selon les milliers de tutoriels trouvables sur Internet concernant Amazon EMR.

Que dois-je faire ensuite ? Quelle est la meilleure approche pour automatiser ce processus ?

  • Dois-je contrôler le jobTracker d’Amazon EMR via l’API ?

  • Comment puis-je m’assurer que mes journaux ne seront pas traités deux fois ?

  • Quelle est la meilleure façon de déplacer les fichiers traités vers l’archive ?

  • Quelle est la meilleure approche pour insérer les résultats dans PostgreSQL/MySQL ?

  • Comment les données pour les jobs doivent-elles être organisées dans les répertoires d’entrée/sortie ?

  • Dois-je créer un nouveau job EMR à chaque fois en utilisant l’API ?

  • Quelle est la meilleure approche pour téléverser les journaux bruts vers Amazon S3 ?

  • Quelqu’un peut-il partager sa configuration du flux de traitement des données ?

  • Comment contrôler les téléversements de fichiers et les complétions de jobs ?

Je pense que ce sujet peut être utile pour beaucoup de personnes qui essaient de traiter des journaux d’accès avec Amazon Elastic MapReduce mais qui n’ont pas pu trouver de bons matériaux et/ou de bonnes pratiques.

MISE À JOUR : Pour clarifier, voici la question finale unique :

Quelles sont les bonnes pratiques pour le traitement de journaux propulsé par Amazon Elastic MapReduce ?

Articles connexes :

Getting data in and out of Elastic MapReduce HDFS


Source : Stack Overflow

C’est une question très très ouverte, mais voici quelques pistes que vous pourriez considérer :

  • Utiliser Amazon SQS : c’est une file d’attente distribuée, et c’est très utile pour la gestion des workflows. Vous pouvez avoir un processus qui écrit dans la file dès qu’un journal est disponible, et un autre qui lit depuis celle-ci, traite le journal décrit dans le message de la file, et le supprime quand le traitement est terminé. Cela garantirait que les journaux ne sont traités qu’une seule fois.

  • Apache Flume, comme vous l’avez mentionné, est très utile pour l’agrégation de journaux. C’est quelque chose que vous devriez considérer, même si vous n’avez pas besoin du temps réel, car cela vous donne au minimum un processus d’agrégation standardisé.

  • Amazon a récemment lancé SimpleWorkFlow. Je viens de commencer à l’examiner, mais cela semble prometteur pour gérer chaque étape de votre pipeline de données.

J’espère que cela vous donne quelques pistes.