Development Tip

Spark 1.4.0 및 Tachyon 0.6.4에서 OFF_HEAP Storage를 사용할 때 오류

yourdevel 2020. 10. 30. 21:06
반응형

Spark 1.4.0 및 Tachyon 0.6.4에서 OFF_HEAP Storage를 사용할 때 오류


나는 스파크 1.4.0과 타키온 0.6.4에서 힙 스토리지를 사용하여 내 RDD를 다음과 같이 유지하려고합니다.

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

나중에 다음 예외가 발생합니다.

그것에 대한 아이디어가 있습니까?

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)

나는 또한 텍스트 파일로 똑같이 시도했고 그것을 tachyon에서 유지할 수 있었다. 문제는 원래 마루에서 읽은 DataFrame을 유지하는 것입니다.


관련 버그 보고서가있는 것 같습니다 : https://issues.apache.org/jira/browse/SPARK-10314

이에 대한 풀 리퀘스트가있는 것 같기 때문에 곧이를 수정할 기회가있을 수 있습니다.

이 스레드, https://groups.google.com/forum/#!topic/tachyon-users/xb8zwqIjIa4 에서 Spark가 TRY_CACHE 모드를 사용하여 Tachyon에 쓰는 것처럼 보이므로 캐시에서 제거 될 때 데이터가 손실 된 것처럼 보입니다. .


이 문제는 지금 해결되었습니다. 이제 Spark 1.5 및 Tachyon 0.7에서 작동하는지 확인할 수 있습니다.

참고 URL : https://stackoverflow.com/questions/30087056/errors-when-using-off-heap-storage-with-spark-1-4-0-and-tachyon-0-6-4

반응형