medicina hadoop amazon-web-services mapreduce elastic-map-reduce amazon-emr

hadoop - medicina - emr movie



Amazon Elastic MapReduce Bootstrap Actions not working (2)

He intentado las siguientes combinaciones de acciones de arranque para aumentar el tamaño de almacenamiento dinámico de mi trabajo, pero ninguno de ellos parece funcionar:

--mapred-key-value mapred.child.java.opts=-Xmx1024m --mapred-key-value mapred.child.ulimit=unlimited --mapred-key-value mapred.map.child.java.opts=-Xmx1024m --mapred-key-value mapred.map.child.ulimit=unlimited -m mapred.map.child.java.opts=-Xmx1024m -m mapred.map.child.ulimit=unlimited -m mapred.child.java.opts=-Xmx1024m -m mapred.child.ulimit=unlimited

¿Cuál es la sintaxis correcta?


Tienes dos opciones para lograr esto:

Configuraciones personalizadas de JVM

Para aplicar configuraciones personalizadas, es posible que desee echar un vistazo a la documentación de acciones de Bootstrap para Amazon Elastic MapReduce (Amazon EMR) , específicamente Acción Configurar Daemons :

Esta acción de arranque predefinida le permite especificar el tamaño del montón u otras opciones de Java Virtual Machine (JVM) para los daemons de Hadoop. Puede usar esta acción de arranque para configurar Hadoop para trabajos grandes que requieren más memoria que la que Hadoop asigna de forma predeterminada. También puede usar esta acción de arranque para modificar las opciones avanzadas de JVM, como el comportamiento de recolección de elementos no utilizados.

También se proporciona un ejemplo, que establece el tamaño del montón en 2048 y configura la opción namenode de Java :

$ ./elastic-mapreduce –create –alive / --bootstrap-action s3://elasticmapreduce/bootstrap-actions/configure-daemons / --args --namenode-heap-size=2048,--namenode-opts=-XX:GCTimeRatio=19

Configuraciones de JVM predefinidas

Alternativamente, según las preguntas frecuentes ¿Cómo configuro las configuraciones de Hadoop para mi flujo de trabajo? Si sus tareas de flujo de trabajo requieren mucha memoria, puede optar por utilizar menos tareas por núcleo y reducir el tamaño del montón de su rastreador de trabajos. Para esta situación, está disponible una Acción de Bootstrap predefinida para configurar su flujo de trabajo al inicio : esto se refiere a la acción Configurar cargas de trabajo intensivas en memoria , que le permite configurar valores de Hadoop en todo el clúster a valores apropiados para flujos de trabajo con uso intensivo de memoria cargas de trabajo , por ejemplo:

$ ./elastic-mapreduce --create / --bootstrap-action / s3://elasticmapreduce/bootstrap-actions/configurations/latest/memory-intensive

Los ajustes de configuración específicos aplicados por esta acción de arranque predefinida se enumeran en Hadoop Memory-Intensive Configuration Settings .

¡Buena suerte!


La respuesta de Steffen es buena y funciona. Por otro lado, si solo quieres algo rápido y sucio y solo quieres reemplazar una o dos variables, entonces probablemente estés buscando simplemente cambiarlo a través de la línea de comando como se muestra a continuación:

elastic-mapreduce --create / --bootstrap-action s3://elasticmapreduce/bootstrap-actions/configure-hadoop / --args "-m,mapred.child.java.opts=-Xmx999m"

He visto otra documentación, aunque sea más antigua, que simplemente cita toda la expresión dentro de una cita como la siguiente:

--bootstrap-action "s3://elasticmapreduce/bootstrap-actions/configure-hadoop -m / mapred.child.java.opts=-Xmx999m" ### I tried this style, it no longer works!

En cualquier caso, esto no se encuentra fácilmente en la documentación de AWS EMR . Sospecho que mapred.child.java.opts es una de las variables más alteradas. También estaba buscando una respuesta cuando recibí un error de GC: "java.lang.OutOfMemoryError: el límite de GC se excedió" y tropecé con esta página. . El valor predeterminado de 200 m es demasiado pequeño ( documentación sobre los valores predeterminados ).

¡Buena suerte!