Spark - java IOException: Не удалось создать локальный каталог в /tmp/blockmgr *

Я пытался запустить длинный Spark Job. После нескольких часов исполнения я получаю исключение ниже:

Caused by: java.io.IOException: Failed to create local dir in /tmp/blockmgr-bb765fd4-361f-4ee4-a6ef-adc547d8d838/28 

Пытался обойти это, проверив:

  • Разрешение проблемы в каталоге /tmp. Исходный сервер не работает как root. но /tmp dir должен быть доступен для записи всем пользователям.

  • /tmp Dir имеет достаточно места.

Ответ 1

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

Пожалуйста, подтвердите, что каждый рабочий / node имеет достаточно места на диске (особенно в папке check/tmp) и в правом разрешении.

Ответ 2

Сделайте резервную копию файла кэша tmp. Очистите каталог tmp и запустите вашу оболочку. Это будет работать. Тот же подход работал для меня.

Ответ 3

Изменить: ответ ниже не в конечном итоге решить мой случай. Это потому, что некоторые подпапки Spark (или некоторые из его зависимостей) удалось создать, но не все из них. Частая необходимость создания таких путей сделает любой проект нежизнеспособным. Поэтому я запустил Spark (PySpark в моем случае) в качестве администратора, который решил проблему. Так что, в конце концов, это, вероятно, проблема с разрешениями.


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

C:\Users\<username>\AppData\Local\Temp\blockmgr-97439a5f-45b0-4257-a773-2b7650d17142

Ответ 4

После проверки всех разрешений и доступа пользователя.

У меня возникла та же проблема при сборке компонентов в Talend studio, и она была решена путем предоставления правильного символа "/" в директории spark scratch (временная директория) на вкладке Configuration Configuration. Это необходимо при сборке jar в windows и запуске в кластере Linux.