spark的数据本地性

一、数据本地性

spark在任务调度的时候,会检查数据存储的位置,本着“移动数据不如移动计算”的原则,会优先将task任务部署在其将要处理的数据所在的节点上,可以最大程度地减小数据传输带来的网络开销,减少IO操作,称为spark的数据本地性。

  • 问题:总会出现数据移动的情况,即excutor没有起在对应的datanode上,数据在其它节点
  • 理想情况:集群的每个节点上都存储全量的block副本,即每个block都在所有节点上存储,这样就完全不用数据传输了,但同时也大大增加了节点的存储压力,失去了分布式存储的意义。(原则上,HDFS的block备份数是3)

二、本地性的分类

  • Process_local:Excutor进程(task线程)读取缓存在本地节点上的数据
  • Node_local:读取本地节点硬盘上的数据
  • Rack_local:读取存储在同一机架上的其它节点中的数据
  • Any:读取非本地节点上的数据
  • No_pref:数据本地性无意义,数据存储在Mysql等外部数据源,不在spark集群节点上

数据读取速度依次递减,网络传输开销依次增大!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值