磁盘IO对spark的影响

红框圈起来的是3块硬盘的机器,其余的是单硬盘的机器。

性能

可以看到在3硬盘的机器的处理速度是单 硬盘机器的2-3倍。

同时shuffle的性能也有很大提高
这里写图片描述

为了数据的本地性(减少网络io),hdfs与spark往往都是在一个集群中。磁盘io不足还会影响到hdfs的读取与结果的存放。导致cpu长期等待浪费计算性能。

当磁盘io成为程序瓶颈的解决方法:

1.使用多块硬盘(最简单有效),可以使用ssd存放部分spark计算的中间结果。

2.通过压缩减少本地磁盘IO,对计算的中间结果压缩,在取数据时还要进行解压。

spark.shuffle.spill.compress true(默认)

3.优化程序,减少shuffle

通过压缩的两个配置其实使用cpu换磁盘io和网络io,如果在磁盘io不是瓶颈的计算密集型作业中,如此设置反而会降低运行效率。所以应观察应用,根据情况进行调整。

网络IO优化

通过压缩减少网络IO,减少即将进行shuffle的本地数据。
这样需要shuffle的数据就需要压缩->网络传输->解压缩三个步骤

spark.shuffle.compress true(默认)

可以监控网卡使用情况,根据实际情况修改参数

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值