Présentation de l'architecture d'Amazon EMR - Amazon EMR

Présentation de l'architecture d'Amazon EMR

L'architecture du service Amazon EMR se compose de plusieurs couches, chacune fournissant certaines fonctions et fonctionnalités au cluster. Cette section fournit une présentation de ces couches et de leurs composants.

Stockage

La couche de stockage inclut les différents systèmes de fichiers qui sont utilisés avec votre cluster. Il existe plusieurs types d'options de stockage, décrits ci-dessous.

Système de fichiers distribué Hadoop (HDFS)

Le système de fichiers distribué Hadoop (HDFS) est un système de fichiers évolutif, distribué pour Hadoop. Le système HDFS répartit les données qu'il stocke entre les instances dans le cluster, stockant plusieurs copies des données sur différentes instances pour garantir qu'aucune donnée n'est perdue en cas de défaillance d'une instance individuelle. HDFS est un stockage éphémère qui est récupéré lorsque vous mettez fin à un cluster. HDFS est utile pour la mise en cache des résultats intermédiaires au cours du traitement MapReduce ou pour les charges de travail qui ont des E/S aléatoires importantes.

Pour plus d'informations, consultez la rubrique Stockage d'instances de ce guide ou le guide de l'utilisateur HDFS sur le site web d'Apache Hadoop.

Système de fichiers EMR (EMRFS)

Avec le système de fichiers EMR (EMRFS), Amazon EMR étend Hadoop pour ajouter la possibilité d'accéder directement aux données stockées dans Amazon S3 comme s'il s'agissait d'un système de fichiers de type HDFS. Vous pouvez utiliser HDFS ou Amazon S3 en tant que système de fichiers dans votre cluster. Le plus souvent, Amazon S3 est utilisé pour stocker les données d'entrée et sortie et les résultats intermédiaires sont stockés dans HDFS.

Système de fichiers local

Le système de fichiers local fait référence à un disque connecté localement. Lorsque vous créez un cluster Hadoop, chaque nœud est créé à partir d'une instance Amazon EC2 qui est associée à un bloc préconfiguré de stockage sur disque pré-attaché appelé stockage d'instance. Les données des volumes de stockage d'instance sont conservées uniquement pendant le cycle de durée de vie de leur instance Amazon EC2.

Gestion des ressources de cluster

La couche de gestion des ressources est responsable de la gestion des ressources du cluster et de la planification des travaux de traitement des données.

Par défaut, Amazon EMR utilise YARN (Yet Another Resource Negotiator), un composant introduit dans Apache Hadoop 2.0 pour gérer de manière centralisée les ressources de cluster pour plusieurs infrastructures de traitement de données. Cependant, il existe d'autres cadres et applications proposés dans Amazon EMR qui n'utilisent pas YARN comme gestionnaire de ressources. Amazon EMR dispose également d'un agent sur chaque nœud, qui administre les composants YARN, maintient le cluster en bonne santé et communique avec le service Amazon EMR.

Les instances Spot étant souvent utilisées pour exécuter des nœuds de tâches, Amazon EMR dispose d'une fonctionnalité par défaut pour planifier les tâches YARN afin que les tâches en cours n'échouent pas lorsque les nœuds de tâches s'exécutant sur des instances Spot sont résiliés. Pour ce faire, Amazon EMR autorise les processus principaux d'application à s'exécuter uniquement sur les nœuds principaux. Le processus principal de l'application contrôle les tâches en cours d'exécution et doit rester actif pendant toute la durée de vie de la tâche.

Les versions 5.19.0 et ultérieures d'Amazon EMR utilisent la fonctionnalité intégrée d'étiquetage des nœuds YARN pour y parvenir. (Les versions antérieures utilisaient un correctif de code). Les propriétés des classifications de configuration yarn-site et capacity-scheduler sont configurées par défaut pour que le capacity-scheduler et le fair-scheduler de YARN bénéficient des étiquettes de nœud. Amazon EMR étiquette automatiquement les nœuds principaux avec l'étiquette CORE et définit les propriétés de sorte que les maîtres d'application soient planifiés uniquement sur les nœuds avec l'étiquette CORE. La modification manuelle des propriétés associées dans les classifications de configuration de yarn-site et de capacity-scheduler, ou directement dans les fichiers XML associés, pourrait interrompre cette fonctionnalité ou la modifier.

Cadres de traitement de données

La couche des infrastructures de traitement des données est le moteur utilisé pour traiter et analyser les données. Il existe de nombreuses infrastructures disponibles qui s'exécutent sur YARN ou qui possèdent leur propre gestion des ressources. Des infrastructures différentes sont disponibles pour les différents types de traitement requis, tels que les traitements par lots, interactif, en mémoire, de streaming, etc. L'infrastructure que vous choisissez dépend de votre cas d'utilisation. Elle affecte les langues et les interfaces disponibles à partir de la couche d'application, qui est la couche utilisée pour interagir avec les données à traiter. Les infrastructures de traitement principales disponibles pour Amazon EMR sont Hadoop MapReduce et Spark.

Hadoop MapReduce

Hadoop MapReduce est un modèle de programmation open source pour l'informatique distribuée. Il simplifie le processus d'écriture d'applications distribuées en parallèle en gérant l'ensemble de la logique, alors que vous fournissez les fonctions Map et Reduce. La fonction Map mappe les données aux ensembles de paires clé-valeur nommées résultats intermédiaires. La fonction Reduce, quant à elle, combine les résultats intermédiaires et leur applique d'autres algorithmes afin de générer la sortie finale. Il existe plusieurs infrastructures disponibles pour MapReduce, telles que Hive, qui génèrent automatiquement des programmes Map et Reduce.

Pour plus d'informations, consultez la rubrique How map and reduce operations are actually carried out sur le site web Wiki d'Apache Hadoop.

Apache Spark

Spark est une infrastructure de cluster et un modèle de programmation pour le traitement de charges de travail de big data. A l'instar de Hadoop MapReduce, Spark est un système de traitement distribué en open source, mais il utilise des graphes acycliques dirigés comme plans d'exécution et tire parti de la mise en cache en mémoire pour les ensembles de données. Lorsque vous exécutez Spark sur Amazon EMR, vous pouvez utiliser EMRFS pour accéder directement à vos données dans Amazon S3. Spark prend en charge plusieurs modules de requête interactifs comme SparkSQL.

Pour plus d'informations, consultez la rubrique relative à Apache Spark sur les clusters Amazon EMR du Guide de version Amazon EMR.

Applications et programmes

Amazon EMR prend en charge de nombreuses applications, dont Hive, Pig et la bibliothèque Spark Streaming, pour fournir des fonctionnalités telles que l'utilisation de langages de niveau supérieur pour créer des charges de travail de traitement, l'exploitation d'algorithmes de machine learning, l'élaboration d'applications de traitement de flux et la création d'entrepôts de données. En outre, Amazon EMR prend également en charge des projets open source qui possèdent leurs propres fonctionnalités de gestion de cluster au lieu d'utiliser YARN.

Vous utilisez diverses bibliothèques et divers langages pour interagir avec les applications que vous exécutez dans Amazon EMR. Par exemple, vous pouvez utiliser Java, Hive ou Pig avec MapReduce ou Spark Streaming, Spark SQL, MLlib et GraphX avec Spark.

Pour plus d'informations, consultez le Guide de version Amazon EMR.