web-dev-qa-db-ja.com

10.04でオープンファイルの制限(nofileとepoll)を増やす方法は?

hadoopクラスターの設定でかなり一般的な問題 (実際には、 Clouderaの擬似分散クラスター を単一のマシンで使用)に遭遇しています。ファイルシステムの制限を超えています。 Clouderaが推奨/etc/security/limits.confに次の行を追加します。

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

そして、カーネル2.6.32を実行しているので、/etc/sysctl.confも編集しています:

fs.epoll.max_user_instances = 4096

これらの変更を行ってサーバーを再起動した後も、同じエラーが表示されます! hdfsのオープンファイル制限は、デフォルトの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

さらに調査を行った結果、 ファイルサイズの制限を大きくすることはシステムに大きく依存しています (Ubuntu内でも herehere 、および here )ので、Ubuntuの方法を確認したかったのです。 Ubuntu 10.04でこれらの制限を増やす方法を知っている人はいますか?

私は間違いなく、すべてのユーザーの制限を引き上げないソリューションを好みますが、この時点で何でも試してみたいと思います。ご協力いただきありがとうございます!

2
dino

これらの制限を設定するために、 herehere の組み合わせを行いました。これらのファイル制限をhdfsおよびmapredユーザーに制限するため、これらの各ユーザーをシステムのhadoopグループに追加し、/etc/security/limits.confを編集して、ライン:

@hadoop hard nofile 16384

これにより、両方のユーザーが最大16384個のファイルを一度に開くことができます。これは、擬似分散モードでは明らかに重要です。また、/etc/pam.d/common-sessionに次の行を追加する必要がありました。

session required pam_limits.so

これにより、これらのファイル制限は、hdfsやmapredなどのデーモンプロセス全体で持続します。サーバーを再起動すると、hdfsは現在デフォルトの数(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

ulimit -n 16384をhdfsユーザーに追加.bashrc(または/etc/profileこれはすべてのユーザーの値を設定します]

ユーザーにホームディレクトリがない場合は、ulimit -n 16384/etc/profileに追加します

その後、コンピューターを再起動する必要があります。

1