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/
. Par exemple, si vous avez installé Hive, le répertoire est application
/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/
. Lorsque vous utilisez une version AMI, les fichiers journaux sont situés à différents emplacements. Le tableau ci-dessous répertorie ces emplacements.application
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-version3.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"
]