Personalización de la configuración de clústeres y aplicaciones con versiones anteriores de la AMI de Amazon EMR - Amazon EMR

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Personalización de la configuración de clústeres y aplicaciones con versiones anteriores de la AMI de Amazon EMR

En la versión 4.0.0 de Amazon EMR se introdujo un método simplificado de configurar aplicaciones mediante clasificaciones de configuración. Para obtener más información, consulte Configuración de aplicaciones. Cuando se utiliza una versión de AMI, las aplicaciones se configuran mediante acciones de arranque y pasando argumentos. Por ejemplo, las acciones de arranque configure-hadoop y configure-daemons configuran propiedades del entorno específicas de Hadoop y YARN como --namenode-heap-size. En versiones más recientes, estas se configuran con las clasificaciones de configuración hadoop-env y yarn-env. Para ver las acciones de arranque que realizan configuraciones comunes, consulte el emr-bootstrap-actions repositorio en Github.

En las siguientes tablas, se asignan acciones de arranque a clasificaciones de configuración de las versiones de Amazon EMR más recientes.

Hadoop
Nombre de archivo de aplicación afectado Acción de arranque de versión de la AMI Clasificación de configuración
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
Nombre de archivo de aplicación afectado Acción de arranque de versión de la AMI Clasificación de configuración
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
Nombre de archivo de aplicación afectado Acción de arranque de versión de la AMI Clasificación de configuración
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 el nuevo valor fs.s3.cse.encryptionMaterialsProvider.uri)

Para ver una lista de todas las clasificaciones, consulte Configuración de aplicaciones.

Variables de entorno de la aplicación

Cuando se utiliza una versión de AMI, se usa un script hadoop-user-env.sh junto con la acción de arranque configure-daemons para configurar el entorno de Hadoop. El script incluye las siguientes acciones:

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

En la versión 4.x de Amazon EMR, se hace lo mismo con la clasificación de configuración hadoop-env, tal y como se muestra en el ejemplo siguiente:

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

Otro ejemplo consiste en usar configure-daemons y pasar --namenode-heap-size=2048 y --namenode-opts=-XX:GCTimeRatio=19, que es equivalente a las siguientes clasificaciones de configuración.

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

Otras variables de entorno de aplicaciones ya no están definidas en /home/hadoop/.bashrc. En su lugar, se definen principalmente en archivos /etc/default por componente o aplicación, como por ejemplo /etc/default/hadoop. Los scripts encapsuladores en /usr/bin/ instalados por RPM de aplicaciones también pueden establecer variables de entorno adicionales antes de implicar el script de bin real.

Puertos de servicio

Cuando se utiliza una versión de AMI, algunos servicios utilizan puertos personalizados.

Cambios en la configuración del puerto
Opción AMI versión 3.x Opción predeterminada de código abierto
fs.default.name hdfs://emrDeterminedIP:9000 valor predeterminado (hdfs://emrDeterminedIP:8020)
dfs.datanode.address 0.0.0.0:9200 valor predeterminado (0.0.0.0:50010)
dfs.datanode.http.address 0.0.0.0:9102 valor predeterminado (0.0.0.0:50075)
dfs.datanode.https.address 0.0.0.0:9402 valor predeterminado (0.0.0.0:50475)
dfs.datanode.ipc.address 0.0.0.0:9201 valor predeterminado (0.0.0.0:50020)
dfs.http.address 0.0.0.0:9101 valor predeterminado (0.0.0.0:50070)
dfs.https.address 0.0.0.0:9202 valor predeterminado (0.0.0.0:50470)
dfs.secondary.http.address 0.0.0.0:9104 valor predeterminado (0.0.0.0:50090)
yarn.nodemanager.address 0.0.0.0:9103 valor predeterminado (${yarn.nodemanager.hostname}:0)
yarn.nodemanager.localizer.address 0.0.0.0:9033 valor predeterminado (${yarn.nodemanager.hostname}:8040)
yarn.nodemanager.webapp.address 0.0.0.0:9035 valor predeterminado (${yarn.nodemanager.hostname}:8042)
yarn.resourcemanager.address emrDeterminedIP:9022 valor predeterminado (${yarn.resourcemanager.hostname}:8032)
yarn.resourcemanager.admin.address emrDeterminedIP:9025 valor predeterminado (${yarn.resourcemanager.hostname}:8033)
yarn.resourcemanager.resource-tracker.address emrDeterminedIP:9023 valor predeterminado (${yarn.resourcemanager.hostname}:8031)
yarn.resourcemanager.scheduler.address emrDeterminedIP:9024 valor predeterminado (${yarn.resourcemanager.hostname}:8030)
yarn.resourcemanager.webapp.address 0.0.0.0:9026 valor predeterminado (${yarn.resourcemanager.hostname}:8088)
yarn.web-proxy.address emrDeterminedIP:9046 valor predeterminado (sin valor)
yarn.resourcemanager.hostname 0.0.0.0 (valor predeterminado) emrDeterminedIP
nota

La emrDeterminedIP es una dirección IP generada por Amazon EMR.

Usuarios

Cuando se utiliza una versión de AMI, el usuario hadoop ejecuta todos los procesos y es propietario de todos los archivos. En la versión 4.0.0 y posteriores de Amazon EMR, los usuarios existen en el nivel de aplicación y de componente.

Secuencia de instalación, artefactos instalados y ubicaciones de archivos de registro

Cuando se utiliza una versión de AMI, los artefactos de aplicación y sus directorios de configuración se instalan en el directorio /home/hadoop/application. Por ejemplo, si instaló Hive, el directorio sería /home/hadoop/hive. En la versión 4.0.0 y posteriores de Amazon EMR, los artefactos de la aplicación se instalan en el directorio /usr/lib/application. Cuando se utiliza una versión de AMI, los archivos log se encuentran en diversos lugares. En la tabla siguiente se indican las ubicaciones.

Cambios en las ubicaciones de registro en Amazon S3
Daemon o aplicación Ubicación del directorio
instance-state node/id-instancia/instance-state/
hadoop-hdfs-namenode daemons/ instance-id/.log hadoop-hadoop-namenode
hadoop-hdfs-datanode daemons/ instance-id/.log hadoop-hadoop-datanode
hadoop-yarn () ResourceManager daemons/ instance-id/yarn-hadoop-resourcemanager
hadoop-yarn (servidor proxy) daemons/ instance-id/yarn-hadoop-proxyserver
mapred-historyserver daemons/id-instancia/
httpfs daemons/id-instancia/httpfs.log
hive-server node/id-instancia/hive-server/hive-server.log
hive-metastore node/id-instancia/apps/hive.log
Hive CLI node/id-instancia/apps/hive.log
Registros de contenedor y de usuario de aplicaciones YARN task-attempts/
Mahout N/A
Pig N/A
spark-historyserver N/D
archivos de historial de tareas mapreduce jobs/

Command Runner

Cuando se utiliza una versión de AMI, muchos scripts o programas, como /home/hadoop/contrib/streaming/hadoop-streaming.jar, no se colocan en el entorno de ruta de inicio de sesión del shell, por lo que debe especificar la ruta completa cuando utilice un archivo jar como command-runner.jar o script-runner.jar para ejecutar los scripts. command-runner.jar está ubicado en la AMI y, por tanto, no hay necesidad de conocer un URI completo como ocurría con script-runner.jar.

Factor de replicación

El factor de replicación le permite configurar cuándo iniciar una JVM de Hadoop. Puede iniciar una nueva JVM de Hadoop para cada tarea, lo que proporciona un mejor aislamiento de tareas, o bien puede compartir las JVM entre tareas, lo que proporciona una menor sobrecarga de la plataforma. Si está procesando muchos archivos pequeños, es razonable reutilizar el JVM muchas veces para amortizar el costo de startup. Sin embargo, si cada tarea tarda mucho tiempo o procesa una gran cantidad de datos, es posible que desee no reutilizar la JVM para garantizar que se libere toda la memoria para las tareas siguientes. Cuando se utiliza una versión de AMI, puede personalizar el factor de replicación mediante la acción de arranque configure-hadoop para establecer la propiedad mapred.job.reuse.jvm.num.tasks.

El siguiente ejemplo muestra cómo configurar el factor de reutilización de JVM para el uso infinito de la JVM.

nota

Se incluyen caracteres de continuación de línea de Linux (\) para facilitar la lectura. Se pueden eliminar o utilizar en los comandos de Linux. En Windows, elimínelos o sustitúyalos por un signo de intercalación (^).

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"]