Fehler bei Verwendung von OFF_HEAP Storage mit Spark 1.4.0 und Tachyon 0.6.4

70

Ich versuche, meine RDD mit Off-Heap-Speicher auf Spark 1.4.0 und Tachyon 0.6.4 so zu halten:

val a = sqlContext.parquetFile("a1.parquet")
a.persist(org.apache.spark.storage.StorageLevel.OFF_HEAP)
a.count()

Danach bekomme ich folgende Ausnahme.

Irgendwelche Ideen dazu?

15/06/16 10:14:53 INFO : Tachyon client (version 0.6.4) is trying to connect master @ localhost/127.0.0.1:19998
15/06/16 10:14:53 INFO : User registered at the master localhost/127.0.0.1:19998 got UserId 3
15/06/16 10:14:53 INFO TachyonBlockManager: Created tachyon directory at /tmp_spark_tachyon/spark-6b2512ab-7bb8-47ca-b6e2-8023d3d7f7dc/driver/spark-tachyon-20150616101453-ded3
15/06/16 10:14:53 INFO BlockManagerInfo: Added rdd_10_3 on ExternalBlockStore on localhost:33548 (size: 0.0 B)
15/06/16 10:14:53 INFO BlockManagerInfo: Added rdd_10_1 on ExternalBlockStore on localhost:33548 (size: 0.0 B)
15/06/16 10:14:53 ERROR TransportRequestHandler: Error while invoking RpcHandler#receive() on RPC id 5710423667942934352
org.apache.spark.storage.BlockNotFoundException: Block rdd_10_3 not found
    at org.apache.spark.storage.BlockManager.getBlockData(BlockManager.scala:306)
    at org.apache.spark.network.netty.NettyBlockRpcServer$$anonfun$2.apply(NettyBlockRpcServer.scala:57)
    at org.apache.spark.network.netty.NettyBlockRpcServer$$anonfun$2.apply(NettyBlockRpcServer.scala:57)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
    at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
    at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:108)
    at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
    at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:108)
    at org.apache.spark.network.netty.NettyBlockRpcServer.receive(NettyBlockRpcServer.scala:57)
    at org.apache.spark.network.server.TransportRequestHandler.processRpcRequest(TransportRequestHandler.java:114)
    at org.apache.spark.network.server.TransportRequestHandler.handle(TransportRequestHandler.java:87)
    at org.apache.spark.network.server.TransportChannelHandler.channelRead0(TransportChannelHandler.java:101)
    at org.apache.spark.network.server.TransportChannelHandler.channelRead0(TransportChannelHandler.java:51)
    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319)
    at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:254)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333)

Ich habe das auch mit der Textdatei versucht und konnte sie in Tachyon beibehalten. Das Problem besteht darin, dass der ursprünglich aus Parkett gelesene DataFrame beibehalten wird.

Smikesh
quelle
Ich denke, Sie haben diese Methode nach dem Build hinzugefügt oder es kann sein, dass ein Build-Fehler vorliegt. Versuchen Sie es mit einem Wiederaufbau.
Kaushal
Ich habe sie nicht selbst hinzugefügt. Spark versucht, sie anzurufen, während die RDD auf Tachyon
Smikesh
Ich habe keine Ahnung von Tachyon. Sie überprüfen zunächst die Abhängigkeitsversion, ob sie kompatibel ist oder nicht, oder einige fehlende Abhängigkeiten.
Kaushal
1
Können Sie Ihren Code hier posten?
Paul H.
1
Sind Sie sicher, dass dies mit der Off-Heap-Zuweisung zusammenhängt? In diesem Fall kann dies mit Serialisierungsproblemen zusammenhängen. Interessiert sich auch für Code.
Adrien M.

Antworten:

1

Es scheint einen verwandten Fehlerbericht zu geben: https://issues.apache.org/jira/browse/SPARK-10314

Da es eine Pull-Anfrage dafür zu geben scheint, besteht möglicherweise die Möglichkeit, bald eine Lösung dafür zu finden.

Aus diesem Thread, https://groups.google.com/forum/#!topic/tachyon-users/xb8zwqIjIa4 , geht hervor, dass Spark den TRY_CACHE-Modus verwendet, um in Tachyon zu schreiben, sodass die Daten verloren zu gehen scheinen, wenn sie aus dem Cache entfernt werden .

Benohead
quelle
0

Dieses Problem ist jetzt behoben. Ich kann dies jetzt mit Spark 1.5 und Tachyon 0.7 bestätigen

Smikesh
quelle