【问题标题】:Spark metrics error: CsvReporter: Error writing to jvm.PS-MarkSweep.countSpark 指标错误:CsvReporter:写入 jvm.PS-MarkSweep.count 时出错
【发布时间】:2016-03-02 21:01:26
【问题描述】:

我已将 Spark 配置为在两个节点上运行,HDFS 托管输入文件。我想将 metrics.properties 提供的所有统计文件转储到 HDFS 或每个节点的本地目录。

这是我对 metrics.properties 的统计信息位置的配置:

*.sink.csv.directory=hdfs://ip:port/user/spark_stats/

我也尝试在每个节点中建立一个临时的本地目录,并配置metrics.properties如下:

*.sink.csv.directory=/tmp/spark_stats/

两种方法都给出如下错误:

16/03/02 15:41:49 WARN CsvReporter: Error writing to jvm.PS-MarkSweep.count
java.io.IOException: No such file or directory
        at java.io.UnixFileSystem.createFileExclusively(Native Method)
        at java.io.File.createNewFile(File.java:1006)
        at com.codahale.metrics.CsvReporter.report(CsvReporter.java:241)
        at com.codahale.metrics.CsvReporter.reportGauge(CsvReporter.java:234)
        at com.codahale.metrics.CsvReporter.report(CsvReporter.java:150)
        at com.codahale.metrics.ScheduledReporter.report(ScheduledReporter.java:162)
        at com.codahale.metrics.ScheduledReporter$1.run(ScheduledReporter.java:117)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
16/03/02 15:41:49 WARN CsvReporter: Error writing to jvm.PS-MarkSweep.count
java.io.IOException: No such file or directory
        at java.io.UnixFileSystem.createFileExclusively(Native Method)
        at java.io.File.createNewFile(File.java:1006)
.... 

我的应用程序仍然可以正常运行并完成。但火花日志文件显示写入统计文件时出错。有没有人遇到过这个问题?

跟进:仔细查看错误信息,所有的IO错误都是写入master jvm信息引起的。如果我指定只转储工作者、驱动程序和执行程序的 jvm 信息,则没有错误。

可以将此行放入 metric.properties 文件中的修复: executor.source.jvm.class=org.apache.spark.metrics.source.JvmSource

【问题讨论】:

    标签: file-io apache-spark hdfs metrics


    【解决方案1】:

    出现此错误是因为 CSVRepoter 实际上旨在将新指标附加到同一文件中。由于 HDFS 作为附加相同文件的限制,因此 CSV Repoter 正在写入本地文件。

    发生此错误是因为本地文件系统中缺少给定的路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-19
      • 2016-06-08
      • 2018-11-30
      • 1970-01-01
      • 2014-04-06
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多