草庐IT

Spark常见报错与解决方案【三】

大数据学习僧 2023-11-27 原文

1、java.lang.OutOfMemoryError: GC overhead limit exceeded

原因:数据量太大,内存不够
解决方案:(1)增大spark.executor.memory的值,减小spark.executor.cores
(2)减少输入数据量,将原来的数据量分几次任务完成,每次读取其中一部分

2、ERROR An error occurred while trying to connect to the Java server (127.0.0.1:57439) Connection refused

原因:(1)节点上运行的container多,每个任务shuffle write到磁盘的量大,导致磁盘满,节点重启
(2)节点其他服务多,抢占内存资源,NodeManager处于假死状态
解决方案:(1)确保节点没有过多其他服务进程
(2)扩大磁盘容量
(3)降低内存可分配量,比如为总内存的90%,可分配内存少了,并发任务数就少了,出现问题概率降低
(4)增大NodeManager的堆内存

3、org.apache.spark.shuffle.FetchFailedException: Failed to connect to /9.4.36.40:7337

背景:shuffle过程包括shuffle read和shuffle write两个过程。对于spark on yarn,shuffle write是container写数据到本地磁盘(路径由core-site.xml中hadoop.tmp.dir指定)过程;
shuffle read是container请求external shuffle服务获取数据过程,external shuffle是NodeManager进程中的一个服务,默认端口是7337,或者通过spark.shuffle.service.port指定。
定位过程:拉取任务运行日志,查看container日志;查看对应ip上NodeManager进程运行日志,路径由yarn-env.sh中YARN_LOG_DIR指定
原因:container请求NodeManager上external shufflle服务,不能正常connect,说明NodeManager可能挂掉了,原因可能是(1)节点上运行的container多,每个任务shuffle write到磁盘的量大,导致磁盘满,节点重启 (2)节点其他服务多,抢占内存资源,NodeManager处于假死状态
解决方案:(1)确保节点没有过多其他服务进程
(2)扩大磁盘容量
(3)降低内存可分配量,比如为总内存的90%,可分配内存少了,并发任务数就少了,出现问题概率降低
(4)增大NodeManager的堆内存

4、org.apache.spark.shuffle.FetchFailedException: Connection from /xxx:7337 closed

背景:shuffle过程包括shuffle read和shuffle write两个过程。对于spark on yarn,shuffle write是container写数据到本地磁盘(路径由core-site.xml中hadoop.tmp.dir指定)过程;
shuffle read是container请求external shuffle服务获取数据过程,external shuffle是NodeManager进程中的一个服务,默认端口是7337,或者通过spark.shuffle.service.port指定。
定位过程:拉取任务运行日志,查看container日志;查看对应ip上NodeManager进程运行日志,路径由yarn-env.sh中YARN_LOG_DIR指定
原因:container已经连接上NodeManager上external shufflle服务,原因可能是
(1)external shuffle服务正常,但在规定时间内将数据返回给container,可能是中间数据量大且文件数多,external shuffle服务搜索数据过程久,最终导致containter误认为connection dead,因此抛出xxx:7337 closed了异常
(2)NameNode进程不正常
解决方案:针对原因(1),调大spark.network.timeout值,如1800s,此参数可以在spark-defaults.conf设置,对所有任务都生效;也可以单个任务设置
针对原因(2),参考org.apache.spark.shuffle.FetchFailedException: Failed to connect to /9.4.36.40:7337的解决方案

5、org.apache.spark.shuffle.FetchFailedException: Failed to send RPC XXX to /xxx:7337:java.nio.channels.ColsedChannelException

背景:shuffle过程包括shuffle read和shuffle write两个过程。对于spark on yarn,shuffle write是container写数据到本地磁盘(路径由core-site.xml中hadoop.tmp.dir指定)过程;
shuffle read是container请求external shuffle服务获取数据过程,external shuffle是NodeManager进程中的一个服务,默认端口是7337,或者通过spark.shuffle.service.port指定。
定位过程:拉取任务运行日志,查看container日志;查看对应ip上NodeManager进程运行日志,路径由yarn-env.sh中YARN_LOG_DIR指定
原因:external shuffle服务将数据发送给container时,发现container已经关闭连接,出现该异常应该和org.apache.spark.shuffle.FetchFailedException: Connection from /xxx:7337 closed同时出现
解决方案:参考org.apache.spark.shuffle.FetchFailedException: Connection from /xxx:7337 closed的解决方案

6、spark任务中stage有retry

原因:下一个stage获取上一个stage没有获取到全部输出结果,只获取到部分结果,对于没有获取的输出结果retry stage以产出缺失的结果
(1)部分输出结果确实已经丢失
(2)部分输出结果没有丢失,只是下一个stage获取结果超时,误认为输出结果丢失
解决方案:针对原因(1),查看进程是否正常,查看机器资源是否正常,比如磁盘是否满或者其他
针对原因(2),调大超时时间,如调大spark.network.timeout值

7、Final app status: FAILED, exitCode: 11, (reason: Max number of executor failures (200) reached)

原因:executor失败重试次数达到阈值
解决方案:1.调整运行参数,减少executor失败次数
2.调整spark.yarn.max.executor.failures的值,可在spark-defaults.conf中调整
确定方式:在日志中搜索"Final app status:",确定原因,在日志统计"Container marked as failed:"出现次数

有关Spark常见报错与解决方案【三】的更多相关文章

  1. ruby - 在 jRuby 中使用 'fork' 生成进程的替代方案? - 2

    在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',

  2. 屏幕录制为什么没声音?检查这2项,轻松解决 - 2

    相信很多人在录制视频的时候都会遇到各种各样的问题,比如录制的视频没有声音。屏幕录制为什么没声音?今天小编就和大家分享一下如何录制音画同步视频的具体操作方法。如果你有录制的视频没有声音,你可以试试这个方法。 一、检查是否打开电脑系统声音相信很多小伙伴在录制视频后会发现录制的视频没有声音,屏幕录制为什么没声音?如果当时没有打开音频录制,则录制好的视频是没有声音的。因此,建议在录制前进行检查。屏幕上没有声音,很可能是因为你的电脑系统的声音被禁止了。您只需打开电脑系统的声音,即可录制音频和图画同步视频。操作方法:步骤1:点击电脑屏幕右下侧的“小喇叭”图案,在上方的选项中,选择“声音”。 步骤2:在“声

  3. 【高数】用拉格朗日中值定理解决极限问题 - 2

    首先回顾一下拉格朗日定理的内容:函数f(x)是在闭区间[a,b]上连续、开区间(a,b)上可导的函数,那么至少存在一个,使得:通过这个表达式我们可以知道,f(x)是函数的主体,a和b可以看作是主体函数f(x)中所取的两个值。那么可以有,  也就意味着我们可以用来替换 这种替换可以用在求某些多项式差的极限中。方法: 外层函数f(x)是一致的,并且h(x)和g(x)是等价无穷小。此时,利用拉格朗日定理,将原式替换为 ,再进行求解,往往会省去复合函数求极限的很多麻烦。使用要注意:1.要先找到主体函数f(x),即外层函数必须相同。2.f(x)找到后,复合部分是等价无穷小。3.要满足作差的形式。如果是加

  4. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

    深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

  5. Ruby 守护进程和 JRuby - 备选方案 - 2

    我有一个应用程序正在从Ruby迁移到JRuby(由于需要通过Java提供更好的Web服务安全支持)。我使用的gem之一是daemons创建后台作业。问题在于它使用fork+exec来创建后台进程,但这对JRuby来说是禁忌。那么-是否有用于创建后台作业的替代gem/wrapper?我目前的想法是只从shell脚本调用rake并让rake任务永远运行......提前致谢,克里斯。更新我们目前正在使用几个与Java线程相关的包装器,即https://github.com/jmettraux/rufus-scheduler和https://github.com/philostler/acts

  6. ruby - 如何更快地解决 project euler #21? - 2

    原始问题Letd(n)bedefinedasthesumofproperdivisorsofn(numberslessthannwhichdivideevenlyinton).Ifd(a)=bandd(b)=a,whereab,thenaandbareanamicablepairandeachofaandbarecalledamicablenumbers.Forexample,theproperdivisorsof220are1,2,4,5,10,11,20,22,44,55and110;therefored(220)=284.Theproperdivisorsof284are1,2,

  7. ruby - 为什么这些方法没有解决? - 2

    这个问题在这里已经有了答案:WhydoRubysettersneed"self."qualificationwithintheclass?(3个答案)关闭29天前。给定这段代码:classSomethingattr_accessor:my_variabledefinitialize@my_variable=0enddeffoomy_variable=my_variable+3endends=Something.news.foo我收到这个错误:test.rb:9:in`foo':undefinedmethod`+'fornil:NilClass(NoMethodError)fromtes

  8. 电脑启动后显示器黑屏怎么办?排查下面4个问题,快速解决 - 2

    电脑启动出现显示器黑屏是一个相当常见的问题。如果您遇到了这个问题,不要惊慌,因为它有很多可能的原因,可以采取一些简单的措施来解决它。在本文中,小编将介绍下面4种常见的电脑启动后显示器黑屏的原因,排查这些原因,快速解决! 演示机型:联想Ideapad700-15ISK-ISE系统版本:Windows10一、显示器问题如果出现电脑启动后显示器黑屏的情况。那么首先您需要检查一下显示器是否正常工作。您可以通过更换另一个显示器或将当前显示器连接到另一台计算机来检查显示器是否存在问题。如果问题仍然存在,那么您可以排除显示器故障的可能性。 二、显卡问题如果您的电脑配备了独立显卡,那么显卡故障也可能是导致电脑

  9. 关于Qt程序打包后运行库依赖的常见问题分析及解决方法 - 2

    目录一.大致如下常见问题:(1)找不到程序所依赖的Qt库version`Qt_5'notfound(requiredby(2)CouldnotLoadtheQtplatformplugin"xcb"in""eventhoughitwasfound(3)打包到在不同的linux系统下,或者打包到高版本的相同系统下,运行程序时,直接提示段错误即segmentationfault,或者Illegalinstruction(coredumped)非法指令(4)ldd应用程序或者库,查看运行所依赖的库时,直接报段错误二.问题逐个分析,得出解决方法:(1)找不到程序所依赖的Qt库version`Qt_5'

  10. 【RuntimeError: CUDA error: device-side assert triggered】问题与解决 - 2

    RuntimeError:CUDAerror:device-sideasserttriggered问题描述解决思路发现问题:总结问题描述当我在调试模型的时候,出现了如下的问题/opt/conda/conda-bld/pytorch_1656352465323/work/aten/src/ATen/native/cuda/IndexKernel.cu:91:operator():block:[5,0,0],thread:[63,0,0]Assertion`index>=-sizes[i]&&index通过提示信息可以知道是个数组越界的问题。但是如图一中第二行话所说这个问题可能并不出在提示的代码段

随机推荐