Работа Spark на EMR заняла внезапно 30 часов (вместо 5 часов) - PullRequest
0 голосов
/ 17 апреля 2019

Я относительно новичок в Spark. У меня есть работа Spark, которая работает на кластере Amazon EMR с 1 главным и 8 ядрами. В двух словах, задание Spark считывает некоторые файлы .csv из S3, преобразует их в RDD, выполняет некоторые относительно сложные соединения на RDD и, наконец, создает другие файлы .csv на S3. Это задание, выполняемое в кластере EMR, занимало около 5 часов. Внезапно, на днях, это заняло более 30 часов , и с тех пор это так. Нет очевидных различий во входах (файлы S3).

Я проверил журналы , и в течение длительного времени (30 часов) я вижу что-то об ошибках OutOfMemory:

java.lang.OutOfMemoryError: Java heap space
        at java.util.IdentityHashMap.resize(IdentityHashMap.java:472)
        at java.util.IdentityHashMap.put(IdentityHashMap.java:441)
        at org.apache.spark.util.SizeEstimator$SearchState.enqueue(SizeEstimator.scala:174)
        at org.apache.spark.util.SizeEstimator$$anonfun$visitSingleObject$1.apply(SizeEstimator.scala:225)
        at org.apache.spark.util.SizeEstimator$$anonfun$visitSingleObject$1.apply(SizeEstimator.scala:224)
        at scala.collection.immutable.List.foreach(List.scala:381)
        at org.apache.spark.util.SizeEstimator$.visitSingleObject(SizeEstimator.scala:224)
        at org.apache.spark.util.SizeEstimator$.org$apache$spark$util$SizeEstimator$$estimate(SizeEstimator.scala:201)
        at org.apache.spark.util.SizeEstimator$.estimate(SizeEstimator.scala:69)
....

        at org.apache.spark.broadcast.TorrentBroadcast._value(TorrentBroadcast.scala:66)
        at org.apache.spark.broadcast.TorrentBroadcast.getValue(TorrentBroadcast.scala:96)
        at org.apache.spark.broadcast.Broadcast.value(Broadcast.scala:70)

Несмотря на очевидное исключение (я) OutOfMemory, выходные данные (файлы S3) выглядят хорошо, поэтому, очевидно, задание Spark завершается правильно.

Что могло внезапно вызвать скачок с 5 часов до 30 часов? Как бы вы занялись расследованием такой проблемы?

1 Ответ

2 голосов
/ 18 апреля 2019

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

...