Chargement de données vers Amazon S3 - Amazon EMR

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Chargement de données vers Amazon S3

Pour plus d'informations sur la manière de charger des objets sur Amazon S3, consultez la section Ajout d'un objet à votre compartiment dans le Guide de l'utilisateur Amazon Simple Storage Service. Pour plus d'informations sur l'utilisation d'Amazon S3 avec Hadoop, consultez http://wiki.apache.org/hadoop/AmazonS3.

Création et configuration d'un compartiment Amazon S3

Amazon EMR utilise le AWS SDK for Java avec Amazon S3 pour stocker les données d'entrée, les fichiers journaux et les données de sortie. Amazon S3 fait référence à ces emplacements de stockage en tant que compartiments. Les compartiments sont soumis à certaines restrictions et limitations afin de se conformer à Amazon S3 et à ses DNS exigences. Pour de plus amples informations, consultez Limites et restrictions applicables aux compartiments dans le Guide de l'utilisateur Amazon Simple Storage Service.

Cette section explique comment utiliser Amazon S3 AWS Management Console pour créer puis définir des autorisations pour un compartiment Amazon S3. Vous pouvez également créer et définir des autorisations pour un compartiment Amazon S3 à l'aide d'Amazon S3 API ou AWS CLI. Vous pouvez aussi utiliser curl avec une modification pour transmettre les paramètres d'authentification appropriés pour Amazon S3.

Consultez les ressources suivantes :

Note

Si vous activez la journalisation pour un compartiment, cela active uniquement les journaux d'accès au compartiment, et non les journaux EMR du cluster Amazon.

Pendant ou après la création du compartiment, vous pouvez définir les autorisations appropriées pour accéder au compartiment en fonction de votre application. Habituellement, vous (le propriétaire) vous donnez accès en lecture et en écriture et accordez l'accès en lecture aux utilisateurs authentifiés.

Les compartiments Amazon S3 requis doivent avoir été créés pour que vous puissiez créer un cluster. Vous devez charger les scripts obligatoires ou les données référencées dans le cluster vers Amazon S3. Le tableau suivant décrit des exemples de données, de scripts et d'emplacements de fichier journal.

Configuration d'un chargement partitionné pour Amazon S3

Amazon EMR prend en charge le téléchargement partitionné d'Amazon S3 via le AWS SDK pour Java. Le téléchargement partitionné vous permet de charger un objet unique sous la forme d'un ensemble de parties. Vous pouvez charger ces parties d'objet indépendamment et dans n'importe quel ordre. Si le transfert d'une partie échoue, vous pouvez la retransférer sans affecter les autres. Une fois toutes les parties de l'objet chargées, Amazon S3 les assemble et crée l'objet.

Pour plus d'informations, consultez la section Présentation de chargement partitionné dans le Guide de l'utilisateur Amazon Simple Storage Service.

En outre, Amazon EMR propose des propriétés qui vous permettent de contrôler plus précisément le nettoyage des parties ayant échoué lors d'un chargement partitionné.

Le tableau suivant décrit les propriétés de EMR configuration Amazon pour le téléchargement partitionné. Vous pouvez configurer ces éléments à l’aide de la classification de configuration core-site. Pour plus d'informations, consultez la section Configurer les applications dans le Amazon EMR Release Guide.

Nom de paramètre de configuration Valeur par défaut Description
fs.s3n.multipart.uploads.enabled true Type booléen qui indique s'il convient d'activer les chargements partitionnés. Lorsque l'affichage EMRFS cohérent est activé, les téléchargements partitionnés sont activés par défaut et la définition de cette valeur sur false est ignorée.
fs.s3n.multipart.uploads.split.size 134217728

Spécifie la taille maximale d'une partie, en octets, avant de EMRFS démarrer un nouveau téléchargement partiel lorsque les téléchargements partitionnés sont activés. La valeur minimale est 5242880 (5 Mo). Si une valeur plus faible est spécifiée, 5242880 est utilisé. Le maximum est 5368709120 (5 Go). Si une valeur supérieure est spécifiée, 5368709120 est utilisé.

Si le chiffrement EMRFS côté client est désactivé et que le Amazon S3 Optimized Committer est également désactivé, cette valeur contrôle également la taille maximale qu'un fichier de données peut augmenter jusqu'à ce qu'il EMRFS utilise des téléchargements partitionnés plutôt qu'une PutObject demande de téléchargement du fichier. Pour plus d'informations, veuillez consulter la rubrique

fs.s3n.ssl.enabled true Type booléen qui indique s'il convient d'utiliser http ou https.
fs.s3.buckets.create.enabled false Un type booléen qui indique si un compartiment devrait être créé s'il n'existe pas. Le réglage de false entraîne une exception aux opérations CreateBucket.
fs.s3.multipart.clean.enabled false Type booléen qui indique s'il convient d'activer le nettoyage périodique en arrière plan des chargements partitionnés inachevés.
fs.s3.multipart.clean.age.threshold 604800 Un type long qui spécifie l'âge minimal d'un chargement partitionné, en secondes, avant qu'il ne soit affecté à un nettoyage. La valeur par défaut est une semaine.
fs.s3.multipart.clean.jitter.max 10000 Un type de nombre entier qui spécifie la quantité maximale de délai de sautillement aléatoire en secondes ajouté au délai de 15 minutes fixe avant de programmer le prochain nettoyage.

Désactivation des chargements partitionnés

Console
Pour désactiver les téléchargements partitionnés avec la console
  1. Connectez-vous au et ouvrez AWS Management Console la EMR console Amazon à l'adresse https://console.aws.amazon.com/emr.

  2. Sous EMREC2Activé dans le volet de navigation de gauche, choisissez Clusters, puis Create cluster.

  3. Sous Paramètres du logiciel, saisissez la configuration suivante : classification=core-site,properties=[fs.s3n.multipart.uploads.enabled=false]

  4. Choisissez toutes les autres options qui s'appliquent à votre cluster.

  5. Pour lancer cluster, choisissez Créer un cluster.

CLI
Pour désactiver le téléchargement partitionné à l'aide du AWS CLI

Cette procédure explique comment désactiver le téléchargement partitionné à l'aide de l' AWS CLI. Pour désactiver le téléchargement partitionné, tapez la commande create-cluster avec le paramètre --bootstrap-actions.

  1. Créez un dossier, myConfig.json avec le contenu suivant et enregistrez-le dans le même répertoire où vous exécutez la commande :

    [ { "Classification": "core-site", "Properties": { "fs.s3n.multipart.uploads.enabled": "false" } } ]
  2. Tapez la commande suivante et remplacez myKey avec le nom de votre paire de EC2 clés.

    Note

    Les caractères de continuation de ligne Linux (\) sont inclus pour des raisons de lisibilité. Ils peuvent être supprimés ou utilisés dans les commandes Linux. Pour Windows, supprimez-les ou remplacez-les par un caret (^).

    aws emr create-cluster --name "Test cluster" \ --release-label emr-7.2.0 --applications Name=Hive Name=Pig \ --use-default-roles --ec2-attributes KeyName=myKey --instance-type m5.xlarge \ --instance-count 3 --configurations file://myConfig.json
API
Pour désactiver le téléchargement partitionné à l'aide du API

Bonnes pratiques

Les recommandations suivantes concernent l'utilisation des compartiments Amazon S3 avec des EMR clusters.

Activation de la gestion des versions

La gestion des versions est une configuration recommandée pour votre compartiment Amazon S3. En activant la gestion des versions, vous vous assurez que si des données sont supprimées ou remplacées accidentellement, elles peuvent être récupérées. Pour plus d'informations, consultez Utilisation de la gestion des versions dans le Guide de l'utilisateur Amazon Simple Storage Service.

Nettoyer les chargements partitionnés échoués

EMRles composants du cluster utilisent des téléchargements partitionnés via Java avec Amazon S3 AWS SDK APIs pour écrire des fichiers journaux et générer des données vers Amazon S3 par défaut. Pour plus d'informations sur la modification des propriétés liées à cette configuration à l'aide d'AmazonEMR, consultezConfiguration d'un chargement partitionné pour Amazon S3. Parfois, le chargement d'un fichier volumineux peut se traduire par un chargement partitionné Amazon S3 incomplet. Lorsqu'un téléchargement partitionné ne peut pas se terminer avec succès, le téléchargement partitionné en cours continue d'occuper votre compartiment et entraîne des frais de stockage. Pour éviter un stockage excessif de fichiers, nous vous recommandons les options suivantes :

  • Pour les buckets que vous utilisez avec AmazonEMR, utilisez une règle de configuration du cycle de vie dans Amazon S3 pour supprimer les téléchargements partitionnés incomplets trois jours après la date de début du téléchargement. Les règles de configuration de cycle de vie vous permettent de contrôler la classe de stockage et la durée de vie de vos objets. Pour plus d'informations, consultez Gestion du cycle de vie de l'objet et Interruption de chargements partitionnés inachevés à l'aide de la stratégie de cycle de vie de compartiment.

  • Activez la fonctionnalité EMR de nettoyage en plusieurs parties d'Amazon en définissant fs.s3.multipart.clean.enabled true et en ajustant d'autres paramètres de nettoyage. Cette fonctionnalité est utile à haut volume, grande échelle et avec des clusters dotés d'une disponibilité limitée. Dans ce cas, le paramètre DaysAfterIntitiation d'une règle de configuration du cycle de vie peut être trop long, même s'il est défini à son minimum, ce qui provoque des pics de stockage sur Amazon S3. Le nettoyage EMR en plusieurs parties d'Amazon permet un contrôle plus précis. Pour de plus amples informations, veuillez consulter Configuration d'un chargement partitionné pour Amazon S3.

Gérer les repères de versions

Nous vous recommandons d'activer une règle de configuration du cycle de vie dans Amazon S3 afin de supprimer les marqueurs de suppression d'objets expirés pour les compartiments versionnés que vous utilisez avec Amazon. EMR Lorsque vous supprimez un objet dans un compartiment dont les versions sont gérées, un marqueur de suppression est créé. Si toutes les versions précédentes de l'objet expirent par la suite, un marqueur de suppression d'objet expiré est conservé dans le compartiment. Bien que les marqueurs de suppression ne vous soient pas facturés, la suppression de marqueurs expirés peut améliorer les performances des LIST demandes. Pour plus d'informations, consultez la section Configuration du cycle de vie d'un compartiment avec la gestion des versions dans le Guide de l'utilisateur Amazon Simple Storage Service.

Bonnes pratiques en matière de performances

En fonction de vos charges de travail, des types spécifiques d'utilisation des EMR clusters et des applications sur ces clusters peuvent entraîner un nombre élevé de demandes adressées à un bucket. Pour plus d'informations, consultez Considérations en matière de débit de demandes et de performances dans le Guide de l'utilisateur Amazon Simple Storage Service.