【问题标题】:Spark job performance issueSpark 作业性能问题
【发布时间】:2018-08-16 12:35:32
【问题描述】:

我有以下 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。

【问题讨论】:

  • 表示磁盘已满,内存已满。
  • 嗨,nabongs,我有大约 6GB 的可用磁盘空间。

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


【解决方案1】:

此异常与您节点上的磁盘空间有关。检查它并找出剩余的空间,然后检查您的代码以考虑您的日志量及其磁盘使用量。 但第一个解决方案是从磁盘中释放一些空间。 如果您检查并发现剩余空间足够,请检查 spark master 将可执行 spark 作业文件上传到的空间。如果您之前提交的作业没有正常完成并且作业文件旁边的临时文件保留在用于每次提交作业的临时目录中,则更有可能发生这种情况。 那么你有两个解决方案:

  • 重新启动您的机器/VM,这会删除临时文件。
  • 自行查找那些临时文件并删除不需要的文件。

【讨论】:

  • 嗨,没有最旧的 spark 作业(我通过 ps 命令检查)。对于这个数据集,空闲内存磁盘似乎太小了。我应该增加磁盘内存,还是我有其他可能性来调整应用程序?
  • 我并不是说之前提交的作业已经在运行 spark 作业。例如您之前可能已经多次提交您的工作,并在他们的操作过程中突然杀死他们。通过执行这样的操作,这些作业的临时文件现在仍保留在您的磁盘上。在 linux 上,您可以通过“df -h”命令检查此内存并查看 tmpfs。如果已填满,则可以删除其中包含的文件夹和文件。或重启机器。
【解决方案2】:

当我们在本地模式下运行 spark 时也会出现这个错误(我也遇到了同样的问题,因为我在本地模式下运行我的 spark 查询),如果你在 yarn 中运行 spark,这个错误可能会得到解决模式 。

【讨论】:

    猜你喜欢
    • 2017-06-25
    • 2018-09-01
    • 2016-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-01
    • 2015-04-05
    • 1970-01-01
    相关资源
    最近更新 更多