Искровое задание выдает ошибку (ошибка сердцебиения узла spark)

#apache-spark #pyspark

#apache-spark #pyspark

Вопрос:

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

 16/10/12 12:10:41 WARN NettyRpcEndpointRef: Error sending message [message = Heartbeat(2,[Lscala.Tuple2;@1ee84de,BlockManagerId(2, IP1, 2726))] in 1 attempts
org.apache.spark.rpc.RpcTimeoutException: Futures timed out after [30 seconds]. This timeout is controlled by spark.executor.heartbeatInterval
    at org.apache.spark.rpc.RpcTimeout.org$apache$spark$rpc$RpcTimeout$$createRpcTimeoutException(RpcTimeout.scala:48)
    at org.apache.spark.rpc.RpcTimeout$$anonfun$addMessageIfTimeout$1.applyOrElse(RpcTimeout.scala:63)
    at org.apache.spark.rpc.RpcTimeout$$anonfun$addMessageIfTimeout$1.applyOrElse(RpcTimeout.scala:59)
    at scala.PartialFunction$OrElse.apply(PartialFunction.scala:167)
    at org.apache.spark.rpc.RpcTimeout.awaitResult(RpcTimeout.scala:83)
    at org.apache.spark.rpc.RpcEndpointRef.askWithRetry(RpcEndpointRef.scala:102)
    at org.apache.spark.executor.Executor.org$apache$spark$executor$Executor$$reportHeartBeat(Executor.scala:518)
    at org.apache.spark.executor.Executor$$anon$1$$anonfun$run$1.apply$mcV$sp(Executor.scala:547)
    at org.apache.spark.executor.Executor$$anon$1$$anonfun$run$1.apply(Executor.scala:547)
    at org.apache.spark.executor.Executor$$anon$1$$anonfun$run$1.apply(Executor.scala:547)
    at org.apache.spark.util.Utils$.logUncaughtExceptions(Utils.scala:1857)
    at org.apache.spark.executor.Executor$$anon$1.run(Executor.scala:547)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.util.concurrent.TimeoutException: Futures timed out after [30 seconds]
    at scala.concurrent.impl.Promise$DefaultPromise.ready(Promise.scala:219)
    at scala.concurrent.impl.Promise$DefaultPromise.result(Promise.scala:223)
    at scala.concurrent.Await$$anonfun$result$1.apply(package.scala:190)
    at scala.concurrent.BlockContext$DefaultBlockContext$.blockOn(BlockContext.scala:53)
    at scala.concurrent.Await$.result(package.scala:190)
    at org.apache.spark.rpc.RpcTimeout.awaitResult(RpcTimeout.scala:81)
  

Я установил значение spark.executor.heartbeatInterval 30. Тем не менее я получаю ошибку.

Моя среда :

Сервер 1: я запускаю мастер с помощью spark-class org.apache.spark.deploy.master.Master Я запускаю рабочий с помощью spark-class org.apache.spark.deploy.worker.Worker spark://server1:7077

Сервер 2 (ip2): я запускаю рабочий с помощью spark-class org.apache.spark.deploy.worker.Worker spark://172.16.2.95:7077

Драйвер находится на сервере 1 : spark-submit --master spark://server1:7077 --num-executors 2 --executor-cores 1 C:sparkpocstreamexample.py

Узлы : введите описание изображения здесь

Может ли кто-нибудь мне помочь?

Комментарии:

1. вы можете видеть рабочие узлы при открытии пользовательского интерфейса Spark?

2. Да, я вижу это @amit_kumar

3. @amit_kumar, добавил скриншот

4. Этот тип ошибок почти всегда возникает из-за проблемы с памятью. Вам нужно покопаться в журналах умирающего исполнителя, чтобы узнать больше. Если журналы не сообщают вам многого, посмотрите на DAG и найдите этап, который вызывает проблему. Как только этап изолирован, вы можете поэкспериментировать с перераспределением данных, и если это все еще не решает проблему, я обычно собираю образцы данных и визуально проверяю их. Это всегда приводит меня к решению. Счастливой охоты 🙂

5. Что вы делаете в streamexample.py ? Насколько велик набор данных? Это проблема с этим конкретным приложением или кластером?