У меня есть крошечный кластер 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.
Может быть, действительно не хватает памяти и не удается создать собственные потоки - это симптом?