The various 2G limit in Spark

DAG:

影响DAG性能的有以下几点:

  1. 反序列化TaskResult实例时使用的SerializerInstance没有重用
  2. TaskSchedulerImpl.resourceOffers方法只能单线程处理, 且生成其返回TaskDescription实例 时需要调用耗时的序列化操作
  3. taskScheduler中有不必要的序列化操作
    taskScheduler在创建TaskDescription实例时调用Task.serializeWithDependencies(task, sched.sc.addedFiles, sched.sc.addedJars, ser)把task和其依赖信息序列化, 但是在SPARK-2521: Broadcast RDD object once per TaskSet (instead of sending it for every task) 合并之后
    ResultTask和ShuffleMapTask类不在包含rdd和closure等复杂对象,没有必要独立序列化, 可以把TaskDescription类改成下面这样:
class TaskDescription[T](
val taskId: Long,
val attemptNumber: Int,
val executorId: String,
val name: String,
val index: Int, 
val task: Task[T]) extends Serializable
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容