Étape 6 : Passer en revue les paramètres de configuration - Amazon EMR

Étape 6 : Passer en revue les paramètres de configuration

Les paramètres de configuration spécifient les informations relatives à l'exécution d'un cluster, comme le nombre de nouvelles tentatives pour une tâche et la quantité de mémoire disponible pour le tri. Lorsque vous lancez un cluster à l'aide d'Amazon EMR, des paramètres spécifiques à Amazon EMR s'ajoutent aux paramètres de configuration Hadoop standard. Les paramètres de configuration sont stockés dans le nœud maître du cluster. Vous pouvez vérifier les paramètres de configuration pour vous assurer que votre cluster possède les ressources nécessaires pour s'exécuter de manière efficace.

Amazon EMR définit les paramètres de configuration par défaut Hadoop qu'il utilise pour lancer un cluster. Les valeurs sont basées sur l'AMI et le type d'instance que vous spécifiez pour le cluster. Vous pouvez modifier les valeurs par défaut des paramètres de configuration à l'aide d'une action d'amorçage ou en spécifiant les nouvelles valeurs dans les paramètres de l'exécution des tâches. Pour de plus amples informations, veuillez consulter Création d'actions d'amorçage pour installer des logiciels supplémentaires. Pour déterminer si une action d'amorçage a modifié les paramètres de configuration, vérifiez les journaux des actions d'amorçage.

Amazon EMR enregistre les paramètres de Hadoop utilisés pour exécuter chaque tâche. Les données des journaux sont stockées dans un fichier nommé job_job-id_conf.xml sous le répertoire /mnt/var/log/hadoop/history/ du nœud principal, où job-id est remplacé par l'identifiant de la tâche. Si vous avez activé l'archivage des journaux, ces données sont copiées vers Amazon S3 dans le dossier logs/date/jobflow-id/jobs, où date est la date d'exécution de la tâche et jobflow-id est l'identifiant du cluster.

Les paramètres de configuration des tâches Hadoop suivants sont particulièrement utiles pour tenter de résoudre les problèmes de performances. Pour plus d'informations sur les paramètres de configuration Hadoop et leur impact sur le comportement de Hadoop, accédez à http://hadoop.apache.org/docs/.

Avertissement
  1. Paramétrer dfs.replication sur la valeur 1 avec les clusters de moins de quatre nœuds peut entraîner une perte de données HDFS en cas de panne d'un seul nœud. Nous vous recommandons d'utiliser un cluster comportant au moins quatre nœuds principaux pour les charges de travail de production.

  2. Amazon EMR n'autorisera pas les clusters à mettre à l'échelle les nœuds principaux situés en dessous de dfs.replication. Par exemple, si dfs.replication = 2, le nombre minimum de nœuds principaux est 2.

  3. Lorsque vous utilisez la mise à l'échelle gérée, autoscaling, ou que vous choisissez de redimensionner manuellement votre cluster, nous vous recommandons de définir dfs.replication sur une valeur supérieure ou égale à 2.

Paramètre de configuration Description
dfs.replication Nombre de nœuds HDFS dans lesquels un seul bloc (par exemple, le bloc disque dur) est copié afin de produire un environnement de type RAID. Détermine le nombre de nœuds HDFS contenant une copie du bloc.
io.sort.mb Quantité totale de mémoire disponible pour le tri. Cette valeur doit être 10x io.sort.factor. Ce paramètre peut aussi être utilisé pour calculer la mémoire totale utilisée par chaque nœud de tâche, par l'opération io.sort.mb multiplié par mapred.tasktracker.ap.tasks.maximum.
io.sort.spill.percent Utilisé pendant le tri. Point auquel le disque commence à être utilisé car la mémoire allouée pour le tri est saturée.
mapred.child.java.opts Obsolète. Utiliser mapred.map.child.java.opts et mapred.reduce.child.java.opts à la place. Options Java utilisées par TaskTracker lors du lancement d'une machine virtuelle Java afin d'y exécuter une tâche. « -Xmx » est un paramètre courant pour définir la taille maximale de la mémoire.
mapred.map.child.java.opts Options Java utilisées par TaskTracker lors du lancement d'une machine virtuelle Java afin d'y exécuter une tâche de mappage. « -Xmx » est un paramètre courant pour définir la taille maximale du tas de la mémoire.
mapred.map.tasks.speculative.execution Détermine si les tentatives de tâches de mappage de la même tâche peuvent être lancées en parallèle.
mapred.reduce.tasks.speculative.execution Détermine si les tentatives de tâches de réduction de la même tâche peuvent être lancées en parallèle.
mapred.map.max.Attempts Nombre maximum de tentatives pour une tâche de mappage. Si toutes les tentatives échouent, la tâche de mappage est marquée comme ayant échoué.
mapred.reduce.child.java.opts Options Java utilisées par TaskTracker lors du lancement d'une machine virtuelle Java afin d'y exécuter une tâche de réduction. « -Xmx » est un paramètre courant pour définir la taille maximale du tas de la mémoire.
mapred.reduce.max.attempts Nombre maximum de tentatives pour une tâche de réduction. Si toutes les tentatives échouent, la tâche de mappage est marquée comme ayant échoué.
mapred.reduce.slowstart.completed.maps Quantité de tâches de mappage devant se terminer avant le lancement de tâches de réduction. Si vous n'attendez pas assez longtemps, vous risquez de provoquer des erreurs « trop d'échecs de recherche » dans les tentatives.
mapred.reuse.jvm.num.tasks Une tâche s'exécute dans une même machine virtuelle Java. Spécifie le nombre de tâches pouvant réutiliser la même machine virtuelle Java.
mapred.tasktracker.map.tasks.maximum Quantité maximale de tâches qui peuvent s'exécuter en parallèle par nœud de tâches au cours du mappage.
mapred.tasktracker.reduce.tasks.maximum Quantité maximale de tâches qui peuvent s'exécuter en parallèle par nœud de tâches au cours de la réduction.

Si vos tâches de cluster utilisent beaucoup de mémoire, vous pouvez améliorer les performances en utilisant un nombre inférieur de tâches par nœud principal et en réduisant la taille du tas de votre dispositif de suivi des travaux.