spark性能调优问题(task分布不均衡)

raxanne 2017-08-11 05:38:17
在运行spark程序时,发现task任务只集中分配到集群的某两三个节点上执行,具体如下图所示,是否为数据倾斜问题?若是的话,该如何解决,望高手指点一下,谢谢!
...全文
2897 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
叶谦 2019-07-24
  • 打赏
  • 举报
回复
可以从数据本地化考虑一下,将计算节点间迁移的等待时间调短一些试试
spark.locality.wait.process 3s
spark.locality.wait.node 3s
spark.locality.wait.rack 3s
monster-s 2019-02-22
  • 打赏
  • 举报
回复
引用 4 楼 sunrising_hill 的回复:
我也出现了这种情况,但不知道原因是不是一样,我是两个表进行full join, t1 full join t2 表t1的partition大部分都集中在几台机器上,而表t2的parition分布均衡, 执行full join时,表t1在左边的时候,task就都集中在了 某几台机器上,表t2在左侧的时候,task分布就非常均衡,join的性能也提升了很多。 原因应该是根据后面on的条件,将t1的partition对应的t2数据拉取到t1分区所在的机器上执行task任务,所以出现了task倾斜的问题。
解决了吗,有啥好方法解决?
sunrising_hill 2018-03-27
  • 打赏
  • 举报
回复
我也出现了这种情况,但不知道原因是不是一样,我是两个表进行full join, t1 full join t2 表t1的partition大部分都集中在几台机器上,而表t2的parition分布均衡, 执行full join时,表t1在左边的时候,task就都集中在了 某几台机器上,表t2在左侧的时候,task分布就非常均衡,join的性能也提升了很多。 原因应该是根据后面on的条件,将t1的partition对应的t2数据拉取到t1分区所在的机器上执行task任务,所以出现了task倾斜的问题。
raxanne 2018-01-10
  • 打赏
  • 举报
回复
谢谢答复!RDD repartition后问题依然存在,网上查找了一些资料,有说是集群自动均衡的原因。
LinkSe7en 2017-08-11
  • 打赏
  • 举报
回复
数据倾斜是某几个Partition被分配了超过平均每个Partition太多的数据,导致对应的某几个task耗时过长,影响并发性能。你这应该是叫Executor倾斜
LinkSe7en 2017-08-11
  • 打赏
  • 举报
回复
应该是你这个Job读取的HDFS文件都放在这3个节点上吧?自然初始的stage所有task都压在这几个家伙身上。读出来的RDD reparation一下再进行后续操作就好了。

1,258

社区成员

发帖
与我相关
我的任务
社区描述
Spark由Scala写成,是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于MapReduce算法实现的分布式计算。
社区管理员
  • Spark
  • shiter
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧