其他分享
首页 > 其他分享> > 浅谈spark的数据本地性(data locality)

浅谈spark的数据本地性(data locality)

作者:互联网

spark的数据本地性(data locality)

Spark其中一个特性就是数据本地性,简单的说就是“移动数据不如移动计算”。

因为数据在网络传输中会有不小的I/O消耗,并且传输距离越长消耗越大。

所以,数据本地性可以理解为数据传输距离,而我们的目的就是避免数据在网络中传输或尽量减少传输的距离。

根据传输的距离,我们可以对数据本地性根据传输距离进行分级。

查看Spark Web UI任务信息,我们可以看到下面的信息,其中Locality Level 一栏就是数据本地性的情况。


数据本地性级别划分

相关参数

Spark程序调度过程中不一定严格按照计算出来的数据本地性进行执行。

因为我们的任务是并行执行的,但是Executor的core资源有限,在你计算出来最优本地性的时候也许资源被占用。

此时如果我们降级到其他本地性级别也许整体效率更高。

所以,我们可以通过一些参数,控制等待时间,

一旦到达等待时间仍然没有获得资源,就尝试降低本地性级别让其他Excutor 执行。

相关参数如下:

参数 含义 默认值
spark.locality.wait 设置所有级别的数据本地性
默认:3s
spark.locality.wait.process 多长时间等不到PROCESS_LOCAL就降级 默认:spark.locality.wait
spark.locality.wait.node 多长时间等不到NODE_LOCAL就降级 默认:spark.locality.wait
spark.locality.wait.rack 多长时间等不到RACK_LOCAL就降级 默认:spark.locality.wait

降级顺序如下:

标签:浅谈,locality,数据,本地性,spark,LOCAL,wait
来源: https://www.cnblogs.com/lillcol/p/14838348.html