Demasiados archivos abiertos en EMR

Estoy recibiendo la siguiente excitación en mis reductores:

EMFILE: Too many open files
    at org.apache.hadoop.io.nativeio.NativeIO.open(Native Method)
    at org.apache.hadoop.io.SecureIOUtils.createForWrite(SecureIOUtils.java:161)
    at org.apache.hadoop.mapred.TaskLog.writeToIndexFile(TaskLog.java:296)
    at org.apache.hadoop.mapred.TaskLog.syncLogs(TaskLog.java:369)
    at org.apache.hadoop.mapred.Child$4.run(Child.java:257)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:396)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1059)
    at org.apache.hadoop.mapred.Child.main(Child.java:249)

Por reductor se están creando alrededor de 10.000 archivos. ¿Hay alguna manera de configurar el ulimit de cada caja?

Intenté usar el siguiente comando como una secuencia de comandos de arranque: ulimit -n 1000000

Pero esto no ayudó en absoluto.

También probé lo siguiente en la acción de arranque para reemplazar el comando ulimit en /usr/lib/hadoop/hadoop-daemon.sh:

#!/bin/bash
set -e -x
sudo sed -i -e "/^ulimit /s|.*|ulimit -n 134217728|" /usr/lib/hadoop/hadoop-daemon.sh

Pero incluso cuando iniciamos sesión en el nodo maestro puedo ver que ulimit -n devuelve: 32768. También confirmé que se realizó el cambio deseado en /usr/lib/hadoop/hadoop-daemon.sh y que tenía: ulimit -n 134217728.

¿Tenemos alguna configuración de hadoop para esto? ¿O hay una solución para esto?

Mi objetivo principal es dividir los registros en archivos de acuerdo con los identificadores de cada registro, y hay 1.500 millones de registros en este momento que ciertamente pueden aumentar.

¿Alguna forma de editar este archivo antes de que este daemon se ejecute en cada esclavo?

Respuestas a la pregunta(4)

Su respuesta a la pregunta