一种堆外内存缓存策略加速数据写OSS

1. 背景介绍

EMR集群中作业写数据到OSS时,需要先将数据缓存在本地,然后再一次性上传到OSS中。EMR支持两种缓存策略:

  • disk
  • off-heap

两种缓存测试使用场景略有区别:

  • 本地磁盘缓存策略适用到任何场景,且能满足较大文件上传需求。
  • 堆外内存缓存策略在性能上较磁盘缓存有优势,但是受限于内存资源。在实现上,堆外内存的申请会限制在一定范围内,当数据产生速率超过数据上传速率时,输出流会block住,需要等待进行中的上传任务完成。

潜在问题:

  • 作业提交到Yarn:当使用堆外内存策略时,存在内存超用被Yarn杀掉的风险。所以在内存参数设置上需要格外小心,不然会影响到作业的稳定性。

2. 如何使用

作业参数中配置"fs.oss.upload.bufferType",可选值为"disk"或者"off-heap"。以下举例:

1. hadoop fs -Dfs.oss.upload.bufferType=disk -put a.txt oss://xxx/xxx/

2. Hadoop作业: 
           Configuration conf = new Configuration()
           conf.set("fs.oss.upload.bufferType", "off-heap")
           ...
           
3. Spark作业:
           val conf = new SparkConf()
           conf.set("spark.hadoop.fs.oss.upload.bufferType", "off-heap")
           ...

3. Benchmark

VPC网络,SSD云盘/高效云盘,MN4,4核16G机型,测试纯写数据时间。

文件大小块大小并发度Disk buffer (SSD云盘)Disk buffer (高效云盘)Off-heap buffervs. SSD云盘 性能提升(%)vs.高效云盘 性能提升(%)
1024MB256KB523009ms20773ms18661ms+18.8%10.2%
1024MB1MB511310ms18524ms10233ms+9.5%+44.8%
1024MB4MB510318ms18001ms10191ms+1.5%+43.4%
1024MB16MB510212ms17796ms10184ms+0.3%+42.8%
1024MB64MB510945ms18612ms10216ms+6.7%+45.1%
1024MB128MB513240ms20181msOOM: Direct buffer memoryN/AN/A
256MB256KB54511ms4968ms4636ms-2.7%+6.7%
256MB1MB52417ms4474ms2381ms+1.5%+46.8%
256MB4MB52417ms4386ms2433ms-0.7%+44.3%
256MB16MB52433ms4337ms2465ms-1.3%+43.2%
256MB64MB53232ms5273ms2411ms+33.7%+54.3%
256MB128MB54392ms6197ms3118ms+29.0%+49.7%
64MB256KB51252ms1337ms1252ms+0%+6.4%
64MB1MB5611ms1117ms577ms+5.6%+48.3%
64MB4MB5567ms1084ms559ms+1.4%+48.4%
64MB16MB5597ms1108ms624ms-4.5%+43.7%
64MB64MB51569ms1491ms1499ms+4.5%-0.5%
64MB128MB51459ms1730ms1412ms+3.2%+18.4%
16MB256KB5459ms417ms383ms+16.6%+8.2%
16MB1MB5221ms307ms220ms+0%+28.3%
16MB4MB5254ms327ms198ms+22.0%+39.4%
16MB16MB5431ms398ms418ms+3.0%-5%
16MB64MB5412ms425ms400ms+2.9%+5.9%
16MB128MB5418ms405ms443ms-5.9%-9.3%
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值