Para definir esses limites, eu fiz uma combinação de coisas encontradas aqui e aqui . Como desejo restringir esses limites de arquivo aos usuários hdfs
e mapred
, adicionei cada um desses usuários ao grupo hadoop
em meu sistema e editei /etc/security/limits.conf
para incluir a linha:
@hadoop hard nofile 16384
que permite que ambos os usuários abram até 16384 arquivos de uma vez, o que aparentemente é importante no modo pseudo-distribuído. Eu também tive que adicionar a seguinte linha a /etc/pam.d/common-session
:
session required pam_limits.so
que faz com que esses limites de arquivo persistam nos processos daemon, como hdfs e mapred. Depois de reiniciar o servidor, tudo parece estar funcionando perfeitamente, pois o hdfs tem atualmente mais arquivos do que o número padrão (1024) aberto:
[dsftar01 ~]$ sudo lsof | awk '{if(NR>1) print }' | sort | uniq -c | sort -nr
1972 root
1530 hdfs
608 mapred
360 www-data
166 rdm
97 mysql
83 rabbitmq
41 nobody
35 syslog
31 messagebus
30 snmp
25 ntp
16 daemon