SparkContext 错误 - 找不到文件 /tmp/spark-events 不存在

新手上路,请多包涵

通过 API 调用运行 Python Spark 应用程序 - 提交应用程序时 - 响应 - SSH 失败进入 Worker

我的 python 应用程序存在于

/root/spark/work/driver-id/wordcount.py

错误可以在

/root/spark/work/driver-id/stderr

显示以下错误 -

 Traceback (most recent call last):
  File "/root/wordcount.py", line 34, in <module>
    main()
  File "/root/wordcount.py", line 18, in main
    sc = SparkContext(conf=conf)
  File "/root/spark/python/lib/pyspark.zip/pyspark/context.py", line 115, in __init__
  File "/root/spark/python/lib/pyspark.zip/pyspark/context.py", line 172, in _do_init
  File "/root/spark/python/lib/pyspark.zip/pyspark/context.py", line 235, in _initialize_context
  File "/root/spark/python/lib/py4j-0.9-src.zip/py4j/java_gateway.py", line 1064, in __call__
  File "/root/spark/python/lib/py4j-0.9-src.zip/py4j/protocol.py", line 308, in get_return_value
py4j.protocol.Py4JJavaError: An error occurred while calling None.org.apache.spark.api.java.JavaSparkContext.
: java.io.FileNotFoundException: File file:/tmp/spark-events does not exist.
  at org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:402)
  at org.apache.hadoop.fs.FilterFileSystem.getFileStatus(FilterFileSystem.java:255)
  at org.apache.spark.scheduler.EventLoggingListener.start(EventLoggingListener.scala:100)
  at org.apache.spark.SparkContext.<init>(SparkContext.scala:549)
  at org.apache.spark.api.java.JavaSparkContext.<init>(JavaSparkContext.scala:59)
  at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
  at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
  at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
  at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
  at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:234)
  at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:381)
  at py4j.Gateway.invoke(Gateway.java:214)
  at py4j.commands.ConstructorCommand.invokeConstructor(ConstructorCommand.java:79)
  at py4j.commands.ConstructorCommand.execute(ConstructorCommand.java:68)
  at py4j.GatewayConnection.run(GatewayConnection.java:209)
  at java.lang.Thread.run(Thread.java:745)

它表明 - /tmp/spark-events 不存在 - 这是真的但是,在 wordcount.py

 from pyspark import SparkContext, SparkConf

... few more lines ...

def main():
    conf = SparkConf().setAppName("MyApp").setMaster("spark://ec2-54-209-108-127.compute-1.amazonaws.com:7077")
    sc = SparkContext(conf=conf)
    sc.stop()

if __name__ == "__main__":
    main()

原文由 Chaitanya Bapat 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 932
2 个回答

/tmp/spark-events 是 Spark 存储事件日志的位置。只需在主机中创建此目录即可。

 $mkdir /tmp/spark-events
$ sudo /root/spark-ec2/copy-dir /tmp/spark-events/
RSYNC'ing /tmp/spark-events to slaves...
ec2-54-175-163-32.compute-1.amazonaws.com

原文由 Kien Truong 发布,翻译遵循 CC BY-SA 3.0 许可协议

尝试在我的本地计算机上设置我的 spark 历史服务器时,我遇到了相同的“文件文件:/tmp/spark-events 不存在”。错误。我已将我的日志目录自定义为非默认路径。为了解决这个问题,我需要做两件事。

  1. 编辑 $SPARK_HOME/conf/spark-defaults.conf – 添加这两行 spark.history.fs.logDirectory /mycustomdir spark.eventLog.enabled true
  2. 创建从 /tmp/spark-events 到 /mycustomdir 的链接。

ln -fs /tmp/spark-events /mycustomdir 理想情况下,第 1 步可以完全解决我的问题,但我仍然需要创建链接,所以我怀疑我可能错过了其他设置。无论如何,一旦我这样做了,我就能够运行我的 historyserver 并看到我的 webui 中记录的新作业。

原文由 dman 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题