Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Creazione di un cluster con versioni AMI di Amazon EMR precedenti
Le versioni 2.x e 3.x di Amazon EMR sono identificate dal numero di versione AMI. La versione 4.0.0 di Amazon EMR e quelle successive sono identificate dal numero di versione mediante un'etichetta di rilascio, ad esempio emr-5.11.0
. Questa modifica è più evidente quando si crea un cluster utilizzando o a livello di codice. AWS CLI
Quando si utilizza AWS CLI per creare un cluster utilizzando una versione di release AMI, utilizzare l'--ami-version
opzione, ad esempio--ami-version 3.11.0
. Molte opzioni, caratteristiche e applicazioni introdotte in Amazon EMR 4.0.0 e versioni successive non sono disponibili quando specifichi una --ami-version
. Per ulteriori informazioni, consulta create-cluster nella Guida di riferimento ai comandi della AWS CLI .
Il AWS CLI comando di esempio seguente avvia un cluster utilizzando una versione AMI.
Nota
I caratteri di continuazione della riga Linux (\) sono inclusi per questioni di 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"
]
A livello di codice, tutte le versioni di Amazon EMR utilizzano l'operazione RunJobFlowRequest
nell'API di EMR per creare cluster. L'esempio seguente di codice Java crea un cluster mediante la versione AMI 3.11.0.
RunJobFlowRequest request = new RunJobFlowRequest()
.withName("AmiVersion Cluster")
.withAmiVersion("3.11.0")
.withInstances(new JobFlowInstancesConfig()
.withEc2KeyName("myKeyPair")
.withInstanceCount(1)
.withKeepJobFlowAliveWhenNoSteps(true)
.withMasterInstanceType("m3.xlarge")
.withSlaveInstanceType("m3.xlarge");
La chiamata RunJobFlowRequest
seguente utilizza invece un'etichetta di release:
RunJobFlowRequest request = new RunJobFlowRequest()
.withName("ReleaseLabel Cluster")
.withReleaseLabel("emr-7.8.0
")
.withInstances(new JobFlowInstancesConfig()
.withEc2KeyName("myKeyPair")
.withInstanceCount(1)
.withKeepJobFlowAliveWhenNoSteps(true)
.withMasterInstanceType("m3.xlarge")
.withSlaveInstanceType("m3.xlarge");
Configurazione della dimensione di un cluster
Durante l'esecuzione del cluster, Hadoop determina il numero di attività di mappatore e riduttore necessarie per elaborare i dati. I cluster più grandi devono disporre di più attività per un migliore utilizzo delle risorse e un tempo di elaborazione più basso. Di solito, la dimensione di un cluster EMR non cambia durante l'intero ciclo di vita del cluster; il numero di attività è impostato alla creazione del cluster. Quando ridimensioni un cluster in esecuzione, puoi variare l'elaborazione durante l'esecuzione. Pertanto, anziché utilizzare un numero fisso di attività, puoi variare il numero di attività durante il ciclo di vita del cluster. Sono disponibili due opzioni di configurazione per l'impostazione del numero ideale di attività:
-
mapred.map.tasksperslot
-
mapred.reduce.tasksperslot
Puoi impostare entrambe le opzioni nel file mapred-conf.xml
. Quando invii un processo al cluster, il client di processi verifica il numero totale corrente di slot di mappatura e riduzione disponibili nell'intero cluster. Il client di processi utilizza quindi le seguenti equazioni per impostare il numero di attività:
-
mapred.map.tasks
=mapred.map.tasksperslot
* slot di mappatura nel cluster -
mapred.reduce.tasks
=mapred.reduce.tasksperslot
* slot di riduzione nel cluster
Il client di processi legge il parametro tasksperslot
solo se il numero di attività non è configurato. Puoi sovrascrivere il numero di attività in qualsiasi momento: per tutti i cluster tramite un'operazione di bootstrap oppure individualmente per processo aggiungendo una fase per modificare la configurazione.
Amazon EMR è in grado di gestire gli errori nei nodi attività e continua l'esecuzione del cluster anche se un nodo attività non è più disponibile. Amazon EMR effettua automaticamente il provisioning di ulteriori nodi attività per sostituire quelli con errori.
Puoi avere un numero differente di nodi di task per ogni fase di cluster. Puoi inoltre aggiungere una fase a un cluster in esecuzione per modificare il numero di nodi di task. Poiché, per impostazione predefinita, l'esecuzione sequenziale delle fasi è garantita, puoi specificare il numero di nodi di task in esecuzione per qualsiasi fase.