#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 ? Насколько велик набор данных? Это проблема с этим конкретным приложением или кластером?