• spark trouble shooting之一:shuffle file cannot find、executor lost等等


    有时候,如果你的spark作业处理的数据量特别特别大,几亿数据量;然后spark作业一运行,时不时报错,比如shuffle file cannot find,executor、task lost,out of memory;

    可能是说executor的堆外内存不太够用,导致executor在运行的过程中,可能会内存溢出;然后可能导致后续的stage的task在运行的时候,要从一些executor中去拉取shuffle map output文件,但是executor可能已经挂掉了,关联的block manager也没有了;所以可能会报shuffle output file not found;resubmitting task;executor lost;spark作业彻底崩溃。

    上述情况下,就可以去考虑调节一下executor的堆外内存。此外,有时堆外内存调节的比较大的时候,对于性能来说,也会带来一定的提升。

    我们可以在spark submit中用--conf的方式去添加配置。譬如--conf spark.yarn.executor.memoryOverhead=2048,这个参数指的是yarn提交模式中executor的堆外内存上限。默认情况下,这个堆外内存上限大概是300多m;后来我们通常项目中,真正处理大数据的时候,这里都会出现问题;此时调节这个参数到2G、4G,就能解决问题。

    还有一种可能是task创建的对象特别大,特别多,导致频繁的让jvm堆内存满溢,进行垃圾回收。此时就会没有响应,无法建立网络连接;spark默认的网络连接超时时长是60s;如果卡住60s都无法建立连接的话,那么就宣告失败了。重试几次都拿不到数据或者最后终于拿到数据,但是大大延长了spark作业的运行时间。那么就可以考虑调节连接的超时时长。即--conf spark.core.connection.ack.wait.timeout=300,也是在submit时设置。

  • 相关阅读:
    grpc学习
    01
    样本1
    杀死长时间占用CPU的进程
    SWFTools pdf2swf 参数详解
    C#自动下载并保存文件示例
    Flex初始化时加载外部XML
    通过XPDF抽取PDF中的中文文本
    Flex操作Json数据示例
    C#下载文件和将文件转换为数据流下载的示例
  • 原文地址:https://www.cnblogs.com/jinniezheng/p/8568498.html
Copyright © 2020-2023  润新知