Spark工作表现问题

时间:2018-03-08 08:13:02

标签: python apache-spark pyspark datastax-enterprise pyspark-sql

我有以下DSE群集配置:

6 nodes with 6 cores/16GB ram for each node.

我的应用程序是使用从Cassandra DB读取数据的pyspark构建的。

我们加载cassandra db 320.000.000行并使用完整内存和内核运行我的python spark应用程序并出现此错误:

Lost task 97.0 in stage 299.0 (TID 14680, 11.218.78.15): java.io.IOException: No space left on device
at java.io.FileOutputStream.writeBytes(Native Method)
at java.io.FileOutputStream.write(FileOutputStream.java:326)
at org.apache.spark.storage.TimeTrackingOutputStream.write(TimeTrackingOutputStream.java:58)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
at java.io.BufferedOutputStream.write(BufferedOutputStream.java:126)
at net.jpountz.lz4.LZ4BlockOutputStream.flushBufferedData(LZ4BlockOutputStream.java:205)
at net.jpountz.lz4.LZ4BlockOutputStream.write(LZ4BlockOutputStream.java:158)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
at java.io.BufferedOutputStream.write(BufferedOutputStream.java:126)
at java.io.DataOutputStream.write(DataOutputStream.java:107)
at org.apache.spark.sql.catalyst.expressions.UnsafeRow.writeToStream(UnsafeRow.java:562)
at org.apache.spark.sql.execution.UnsafeRowSerializerInstance$$anon$2.writeValue(UnsafeRowSerializer.scala:69)
at org.apache.spark.storage.DiskBlockObjectWriter.write(DiskBlockObjectWriter.scala:185)
at org.apache.spark.shuffle.sort.BypassMergeSortShuffleWriter.write(BypassMergeSortShuffleWriter.java:150)
at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:79)
at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:47)
at org.apache.spark.scheduler.Task.run(Task.scala:86)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:274)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
你可以帮帮我吗?我在每个节点上都有大约20GB。

2 个答案:

答案 0 :(得分:1)

此异常是关于节点上的磁盘空间。检查它并找出剩余的空间,然后检查您的代码以考虑您记录的数量和磁盘使用情况。 但第一个解决方案是从磁盘中释放一些空间。 如果您检查并发现剩余空间,则检查spark master上载可执行spark文件作业文件的空间。如果先前提交的作业没有正常完成,并且作业文件旁边的临时文件仍保留在用于每个作业提交的临时目录中,则可能性更大。 那你有两个解决方案:

  • 重启您的机器/ VM,使临时文件被删除。
  • 找到自己的临时文件并删除不必要的文件。

答案 1 :(得分:0)

那时,当我们在本地模式下运行spark时也会出现此错误(我也遇到了与在本地模式下运行spark查询相同的问题),如果您在yarn中运行spark,则可能会解决此错误模式。