Подтвердить что ты не робот

Исключение прерывания с использованием Искры

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

4b9b3361

Ответ 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).