数据本地化对于Spark Job性能有着巨大的影响。如果数据以及要计算它的代码是在一起的,那么性能当然会非常高。但是,如果数据和计算它的代码是分开的,那么其中之一必须到另外一方的机器上。通常来说,移动代码到其他节点,会比移动数据到代码所在的节点上去,速度要快得多,因为代码比较小。Spark也正是基于这个数据本地化的原则来构建task调度算法的。

数据本地化,指的是,数据离计算它的代码有多近。基于数据距离代码的距离,有几种数据本地化级别:
1、PROCESS_LOCAL:数据和计算它的代码在同一个JVM进程中。
2、NODE_LOCAL:数据和计算它的代码在一个节点上,但是不在一个进程中,比如在不同的executor进程中,或者是数据在HDFS文件的block中。
3、NO_PREF:从任何地方访问数据速度都是一样,不关心数据的位置。
4、RACK_LOCAL:数据和计算它的代码在一个机架上。
5、ANY:数据可能在任意地方,比如其他网络环境内,或者其他机架上。

【1.7】spark 数据本地化

【1.7】spark 数据本地化

相关文章:

  • 2021-12-07
  • 2021-11-18
  • 2021-07-07
  • 2022-12-23
  • 2021-10-11
  • 2021-09-11
猜你喜欢
  • 2021-09-24
  • 2021-09-18
  • 2021-07-04
  • 2021-12-16
  • 2022-12-23
  • 2021-06-21
  • 2021-05-05
相关资源
相似解决方案