当执行shuffle时,我的Spark工作失败并说"设备上没有剩余空间",但是当我运行df -h它时说我有剩余空间!为什么会发生这种情况,我该如何解决?
qui*_*ine 26
默认情况下,Spark使用该/tmp目录存储中间数据.如果您确实在某些设备上留有空间- 您可以通过创建文件SPARK_HOME/conf/spark-defaults.conf并添加该行来更改此设置.以下SPARK_HOME是spark安装的根目录所在的位置.
spark.local.dir SOME/DIR/WHERE/YOU/HAVE/SPACE
Run Code Online (Sandbox Code Playgroud)
sam*_*est 11
您还需要监视df -i哪些显示正在使用的inode数量.
在每台机器上,我们为shuffle创建M*R临时文件,其中M =映射任务的数量,R =减少任务的数量.
https://spark-project.atlassian.net/browse/SPARK-751
如果您确实看到磁盘用完了inode来解决问题,您可以:
coalesce同shuffle = false).spark.shuffle.consolidateFiles并查看https://spark-project.atlassian.net/secure/attachment/10600/Consolidating%20Shuffle%20Files%20in%20Spark.pdf.编辑
自1.6版以来,合并文件已从spark中删除. https://issues.apache.org/jira/browse/SPARK-9808
uqb*_*uqb 10
我遇到了类似的问题.默认情况下,spark使用"/ tmp"来保存中间文件.当作业运行时,您可以选项卡df -h以查看在"/"成长时安装的fs的已用空间.当dev的空间耗尽时,抛出此异常.为了解决这个问题,我SPARK_LOCAL_DIRS在SPARK_HOME/conf/spark_defaults.conf中设置了fs中留有足够空间的路径.
在工作计算机上,将环境变量“SPARK_LOCAL_DIRS”设置为您有可用空间的位置。在 Spark 1.0 及更高版本中,设置配置变量“spark.local.dir”不起作用。
小智 5
此错误的另一种情况:
问题:
我的工作抛出错误"设备上没有剩余空间".你可以看到我的工作需要这么多的改组,所以为了解决这个问题,我最初使用了20个节点,然后增加到40个节点.不知怎的,问题仍在发生.我尝试了所有其他的东西,如更改spark.local.dir,重新分区,自定义分区和参数调整(压缩,spiling,内存,内存分数等).另外,我使用了实例类型r3.2xlarge,它有1 x 160 SSD,但问题仍然存在.
方案:
我登录了其中一个节点,然后执行了df -h /我发现该节点只有一个挂载的EBS卷(8GB),但没有SSD(160GB).然后我调查了ls /dev/SSD并附上了.群集中的所有节点都没有发生此问题.仅针对未安装SSD的节点发生错误"设备上没有剩余空间".因为他们只处理8GB(EBS),并且在那里~4 GB空间可用.
我创建了另一个bash脚本,它使用spark-ec2脚本启动spark集群,然后在格式化之后安装磁盘.
ec2-script 启动集群MASTER_HOST = <ec2-script> get-master $CLUSTER_NAMEssh -o StrictHostKeyChecking=no root@$MASTER_HOST "cd /root/spark/sbin/ && ./slaves.sh mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0 /dev/sdb && ./slaves.sh mount -o defaults,noatime,nodiratime /dev/sdb /mnt"| 归档时间: |
|
| 查看次数: |
33392 次 |
| 最近记录: |