É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_
sous le répertoire job-id
_conf.xml/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/
, où date
/jobflow-id
/jobsdate
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
-
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. -
Amazon EMR n'autorisera pas les clusters à mettre à l'échelle les nœuds principaux situés en dessous de
dfs.replication
. Par exemple, sidfs.replication = 2
, le nombre minimum de nœuds principaux est 2. -
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.