原创问题定位分享(19)spark task在executors上分布不均

Posted barneywill

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了原创问题定位分享(19)spark task在executors上分布不均相关的知识,希望对你有一定的参考价值。

最近提交一个spark应用之后发现执行非常慢,点开spark web ui之后发现卡在一个job的一个stage上,这个stage有100000个task,但是绝大部分task都分配到两个executor上,其他executor非常空闲,what happened?

查看spark task分配逻辑发现,有一个data locality即数据本地性的特性,详见 https://www.cnblogs.com/barneywill/p/10152497.html
即会按照locality级别的优先级来分配任务,数据本地性的优先级是:PROCESS_LOCAL, NODE_LOCAL, NO_PREF, RACK_LOCAL, ANY,并且在优先级之间还有一个delay,

spark.locality.wait

进一步查看目前集群的部署结构,发现datanode和nodemanager并没有部署到一块,所以spark在分配NODE_LOCAL类型task的时候,只有两个executor满足条件,所以绝大部分任务都分配到这两个executor上,通过设置

spark.locality.wait=0

解决问题;


以上是关于原创问题定位分享(19)spark task在executors上分布不均的主要内容,如果未能解决你的问题,请参考以下文章

原创大叔问题定位分享(33)oozie提交任务报错ArithmeticException: / by zero

原创问题定位分享(17)spark查orc格式数据偶尔报错NullPointerException

原创问题定位分享(16)spark写数据到hive外部表报错ClassCastException: org.apache.hadoop.hive.hbase.HiveHBaseTableOutpu(代

原创经验分享(19)Spark中Join实现原理

原创大叔经验分享(39)spark cache unpersist级联操作

org.apache.spark.SparkException: Task not serializable