Слишком много открытых файлов в EMR

Я получаю следующие исключения в моих редукторах:

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)

На редуктор создается около 10000 файлов. Есть ли способ, которым я могу установить предел каждой коробки.

Я попытался использовать следующую команду в качестве сценария начальной загрузки: ulimit -n 1000000

Но это совсем не помогло.

Я также попробовал следующее в загрузочном действии, чтобы заменить команду ulimit в /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

Но даже тогда, когда мы регистрируемся в главном узле, я вижу, что ulimit -n возвращает: 32768. Я также подтвердил, что в /usr/lib/hadoop/hadoop-daemon.sh было сделано желаемое изменение, и оно имело: ulimit -n 134217728.

У нас есть какие-нибудь конфигурации для этого? Или есть обходной путь для этого?

Моя главная цель - разбить записи на файлы в соответствии с идентификаторами каждой записи, и сейчас существует 1,5 миллиарда записей, которые, безусловно, могут увеличиться.

Есть ли способ отредактировать этот файл перед тем, как этот демон будет запущен на каждом подчиненном устройстве?