Как увеличить лимиты открытых файлов (nofile и epoll) в 10.04?

Я сталкиваюсь с довольно распространенной проблемой при настройке кластера hadoop (фактически, с использованием псевдораспределенного кластера Cloudera на одной машине), где число файлов, которые Hadoop открывает, выходит за пределы файловой системы. 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

По мере того, как я провел дополнительные исследования, стало ясно, что увеличение пределов размера файла сильно зависит от системы [ 118] (даже в Ubuntu; здесь , здесь и здесь ), поэтому я хотел посмотреть, что такое метод Ubuntu. Кто-нибудь знает, как увеличить эти лимиты в Ubuntu 10.04?

Я определенно предпочитаю решения, которые не увеличивают лимиты для всех пользователей, но на этом этапе я был бы готов попробовать что угодно. Спасибо за вашу помощь!

2
задан 23 May 2017 в 15:39

2 ответа

Для установления этих пределов я сделал комбинацию вещей, найденных здесь и здесь. Так как я хочу ограничить эти пределы файла hdfs и mapred пользователи, я добавил каждого из этих пользователей к hadoop группа в моей системе и отредактированный /etc/security/limits.conf включать строку:

@hadoop hard nofile 16384

который позволяет обоим пользователям открывать целых 16 384 файла сразу, который по-видимому важен в псевдораспределенном режиме. Я также должен был добавить следующую строку к /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
ответ дан 23 May 2017 в 15:39

добавить ulimit -n 16384 для пользователей hdfs .bashrc (или /etc/profile, чтобы установить значение для всех пользователей]

Если у пользователя нет домашнего каталога, добавьте ulimit -n 16384 - /etc/profile

Затем вы должны перезагрузить компьютер.

0
ответ дан 23 May 2017 в 15:39

Другие вопросы по тегам:

Похожие вопросы: