数据本地性是有很大的影响在Spark job的程序中。如果数据和代码在一起,计算速度就会非常快。但是如果数据和代码是分开的,一个必须要移动到另外一个上去。通常情况下是把序列化后的代码移动到数据所在的节点上,因为代码的大小比数据小很多(移动计算,而不是移动数据)。Spark构建的调度就是基于数据本地性。
数据本地性指的是数据和代码有多近(close)。由近及远有下面locality level:
1.PROCESS_LOCAL:数据在一个相同的正在运行的代码的JVM中。
2.NODE_LOCAL:数据在同一个节点。
3.NO_PREF:数据不管在哪里都可以快速的访问到。(无本地性)
4.RACK_LOCAL:数据在相同的机架上。但是数据在同一个机架的不同server上,需要通过网络传输。
5.ANY:数据在网络的其他地方,不在一个机架上。
Spark会优先安排作业在最佳的locality level上,但是不太可能。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。