2 votes

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

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

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

et, comme je tourne sous le noyau 2.6.32, j'ai également édité /etc/sysctl.conf :

fs.epoll.max_user_instances = 4096

Après avoir effectué ces changements et redémarré mon serveur, j'obtiens toujours la même erreur ! Il semble toujours que les limites de fichiers ouverts de hdfs n'aient pas été augmentées au-delà des 1024 par défaut :

[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 apparaît clairement que l'augmentation des limites de taille des fichiers dépend fortement du système (même dans Ubuntu ; aquí , aquí y aquí ), j'ai donc voulu voir quelle était la méthode d'Ubuntu. Quelqu'un sait-il comment augmenter ces limites dans Ubuntu 10.04 ?

Je préfère nettement les solutions qui n'augmentent pas les limites pour tous les utilisateurs, mais à ce stade, je suis prêt à tout essayer. Je vous remercie de votre aide !

2voto

dino Points 187

Afin de fixer ces limites, j'ai procédé à une combinaison des éléments suivants aquí y aquí . Étant donné que je souhaite limiter ces limites de fichiers à la zone hdfs y mapred j'ai ajouté chacun de ces utilisateurs à la liste des utilisateurs de la hadoop sur mon système et édité /etc/security/limits.conf pour inclure la 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 également dû ajouter la ligne suivante à /etc/pam.d/common-session :

session required pam_limits.so

qui fait persister ces limites de fichiers à travers les processus démon comme hdfs et mapred. Après avoir redémarré le serveur, tout semble fonctionner parfaitement puisque hdfs a actuellement plus de fichiers ouverts que le nombre 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

1voto

Manula Waidyanatha Points 8133

Ajouter ulimit -n 16384 aux utilisateurs de hdfs .bashrc (ou /etc/profile ceci fixera la valeur pour tous les utilisateurs]

Si l'utilisateur n'a pas de répertoire personnel, ajouter ulimit -n 16384 à /etc/profile

Vous devez ensuite redémarrer l'ordinateur.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X