web-dev-qa-db-fra.com

Comment augmenter les limites de fichiers ouverts (nofile et epoll) dans 10.04?

Je rencontre un problème assez courant lors de la configuration d'un cluster hadoop (en fait, il utilise le cluster pseudo distribué de Cloudera sur une seule machine), où le nombre de fichiers son ouverture dépasse les limites du système de fichiers. Cloudera recommande ajouter les lignes suivantes à /etc/security/limits.conf:

hdfs hard nofile 16384 # hdfs is my 'hadoop' user equivalent

et, comme je suis en train d’exécuter le noyau 2.6.32, édite également /etc/sysctl.conf:

fs.epoll.max_user_instances = 4096

Après avoir effectué ces modifications et redémarré mon serveur, je reçois toujours la même erreur! Il semble toujours que les limites de fichiers ouverts de hdfs n’ont pas été augmentées au-delà de la valeur par défaut de 1024:

[bash]$ Sudo lsof | awk '{print $3}' | sort | uniq -c | sort -nr
   2145 root
   1495 hdfs
    610 mapred
    359 www-data
    305 rdm
    116 mysql
     83 rabbitmq
     32 messagebus
     30 snmp
     25 ntp
     23 syslog
     16 daemon
      1 USER

Au fur et à mesure de mes recherches, il est devenu évident que l’augmentation de la taille du fichier dépend fortement du système (même sous Ubuntu; ici , ici , et ici ), je voulais donc voir quelle est la méthode Ubuntu. Est-ce que quelqu'un sait comment augmenter ces limites dans Ubuntu 10.04?

Je préfère définitivement les solutions qui n'augmentent pas les limites pour tous les utilisateurs, mais pour le moment, je serais prêt à tout essayer. Merci de votre aide!

2
dino

Afin de définir ces limites, j'ai fait une combinaison de choses trouvées ici et ici . Puisque je veux limiter ces limites de fichiers aux utilisateurs hdfs et mapred, j’ai ajouté chacun de ces utilisateurs au groupe hadoop de mon système et modifié /etc/security/limits.conf pour inclure le ligne:

@hadoop hard nofile 16384

qui permet aux deux utilisateurs d'ouvrir jusqu'à 16384 fichiers à la fois, ce qui est apparemment important en mode pseudo-distribué. J'ai aussi dû ajouter la ligne suivante à /etc/pam.d/common-session:

session required pam_limits.so

ce qui fait que ces limites de fichiers persistent dans les processus de démon tels que hdfs et mapred. Après le redémarrage du serveur, tout semble fonctionner parfaitement car hdfs a actuellement plus que le nombre de fichiers ouverts par défaut (1024):

[dsftar01 ~]$ Sudo lsof | awk '{if(NR>1) print $3}' | 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
2
dino

ajouter ulimit -n 16384 aux utilisateurs hdfs .bashrc (ou /etc/profile, cela définira la valeur pour tous les utilisateurs]

Si l'utilisateur ne dispose pas d'un répertoire personnel, ajoutez ulimit -n 16384 à /etc/profile.

Ensuite, vous devez redémarrer l'ordinateur.

1
Manula Waidyanatha