Personnalisation de la configuration des clusters et des applications avec des versions AMI antérieures d'Amazon EMR - Amazon EMR

Personnalisation de la configuration des clusters et des applications avec des versions AMI antérieures d'Amazon EMR

Amazon EMR version 4.0.0 a introduit une méthode simplifiée pour configurer des applications à l'aide de classifications de configuration. Pour de plus amples informations, veuillez consulter Configuration des applications. Lorsque vous utilisez une version AMI, vous configurez les applications à l'aide des actions d'amorçage et des arguments que vous transmettez. Par exemple, les actions d'amorçage configure-hadoop et configure-daemons définissent les propriétés des environnements Hadoop et YARN telles que --namenode-heap-size. Dans les versions plus récentes, ces propriétés sont configurées à l'aide des classifications de configuration hadoop-env et yarn-env. Pour les actions d'amorçage qui effectuent des configurations courantes, consultez le référentiel emr-bootstrap-actions sur Github.

Les tableaux suivants associent les actions d'amorçage aux classifications de configuration correspondantes dans les versions plus récentes d'Amazon EMR.

Hadoop
Nom du fichier d'application concerné Action d'amorçage de la version d'AMI Classification de configuration
core-site.xml configure-hadoop -c core-site
log4j.properties configure-hadoop -l hadoop-log4j
hdfs-site.xml configure-hadoop -s hdfs-site
N/A s/o hdfs-encryption-zones
mapred-site.xml configure-hadoop -m mapred-site
yarn-site.xml configure-hadoop -y yarn-site
httpfs-site.xml configure-hadoop -t httpfs-site
capacity-scheduler.xml configure-hadoop -z capacity-scheduler
yarn-env.sh configure-daemons --resourcemanager-opts yarn-env
Hive
Nom du fichier d'application concerné Action d'amorçage de la version d'AMI Classification de configuration
hive-env.sh N/A hive-env
hive-site.xml hive-script --install-hive-site ${MY_HIVE_SITE_FILE} hive-site
hive-exec-log4j.properties N/A hive-exec-log4j
hive-log4j.properties s/o hive-log4j
EMRFS
Nom du fichier d'application concerné Action d'amorçage de la version d'AMI Classification de configuration
emrfs-site.xml configure-hadoop -e emrfs-site
N/A s3get -s s3://custom-provider.jar -d /usr/share/aws/emr/auxlib/ emrfs-site (avec le nouveau paramètre fs.s3.cse.encryptionMaterialsProvider.uri)

Pour obtenir une liste de toutes les classifications, consultez Configuration des applications.

Variables d'environnement d'application

Lorsque vous utilisez une version AMI, un script hadoop-user-env.sh est utilisé avec l'action d'amorçage configure-daemons pour configurer l'environnement Hadoop. Les actions suivantes sont incluses dans le script :

#!/bin/bash export HADOOP_USER_CLASSPATH_FIRST=true; echo "HADOOP_CLASSPATH=/path/to/my.jar" >> /home/hadoop/conf/hadoop-user-env.sh

Dans Amazon EMR version 4.x, vous procédez de la même façon en utilisant la classification de configuration hadoop-env, comme illustrée dans l'exemple suivant :

[       {          "Classification":"hadoop-env",          "Properties":{          },          "Configurations":[             {                "Classification":"export",                "Properties":{                   "HADOOP_USER_CLASSPATH_FIRST":"true",                   "HADOOP_CLASSPATH":"/path/to/my.jar"                }             }          ]       }    ]

Autre exemple : l'utilisation de configure-daemons et la transmission de --namenode-heap-size=2048 et --namenode-opts=-XX:GCTimeRatio=19 équivalent aux classifications de configuration suivantes.

[       {          "Classification":"hadoop-env",          "Properties":{          },          "Configurations":[             {                "Classification":"export",                "Properties":{                   "HADOOP_DATANODE_HEAPSIZE": "2048", "HADOOP_NAMENODE_OPTS": "-XX:GCTimeRatio=19"                }             }          ]       }    ]

D'autres variables de l'environnement d'application ne sont plus définies dans /home/hadoop/.bashrc. Au lieu de cela, elles sont principalement définies dans les fichiers /etc/default par composant ou par application, par exemple, /etc/default/hadoop. Les scripts de wrapper dans /usr/bin/ installés par les fichiers RPM de l'application peuvent également définir des variables d'environnement supplémentaires avant d'impliquer le script bin réel.

Ports de service

Lorsque vous employez une version AMI, certains services utilisent des ports personnalisés.

Modifications des paramètres de port
Paramètre Version AMI 3.x Open source par défaut
fs.default.name hdfs://emrDeterminedIP:9000 valeur par défaut (hdfs://emrDeterminedIP:8020)
dfs.datanode.address 0.0.0.0:9200 valeur par défaut (0.0.0.0:50010)
dfs.datanode.http.address 0.0.0.0:9102 valeur par défaut (0.0.0.0:50075)
dfs.datanode.https.address 0.0.0.0:9402 valeur par défaut (0.0.0.0:50475)
dfs.datanode.ipc.address 0.0.0.0:9201 valeur par défaut (0.0.0.0:50020)
dfs.http.address 0.0.0.0:9101 valeur par défaut (0.0.0.0:50070)
dfs.https.address 0.0.0.0:9202 valeur par défaut (0.0.0.0:50470)
dfs.secondary.http.address 0.0.0.0:9104 valeur par défaut (0.0.0.0:50090)
yarn.nodemanager.address 0.0.0.0:9103 valeur par défaut (${yarn.nodemanager.hostname}:0)
yarn.nodemanager.localizer.address 0.0.0.0:9033 valeur par défaut (${yarn.nodemanager.hostname}:8040)
yarn.nodemanager.webapp.address 0.0.0.0:9035 valeur par défaut (${yarn.nodemanager.hostname}:8042)
yarn.resourcemanager.address emrDeterminedIP:9022 valeur par défaut (${yarn.resourcemanager.hostname}:8032)
yarn.resourcemanager.admin.address emrDeterminedIP:9025 valeur par défaut (${yarn.resourcemanager.hostname}:8033)
yarn.resourcemanager.resource-tracker.address emrDeterminedIP:9023 valeur par défaut (${yarn.resourcemanager.hostname}:8031)
yarn.resourcemanager.scheduler.address emrDeterminedIP:9024 valeur par défaut (${yarn.resourcemanager.hostname}:8030)
yarn.resourcemanager.webapp.address 0.0.0.0:9026 valeur par défaut (${yarn.resourcemanager.hostname}:8088)
yarn.web-proxy.address emrDeterminedIP:9046 valeur par défaut (no-value)
yarn.resourcemanager.hostname 0.0.0.0 (par défaut) emrDeterminedIP
Note

Le terme emrDeterminedIP est une adresse IP qui est générée par Amazon EMR.

Users

Lorsque vous utilisez une version AMI, l'utilisateur hadoop exécute tous les processus et possède tous les fichiers. Dans Amazon EMR 4.0.0 et versions ultérieures, les utilisateurs existent au niveau de l'application et des composants.

Séquence d'installation, artefacts installés et emplacement des fichiers journaux

Lorsque vous utilisez une version AMI, les artefacts de l'application et leurs répertoires de configuration sont installés dans le répertoire /home/hadoop/application. Par exemple, si vous avez installé Hive, le répertoire est /home/hadoop/hive. A partir des versions 4.0.0 et ultérieures d'Amazon EMR, les artefacts de l'application sont installés dans le répertoire /usr/lib/application. Lorsque vous utilisez une version AMI, les fichiers journaux sont situés à différents emplacements. Le tableau ci-dessous répertorie ces emplacements.

Modification des emplacements des journaux sur Amazon S3
Démon ou application Emplacement du répertoire
instance-state node/instance-id/instance-state/
hadoop-hdfs-namenode daemons/instance-id/hadoop-hadoop-namenode.log
hadoop-hdfs-datanode daemons/instance-id/hadoop-hadoop-datanode.log
hadoop-yarn (ResourceManager) daemons/instance-id/yarn-hadoop-resourcemanager
hadoop-yarn (serveur Proxy) daemons/instance-id/yarn-hadoop-proxyserver
mapred-historyserver daemons/instance-id/
httpfs daemons/instance-id/httpfs.log
hive-server node/instance-id/hive-server/hive-server.log
hive-metastore node/instance-id/apps/hive.log
Interface de ligne de commande Hive node/instance-id/apps/hive.log
Journaux utilisateur et journaux de conteneur des applications YARN task-attempts/
Mahout N/A
Pig N/A
spark-historyserver N/A
Fichiers d'historique des tâches mapreduce jobs/

Exécuteur de commandes

Lorsque vous utilisez une version AMI, de nombreux scripts ou programmes comme /home/hadoop/contrib/streaming/hadoop-streaming.jar ne sont pas placés dans l'environnement du chemin d'accès de connexion au shell, ce qui signifie que vous devez spécifier le chemin d'accès complet lorsque vous utilisez un fichier jar (command-runner.jar ou script-runner.jar, par exemple) pour exécuter les scripts. Le fichier command-runner.jar se trouve sur l'image AMI, si bien qu'il n'est pas nécessaire de connaître un URI complet comme c'était le cas avec script-runner.jar.

Facteur de réplication

Le facteur de réplication vous permet de configurer à quel moment démarrer une machine virtuelle Java. Vous pouvez démarrer une nouvelle machine virtuelle Java Hadoop pour chaque tâche, ce qui fournit une meilleure isolation des tâches, ou vous pouvez partager des machines virtuelles Java pour différentes tâches, ce qui entraîne une surcharge moins importante sur le réseau. Si vous traitez un grand nombre de petits fichiers, il est logique de réutiliser la JVM plusieurs fois pour amortir les coûts de démarrage. Toutefois, si chaque tâche prend du temps ou traite une grande quantité de données, vous pouvez choisir de ne pas réutiliser la JVM, afin de vous assurer que l'ensemble de la mémoire est libérée pour les tâches suivantes. Lorsque vous utilisez une version AMI, vous pouvez personnaliser le facteur de réplication à l'aide de l'action d'amorçage configure-hadoop pour définir la propriété mapred.job.reuse.jvm.num.tasks.

L'exemple suivant illustre la définition du facteur de réutilisation de la machine virtuelle Java pour une réutilisation infinie de cette dernière.

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" --ami-version 3.11.0 \ --applications Name=Hue Name=Hive Name=Pig \ --use-default-roles --ec2-attributes KeyName=myKey \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m3.xlarge \ InstanceGroupType=CORE,InstanceCount=2,InstanceType=m3.xlarge \ --bootstrap-actions Path=s3://elasticmapreduce/bootstrap-actions/configure-hadoop,\ Name="Configuring infinite JVM reuse",Args=["-m","mapred.job.reuse.jvm.num.tasks=-1"]