Apache Phoenix java.lang.OutOfMemoryError: невозможно создать новый собственный поток - PullRequest
0 голосов
/ 31 января 2019

У меня есть крошечный кластер Hadoop с 5 узлами данных и 1 узлом имени, все 4 ядра / 4 потоковых машины с 4 ГБ ОЗУ каждый, кроме одного узла данных с 8 ГБ ОЗУ.

Все они используют RHEL 6 x86_64.Версия HBase - 1.2, а версия Phoenix - 4.14

. Я подключаюсь к Apache Phoenix через сервер запросов Phoenix и «тонкий» клиент JDBC.Phoenix Query Server работает на узле имени.

Я пытаюсь добавить ~ 2000 кортежей, ~ 25 столбцов каждые 10 минут, в таблицу уже вставлено более 2 миллионов кортежей, но иногда я получаю исключения в виде:

Причина: java.lang.OutOfMemoryError: невозможно создать новый собственный поток [...] Причина: AvaticaClientRuntimeException: ошибка удаленного драйвера: RuntimeException: org.apache.phoenix.execute.CommitException:java.lang.RuntimeException: java.lang.OutOfMemoryError: невозможно создать новый собственный поток -> CommitException: java.lang.RuntimeException: java.lang.OutOfMemoryError: невозможно создать новый собственный поток -> RuntimeException: java.lang.OutOfemEoryневозможно создать новый собственный поток -> OutOfMemoryError: невозможно создать новый собственный поток.Ошибка -1 (00000) null

Сервер запросов Phoenix работает на узле имени, я не уверен, что не так.

Это не фактическое исключение OutOfMemoryException, а как если бы оно создавало много потоков и заканчивалось из них?

Я пытался сделать ps aux, и я не вижу, чтобы процесс Phoenix Query Server создавал более ~ 50 потоков, что на самом деле намного меньше, чем ограничение потока в обычной установке Linux.

Может быть, действительно не хватает памяти и не удается создать собственные потоки - это симптом?

1 Ответ

0 голосов
/ 14 марта 2019

Оказалось, что у пользователя, в котором выполнялся процесс Hadoop, слишком мало лимитов для новых процессов, я отредактировал

/ etc / security / limit.conf

С помощью:

user - nproc 32768

И это сработало.Я не видел определенного предела количества потоков, но увеличение предела числа процессов добилось цели.

Я также прочитал, что увеличение предела количества открытых файлов необходимо и для кластеров:

 user - nofile 32768

Я настроил его таким образом, чтобы избежать проблем в будущем.

...