Spark性能调优之调节数据本地化等待时长 spark.locality.wait

本文探讨了Spark任务中data locality的重要性,解释了`spark.locality.wait`参数的作用,即允许任务等待分配到数据所在的节点以提高性能。文章详细介绍了本地化级别的概念,包括PROCESS_LOCAL、NODE_LOCAL等,并建议在观察到多数任务为NODE_LOCAL或ANY时,可以通过调整`spark.locality.wait`来优化任务分配和性能。
摘要由CSDN通过智能技术生成
首先,读者需要知道Spark的task是干什么的?

详见笔者之前的文章《Spark性能调优之调节task并行度

介绍task 摘要如下:

我们写的spark作业称为application;
一个application有多个job(一个action比如:collect操作触发一个job);
每个job在发生shuffle(比如:reduceByKey)时,就会被拆成一个stage;
每个stage被拆为多个task,task被分配到executor上执行,一个task会有一个线程去执行,
一个task处理一小片数据。

 

为什么又有 “数据本地化等待时长 ” - - spark.locality.wait 这个参数呢?

Spark在driver 上,对application的每个stage的task分配之前,会先计算出每个task要计算的是哪个分片数据(RDD 上的某个Partition);Spark分配task的算法,优先希望每个task恰好分配到它所要计算的数据的节点上,这样,就避免了网络间数据传输。

但事实上,有时候,task并没有分配到它所要计算的数据的节点上,原因呢?
有可能是那个节点的计算资源和计算能力满了,task处理数据是需要计算资源的。所以,通常来说,Spark会等待

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值