Исключение прерывания с использованием Искры
У меня есть Spark-кластер с 10 узлами, и я получаю это исключение после использования Spark Context в первый раз:
14/11/20 11:15:13 ERROR UserGroupInformation: PriviledgedActionException as:iuberdata (auth:SIMPLE) cause:java.util.concurrent.TimeoutException: Futures timed out after [120 seconds]
Exception in thread "main" java.lang.reflect.UndeclaredThrowableException: Unknown exception in doAs
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1421)
at org.apache.spark.deploy.SparkHadoopUtil.runAsSparkUser(SparkHadoopUtil.scala:52)
at org.apache.spark.executor.CoarseGrainedExecutorBackend$.run(CoarseGrainedExecutorBackend.scala:113)
at org.apache.spark.executor.CoarseGrainedExecutorBackend$.main(CoarseGrainedExecutorBackend.scala:156)
at org.apache.spark.executor.CoarseGrainedExecutorBackend.main(CoarseGrainedExecutorBackend.scala)
Caused by: java.security.PrivilegedActionException: java.util.concurrent.TimeoutException: Futures timed out after [120 seconds]
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1408)
... 4 more
Этот парень имел аналогичную проблему, но я уже пробовал его решение и не работал.
То же исключение также происходит здесь, но проблема здесь не в том, что я использую искру версии 1.1.0 в как ведущий, так и ведомый и на клиенте.
Я пытался увеличить тайм-аут до 120 секунд, но он все еще не решает проблему.
Я документирую скрипты среды, и я использую context.addJar для включения моего кода в путь к классам.
Эта проблема прерывается, и я не знаю, как отслеживать, почему это происходит. Кто-нибудь столкнулся с этой проблемой при настройке искрового кластера, как его решить?
Ответы
Ответ 1
Брандмауэр был сконфигурирован, и в некоторых случаях он не позволял подчиненным устройствам подключаться к кластеру.
Это вызвало проблему с таймаутом, так как ведомые устройства не могли подключиться к серверу.
Если вы столкнулись с этим таймаутом, проверьте настройки брандмауэра.
Ответ 2
У нас была аналогичная проблема, которую было довольно сложно отладить и изолировать. Короче говоря, Spark использует Akka, которая очень придирчива к именам FQDN, разрешающим IP-адреса. Даже если вы укажете IP-адрес во всех местах, этого недостаточно. Ответ здесь помог нам изолировать проблему.
Полезный тест для запуска выполняется netcat -l <port>
на главном сервере и запускает nc -vz <host> <port>
для рабочего, чтобы проверить подключение. Запустите тест с IP-адресом и с полным доменным именем. Вы можете получить имя, которое Spark использует из сообщения WARN из приведенного ниже фрагмента журнала. Для нас это было host032s4.staging.companynameremoved.info
. Тест IP-адреса для нас прошел, и проверка FQDN завершилась неудачно, так как наш DNS был настроен неправильно.
INFO 2015-07-24 10:33:45 Remoting: Remoting started; listening on addresses :[akka.tcp://[email protected]:35455]
INFO 2015-07-24 10:33:45 Remoting: Remoting now listens on addresses: [akka.tcp://[email protected]:35455]
INFO 2015-07-24 10:33:45 org.apache.spark.util.Utils: Successfully started service 'driverPropsFetcher' on port 35455.
WARN 2015-07-24 10:33:45 Remoting: Tried to associate with unreachable remote address [akka.tcp://[email protected]:50855]. Address is now gated for 60000 ms, all messages to this address will be delivered to dead letters.
ERROR 2015-07-24 10:34:15 org.apache.hadoop.security.UserGroupInformation: PriviledgedActionException as:skumar cause:java.util.concurrent.TimeoutException: Futures timed out after [30 seconds]
Еще одна вещь, которую мы должны были сделать, это указать свойства spark.driver.host
и spark.driver.port
в исходной строке script. Это было связано с тем, что у нас были машины с двумя IP-адресами, а FQDN разрешено с неправильным IP-адресом.
Убедитесь, что ваша сеть и записи DNS верны!
Ответ 3
У меня была аналогичная проблема, и мне удалось обойти ее, используя cluster
режим развертывания, когда отправляет приложение в Spark.
(потому что даже разрешая весь входящий трафик как для моего ведущего, так и для одного подчиненного устройства, я не разрешил использовать режим развертывания client
. Перед тем, как их изменить, у меня были настройки по умолчанию для группы безопасности (AWS-брандмауэр), настроенные с помощью скрипты Spark EC2 от Spark 1.2.0).