【问题标题】:Spark - java IOException :Failed to create local dir in /tmp/blockmgr*Spark - java IOException:无法在 /tmp/blockmgr* 中创建本地目录
【发布时间】:2017-05-05 10:07:05
【问题描述】:

我试图运行一个长时间运行的 Spark 作业。经过几个小时的执行,我得到以下异常:

Caused by: java.io.IOException: Failed to create local dir in /tmp/blockmgr-bb765fd4-361f-4ee4-a6ef-adc547d8d838/28 

试图通过检查来绕过它:

  1. /tmp 目录中的权限问题。 spark 服务器没有以 root 身份运行。但是 /tmp 目录应该对所有用户都是可写的。

  2. /tmp 目录有足够的空间。

【问题讨论】:

  • 这个问题你解决了吗??

标签: hadoop apache-spark apache-spark-sql


【解决方案1】:

验证所有权限和用户访问权限后。

我在 Talend studio 中构建组件时遇到了同样的问题,它通过在 spark 配置选项卡的 spark 临时目录(临时目录)中提供正确的“/”来解决。在 windows 中构建 jar 并在 Linux 集群中运行时,这是必需的。

【讨论】:

    【解决方案2】:

    编辑:下面的答案最终并没有解决我的问题。这是因为一些子文件夹 spark(或它的一些依赖项)能够创建,但不是全部。创建此类路径的频繁必要性将使任何项目都不可行。因此,我以管理员身份运行 Spark(在我的案例中为 PySpark),从而解决了这个问题。所以归根结底可能是权限问题。


    原答案:
    我解决了我在本地 Windows 机器(不是集群)上遇到的同样问题。由于权限没有问题,我创建了 Spark 未能创建的目录,即我以本地用户的身份创建了以下文件夹,并且不需要更改该文件夹的任何权限。

    C:\Users\<username>\AppData\Local\Temp\blockmgr-97439a5f-45b0-4257-a773-2b7650d17142
    

    【讨论】:

      【解决方案3】:

      备份 tmp 缓存文件。清理 tmp 目录并启动你的 shell。它会起作用的。同样的方法对我有用。

      【讨论】:

        【解决方案4】:

        假设您正在使用多个节点,您需要检查每个节点都参与了 spark 操作(master/driver + slaves/nodes/workers)。

        请确认每个worker/node有足够的磁盘空间(特别是检查/tmp文件夹),以及正确的权限。

        【讨论】:

        • 空间在所有节点上都是可用的,/tmp 是可读可写的。但我仍然在 zeppelin 中遇到这个问题..
        • 您找出问题所在了吗?我现在也有这个。
        • @AndreyCheptsov - 您是否确认您有足够的磁盘空间,如我的回答中所述?
        • @Yaron 是的,权限和空间都可以。有帮助的是重新启动集群。
        • @Yaron 你能澄清一下“正确的权限”是什么吗?我在 AWS EMR(AWS 托管 Spark 集群)上看到了这个问题,而 /tmp 实际上是一个外部文件挂载
        猜你喜欢
        • 2019-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-28
        • 1970-01-01
        • 2020-12-22
        • 2017-10-06
        • 1970-01-01
        相关资源
        最近更新 更多