zoukankan      html  css  js  c++  java
  • Spark shuffle失败的可能原因 及解决办法

    大数据Spark任务中,分区数过小,每个分区的数据量会很大,执行join、crossjoin的过程,有可能导致shuffle write失败的操作。 可能原因包括:

    •    executor.memory内存不足,导致相应比例的nio资源不足,
    •    executor.memoryOverhead不足,没有足够的nio资源,从而导致失败。

    其他的可能导致shuffle write失败或者节点访问异常的原因:   executor--cores数目过大,适当降低executor-cores,增加num-executors,不降低运行速度,但是每个executor的内存需求降低,shuffle write失败的问题可以避免。

    repartition后,增大分区数,减小每个分区的数据量,可以总体避免上述问题,但是如果设置分区过大,可能造成如下的问题:

    1) 频繁的创建task,并行的running数目一直在变化的,比如最大是可能task数700,执行完639个后,剩下61个task还在执行这一批,从而显示出还有61个running,频繁的创建任务消耗大量资源

    2)高并发执行完小的/均匀的分区后,最后剩余的部分分区,可能因为划分不均匀,反而只利用少量task资源,导致耗时超长。

     
  • 相关阅读:
    Introduction to XQuery in SQL Server 2005
    [译]Cassandra 架构简述
    冬日绘版实录
    网页实现串口TCP数据通讯的两种方案
    (转)感知哈希算法
    CoreParking
    单线程扫描电脑所有文件与并行计算扫描电脑所有文件所用时间?
    强名称程序集
    一些题(六)
    一些题(五)
  • 原文地址:https://www.cnblogs.com/operaculus/p/15663025.html
Copyright © 2011-2022 走看看