Проблемы памяти Spark с sparklyr - PullRequest
0 голосов
/ 31 мая 2018

У меня странные проблемы при работе Spark с sparklyr.

В настоящее время я на производственном сервере R, подключаюсь к моему Spark Cluster в режиме клиента через spark://<my server>:7077 и затем извлекаю данные из MS SQL Server.

Недавно я смог сделать это без проблем, но недавно мне дали кластер большего размера, и теперь у меня проблемы с памятью.

Сначала я получал необъяснимые ошибки «нехватки памяти» во времямоя обработка.Это происходило несколько раз, и затем я начал получать сообщения «Недостаточно памяти, не удалось создать новый поток».Я проверил количество потоков, которые я использовал, по сравнению с максимальным значением для моего пользователя как на рабочем сервере R, так и на сервере Spark, и я не был близок к максимальному.

Я перезапустил свой главный узел и теперь получаю:

# There is insufficient memory for the Java Runtime Environment to continue.
# Cannot create GC thread. Out of system resources.

Какого черта происходит ??

Вот мои характеристики:
- Spark Standaloneработает через root пользователя.
- Spark версии 2.2.1
- Sparklyr версии 0.6.2
- Red Hat Linux

1 Ответ

0 голосов
/ 08 июня 2018

Я понял это случайно.Оказывается, что когда вы выполняете операции на внешнем искровом кластере в режиме клиента, он по-прежнему также запускает Spark локально.Я думаю , что локальному Spark не было выделено достаточно памяти, и это вызвало ошибку.Мое исправление было простым:

Вместо выделения памяти с помощью:

spark_conf = spark_config()
spark_conf$`spark.driver.memory` <- "8G"
spark_conf$`spark.executor.memory` <- "12G"

Я использовал:

spark_conf = spark_config()
spark_conf$`sparklyr.shell.driver-memory` <- "8G"
spark_conf$`sparklyr.shell.executor-memory` <- "12G"

Первый из них будет устанавливать ресурсы в кластере (контекст спарк)непосредственно.Последний устанавливает его в контексте искры, а также в остальной части приложения sparklyr.

...