Spark任务执行期间写临时文件报错导致失败
spark任务在执行期间,有时候会遇到临时目录创建失败,导致任务执行错误。
java.io.IOException: Failed to create local dir in ……
spark执行过程的文件夹
- spark创建临时文件机制
spark作为并行计算框架,同一个作业会被划分为多个任务在多个节点执行,reduce的输入可能存在于多个节点,因此需要shuffle将所有reduce的输入汇总起来;而shuffle时需要通过diskBlockManage将map结果写入本地,优先写入memory store,在memore store空间不足时会创建临时文件。 - 临时文件夹配置
memory store的大小取决于spark.excutor.memory参数,默认为spark.excutor.memory*0.6;可通过spark.env中添加配置SPARK_LOCAL_DIRS或程序中设定spark.local.dir,可配置多个路径,逗号分隔增强io效率。
SPARK_LOCAL_DIRS:
Directory to use for "scratch" space in Spark, including map output files and RDDs that get stored on disk.
This should be on a fast, local disk in your system.
It can also be a comma-separated list of multiple directories on different disks.
原因分析
常见原因包括
- 临时目录文件过多导致,当一个spark任务执行失败时,之前创建的临时文件不会被删除,就会残留下来,spark任务失败次数越多,就越可能导致临时目录故障。
- 磁盘空间、inode资源、权限(比如巡检项修改)等
主要排查手段
进入临时目录,查看下临时目录当前状况,尝试手动创建是否ok。
磁盘空间问题。
排查:磁盘空间不足,或者磁盘掉载;通过df -h、du -sh或者fdisk查询磁盘空间。
解决:删除旧文件释放空间;或者挂载新盘。目录权限不对。
排查:进入spark.local.dir临时目录,查询权限。
解决:修改成正确权限。临时目录文件过多。
在spark.local.dir手动创建临时目录时,报错Too many links……,
排查:查询文件目录下是否文件/目录个数超限,ll | wc -l
解决:删除旧文件释放空间;或者挂载新盘。linux ext2/ext3单个目录下子目录+文件个数不能超过32000,除去默认子目录当前目录(.)和上级目录(..)之外,一个目录下最多能创建31998个(子目录+文件)。而ext4系统无此限制。可以通过命令df -lhT查询。
include/linux/ext2_fs.h:#define EXT2_LINK_MAX 32000
include/linux/ext3_fs.h:#define EXT3_LINK_MAX 32000
inode资源不足
排查:查询磁盘inode资源使用,df -i
解决:删除旧文件释放空间;或者挂载新盘。
Spark任务执行期间写临时文件报错导致失败的更多相关文章
- python+selenium 批量执行时出现随机报错问题【已解决】
出现场景:用discover方法批量执行py文件,出现随机性的报错(有时a.py报错,有时b.py报错...),共同特点:均是打开新窗口后,切换最新窗口,但定位不到新窗口的元素,超时报错.由于个人项目 ...
- 【mybatis】mybatis执行一个update方法,返回值为1,但是数据库中数据并未更新,粘贴sql语句直接在数据库执行,等待好久报错:Lock wait timeout exceeded; try restarting transaction
今天使用mybatis和jpa的过程中,发现这样一个问题: mybatis执行一个update方法,返回值为1,但是数据库中数据并未更新,粘贴sql语句直接在数据库执行,等待好久报错:Lock wai ...
- vue-electron 使用sqlite3数据库,执行npm run build 报错 .NET Framework 2.0 SDK,Microsoft Visual Studio 2005[C:\temp\wechat\node_modules\sqlite3\build\binding.sln]
问题描述 vue-electron 使用sqlite3数据库,执行npm run build 报错如下: .NET Framework 2.0 SDK,Microsoft Visual Studio ...
- 执行命令npm publish报错:403 Forbidden - PUT https://registry.npmjs.org/kunmomotest2 - You cannot publish over the previously published versions: 0.0.1.
前言 执行命令npm publish报错:403 Forbidden - PUT https://registry.npmjs.org/kunmomotest2 - You cannot publis ...
- Django中修改DATABASES后,执行python manage.py ****报错!UnicodeEncodeError
Django中修改DATABASES后,执行python manage.py ****报错!UnicodeEncodeError: 'latin-1' codec can't encode chara ...
- k8s 执行 ingress yaml 文件报错: error when creating "ingress-myapp.yaml": Internal error occurred: failed calling webhook
k8s 执行 ingress yaml 文件报错:错误如下: [root@k8s-master01 baremetal]# kubectl apply -f ingress-test.yaml Err ...
- 关于vs2008使用oracleclient链接oracle数据库报报错OCIEnvCreate 失败,返回代码为 -1,但错误消息文本不可用
用vs2008链接oracle数据库出现问题,报错OCIEnvCreate 失败,返回代码为 -1,但错误消息文本不可用,从网上找了好久方法,有两种oracle客户端文件权限,和运行vs2008以管理 ...
- Oracle存储过程执行update语句不报错不生效问题
转载链接:http://lin49940.iteye.com/blog/466626 今天一个同事写oracle 的存储过程遇到了一个问题, 他在里面update 操作不能完成更新的操作, 但是又不会 ...
- 在package.json中配置Script执行npm run tslint报错问题
今天在学习tslint的时候,按照git clone下angular2-webpack-starter的代码执行npm run lint时,虽然代码进行了检测,但检测完成后npm始终报错, //pac ...
随机推荐
- gdb调试时的问题Missing separate debuginfos, use: debuginfo-install glibc-XXX
在CentOS6.4下使用gdb进行调试的时候, 使用bt(breaktrace)命令时,会弹出如下的提示: 头一天提示: Missing separate debuginfos, use: debu ...
- 用javascript编写地区表单ES6
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Angular7教程-06-页面与数据交互
1. 本节说明 本节的内容会在上期搭建的框架基础上进行数据的填充,顺便回顾之前介绍过的插值表达式,属性绑定等知识,本节的数据只是在组件中模拟数据,后面会有专门的章节讲解如何从服务器获取数据. 2. 轮 ...
- ajax 动态载入html后不能执行其中的js解决方法
事件背景 有一个公用页面需要在多个页面调用,其中涉及到部分js已经写在了公用页面中,通过ajax加载该页面后无法执行其中的js. 解决思路 1. 采用附加一个iframe的方法去执行js,为我等代码洁 ...
- Mysql存中文字符出错:Incorrect string value: '\xC2\xE9\xD7\xED\解决方法
1.数据库连接设置编码格式为UTF-8 jdbc:mysql://localhost:3306/jbpm_test?useUnicode=true&characterEncoding=UTF- ...
- $.trim() 去除空格方法 (验证使用)
- Laravel源码分析--Laravel生命周期详解
一.XDEBUG调试 这里我们需要用到php的 xdebug 拓展,所以需要小伙伴们自己去装一下,因为我这里用的是docker,所以就简单介绍下在docker中使用xdebug的注意点. 1.在php ...
- [修正] Firemonkey SpeedButton 鼠标移开按钮后 IsPressed 为 False 的问题
未修正: 修正代码: 请将 FMX.StdCtrls.pas 复制到自己的工程目录下,再修改如下代码: procedure TCustomButton.RestoreButtonState; begi ...
- DVWA:环境搭建
0x01 安装PHP集成环境 我这里用的是phpstudy 2016,这个使用起来比较方便.下面是现在的最新版. http://www.phpstudy.net/phpstudy/phpStudy20 ...
- 从网上下载小说_keywords:python、multiprocess
# -*- coding: utf-8 -*- __author__ = "YuDian" from multiprocessing import Pool # Pool用来创建进 ...