Personalizzazione della configurazione di cluster e applicazioni con versioni AMI di Amazon EMR precedenti
Amazon EMR versione 4.0.0 ha introdotto un metodo semplificato di configurazione delle applicazioni mediante le classificazioni di configurazione. Per ulteriori informazioni, consulta Configurazione delle applicazioni. Quando utilizzi una versione AMI, configuri le applicazioni utilizzando operazioni di bootstrap insieme agli argomenti che passi. Ad esempio, le operazioni di bootstrap configure-hadoop
e configure-daemons
impostano le proprietà di ambiente di Hadoop e YARN come --namenode-heap-size
. Nelle versioni più recenti, queste proprietà sono configurate mediante le classificazioni di configurazione hadoop-env
e yarn-env
. Per le operazioni di bootstrap che eseguono configurazioni comuni, consulta il repository emr-bootstrap-actions su Github
Le tabelle seguenti eseguono la mappatura delle operazioni di bootstrap alle classificazioni di configurazione in versioni più recenti di Amazon EMR.
Hadoop | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Nome di file dell'applicazione interessata | Operazione di bootstrap della versione AMI | Classificazione di configurazione | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 | n/a | 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 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Nome di file dell'applicazione interessata | Operazione di bootstrap della versione AMI | Classificazione di configurazione | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 |
n/a | hive-log4j |
EMRFS | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Nome di file dell'applicazione interessata | Operazione di bootstrap della versione AMI | Classificazione di configurazione | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
emrfs-site.xml |
configure-hadoop -e |
emrfs-site |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
N/A | s3get -s s3://custom-provider.jar -d
/usr/share/aws/emr/auxlib/ |
emrfs-site (con la nuova impostazione fs.s3.cse.encryptionMaterialsProvider.uri ) |
Per un elenco di tutte le classificazioni, consulta Configurazione delle applicazioni.
Variabili di ambiente applicazione
Quando si utilizza una versione AMI, uno script hadoop-user-env.sh
viene utilizzato insieme all'operazione di bootstrap configure-daemons
per configurare l'ambiente Hadoop. Lo script include le seguenti operazioni:
#!/bin/bash export HADOOP_USER_CLASSPATH_FIRST=true; echo "HADOOP_CLASSPATH=/path/to/my.jar" >> /home/hadoop/conf/hadoop-user-env.sh
In Amazon EMR versione 4.x, si procede nello stesso modo utilizzando la classificazione di configurazione hadoop-env
, come mostrato nell'esempio seguente:
[ { "Classification":"hadoop-env", "Properties":{ }, "Configurations":[ { "Classification":"export", "Properties":{ "HADOOP_USER_CLASSPATH_FIRST":"true", "HADOOP_CLASSPATH":"/path/to/my.jar" } } ] } ]
Altro esempio: l'utilizzo di configure-daemons
e il passaggio di --namenode-heap-size=2048
e --namenode-opts=-XX:GCTimeRatio=19
equivale alle classificazioni di configurazione esposte di seguito.
[ { "Classification":"hadoop-env", "Properties":{ }, "Configurations":[ { "Classification":"export", "Properties":{ "HADOOP_DATANODE_HEAPSIZE": "2048", "HADOOP_NAMENODE_OPTS": "-XX:GCTimeRatio=19" } } ] } ]
Altre variabili di ambiente applicazione non sono più definite in /home/hadoop/.bashrc
, ma sono principalmente impostate in file /etc/default
per componente o applicazione, ad esempio /etc/default/hadoop
. Anche gli script wrapper in /usr/bin/
installati dai file RPM delle applicazioni possono impostare ulteriori variabili di ambiente prima dell'utilizzo dello script bin effettivo.
Porte di servizio
Quando si utilizza una versione AMI, alcuni servizi utilizzano porte personalizzate.
Modifiche nelle impostazioni delle porte | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Impostazione | AMI versione 3.x | Valore di default open source | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fs.default.name | hdfs://emrDeterminedIP:9000 | impostazione predefinita (hdfs://emrDeterminedIP :8020) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dfs.datanode.address | 0.0.0.0:9200 | valore di default (0.0.0.0:50010) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dfs.datanode.http.address | 0.0.0.0:9102 | valore di default (0.0.0.0:50075) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dfs.datanode.https.address | 0.0.0.0:9402 | valore di default (0.0.0.0:50475) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dfs.datanode.ipc.address | 0.0.0.0:9201 | valore di default (0.0.0.0:50020) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dfs.http.address | 0.0.0.0:9101 | valore di default (0.0.0.0:50070) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dfs.https.address | 0.0.0.0:9202 | valore di default (0.0.0.0:50470) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dfs.secondary.http.address | 0.0.0.0:9104 | valore di default (0.0.0.0:50090) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
yarn.nodemanager.address | 0.0.0.0:9103 | valore di default (${yarn.nodemanager.hostname}:0) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
yarn.nodemanager.localizer.address | 0.0.0.0:9033 | valore di default (${yarn.nodemanager.hostname}:8040) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
yarn.nodemanager.webapp.address | 0.0.0.0:9035 | valore di default (${yarn.nodemanager.hostname}:8042) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
yarn.resourcemanager.address | emrDeterminedIP :9022 |
valore di default (${yarn.resourcemanager.hostname}:8032) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
yarn.resourcemanager.admin.address | emrDeterminedIP :9025 |
valore di default (${yarn.resourcemanager.hostname}:8033) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
yarn.resourcemanager.resource-tracker.address | emrDeterminedIP :9023 |
valore di default (${yarn.resourcemanager.hostname}:8031) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
yarn.resourcemanager.scheduler.address | emrDeterminedIP :9024 |
valore di default (${yarn.resourcemanager.hostname}:8030) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
yarn.resourcemanager.webapp.address | 0.0.0.0:9026 | valore di default (${yarn.resourcemanager.hostname}:8088) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
yarn.web-proxy.address | emrDeterminedIP :9046 |
valore di default (no-value) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
yarn.resourcemanager.hostname | 0.0.0.0 (predefinito) | emrDeterminedIP |
Nota
emrDeterminedIP
è un indirizzo IP generato da Amazon EMR.
Utenti
Quando si utilizza una versione di AMI, l'utente hadoop
esegue tutti i processi e possiede tutti i file. In Amazon EMR versione 4.0.0 e versioni successive, gli utenti esistono a livello di componente e di applicazione.
Sequenza di installazione, artifact installati e posizioni dei file di log
Quando si utilizza una versione AMI, gli artefatti delle applicazioni e le relative directory di configurazione sono installati nella directory /home/hadoop/
. Ad esempio, se hai installato Hive, la directory sarebbe application
/home/hadoop/hive
. In Amazon EMR 4.0.0 e versioni successive, gli artifact delle applicazioni sono installati nella directory /usr/lib/
. Quando si utilizza una versione AMI, i file di log si trovano in varie posizioni. La tabella seguente elenca tali posizioni.application
Modifiche nelle posizioni dei log in Amazon S3 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Daemon o applicazione | Percorso della directory | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 (server 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 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CLI Hive | node/instance-id /apps/hive.log |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Log utente e log di container delle applicazioni YARN | task-attempts/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Mahout | N/D | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Pig | N/D | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
spark-historyserver | N/D | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
File della cronologia dei processi mapreduce | jobs/ |
Runner di comandi
Quando utilizzi una versione AMI, molti script o programmi, come /home/hadoop/contrib/streaming/hadoop-streaming.jar
non sono posizionati nell'ambiente del percorso di accesso alla shell, pertanto devi specificare il percorso completo quando utilizzi un file jar come command-runner.jar o script-runner.jar per eseguire gli script. Il file command-runner.jar
si trova nell'AMI, non è quindi necessario disporre di un URI completo come avveniva con script-runner.jar
.
Fattore di replica
Il fattore di replica ti consente di stabilire quando avviare una JVM Hadoop. Puoi avviare una nuova JVM Hadoop per ogni attività, in modo da fornire un migliore isolamento delle attività, oppure condividere JVM tra attività, per ridurre l'overhead del framework. Se stai elaborando molti file di piccole dimensioni, è logico riutilizzare la JVM molte volte per ammortizzare il costo di startup. Tuttavia, se ogni attività richiede molto tempo o elabora una grande quantità di dati, puoi scegliere di non riutilizzare la JVM per assicurarti che tutta la memoria sia disponibile per le attività successive. Quando utilizzi una versione AMI, puoi personalizzare il fattore di replica utilizzando l'operazione di bootstrap configure-hadoop
per impostare la proprietà mapred.job.reuse.jvm.num.tasks
.
L'esempio seguente illustra l'impostazione del fattore di riutilizzo della JVM per un riutilizzo all'infinito della stessa.
Nota
I caratteri di continuazione della riga Linux (\) sono inclusi per la leggibilità. Possono essere rimossi o utilizzati nei comandi Linux. Per Windows, rimuoverli o sostituirli con un accento circonflesso (^).
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"
]