成本下降60%!DLA发布优化,大幅降低OSS调用成本

简介: 很多用户使用DLA对存储在OSS上的数据的进行分析。并且,由于OSS极低的存储成本,也有很多用户也会选择通过SLS日志投递、DLA一键建仓等功能把其他数据源的数据转储到OSS进行分析。然而,由于OSS按照调用次数收费,在分析OSS数据时,因OSS接口调用而产生的成本往往会成为成本中较为显著的一个部分。

很多用户使用DLA对存储在OSS上的数据的进行分析。并且,由于OSS极低的存储成本,也有很多用户也会选择通过SLS日志投递、DLA一键建仓等功能把其他数据源的数据转储到OSS进行分析。然而,由于OSS按照调用次数收费,在分析OSS数据时,因OSS接口调用而产生的成本往往会成为成本中较为显著的一个部分。
image
为了帮助用户降低成本,我们对DLA中读取OSS数据过程中调用API的次数进行了大幅度的优化,经过测试,在不同场景下,优化后的OSS调用次数下降为优化前的1/3甚至更低,最大下降为优化前的1/10。这就意味着,在这个优化发布之后,用户的这部分成本会有60%~90%的下降。

优化思路

在此之前,DLA访问OSS数据是通过开源的AliyunOSSFileSystem来进行读写的。我们对AliyunOSSFileSystem内部机制进行了分析,发现AliyunOSSFileSystem在进行数据读取时,会以每次512KB为单位(可配置,为描述方便,这里以默认配置为例)调用OSS API进行读取,如果读取的数据范围超出了512KB,就会新发起一次请求,这样就会导致使用AliyunOSSFileSystem读取OSS文件时,调用次数非常多,产生了很多不必要的成本。
我们认为,理想情况下读取OSS文件的方式应该是这样的:

  1. 一次请求会尽量多的读取需要的内容。例如如果是从头到尾顺序读一个大文件,应该只会产生一次OSS调用。
  2. 如果读取过程中有大的跳转(seek)操作,需要重新进行一次OSS调用。这是由OSS的接口设计决定的,OSS使用HTTP接口,我们只能在发起请求的时候决定这次读取的开始位置,因此如果不重新进行调用,就只能把这次跳转中间的数据全部读一遍并忽略,这样虽然调用次数少了,但是seek的延时变大了。
  3. 反过来说,小的跳转则可以不用重新调用,因为读取少量字节并忽略显然比重新发起一次HTTP请求的延时要小。
    这个思路可以用下图来示意:

image

当然,具体实现起来还有一些细节的点需要考虑,例如每次读取的范围应该设置多少;再例如,按需读取意味着HTTP连接的存活时间比较长,如何对连接的生命周期进行管理等。
最终,我们按照这个思路对AliyunOSSFileSystem做了优化,经过测试,优化达到了我们最初期望的效果。

测试结果

测试选择了Text/ORC/Parquet三种常用的文件格式,统计他们在TPCH查询场景下的调用次数,分别测试了1GB和10GB数据量下的优化效果。测试结果如下:
image
image
image
image
image
image

从这个测试结果可以看出,在Text文件格式上面,优化后的调用次数只有优化前的1/10,ORC/Parquet的优化效果没有这么夸张,但是也只有优化前的1/3左右。这就是说,调用次数带来的成本会有60%~90%的下降。
为什么Text格式的优化效果这么明显呢?结合前面的优化思路介绍,由于Text文件格式简单,以顺序读为主,所以理论上读一个Text文件需要的最小OSS调用次数就是任务的split个数。而在优化前,由于社区AliyunFileSystem的预读逻辑,调用次数不会小于 文件大小/512KB。实际上,我们从执行计划看到的split个数,以及文件的大小计算得到的调用次数和测试结果基本是吻合的。而对列存格式来说,由于文件格式决定了要读取数据除了顺序读之外还会有跳转,所以优化效果不如Text明显。
更进一步,我们未来可以再对列存的索引等内容加入一些缓存的逻辑,甚至把经常读取的数据块也放在缓存中,这样就能进一步降低OSS的调用次数,对查询性能也有一定帮助。

目前,这个优化已经在华东1发布,该区域的DLA用户可以关注一下您的OSS成本变化。其他Region也会在近期陆续发布。

关于我们

数据湖分析Data Lake Analytics简介

欢迎大家使用数据湖分析(DLA),DLA不仅仅便宜,且快,且方便,专为阿里云数据湖分析方案而生

  • 支持自建、托管RDS、NoSQL、OSS(JSON、CSV、Parquet等格式)多种数据源分析
  • 支持按量 按照扫描量 的计费方式,准入门槛0元,提供的Serverless的弹性服务为按需收费,不需要购买固定的资源,完全契合业务潮汐带来的资源波动,满足弹性的分析需求,同时极大地降低了运维成本和使用成本
  • 平台底层托管大集群且自动弹性,在一定数据量情况下,分析性能比自建小集群高出400%
  • 支持一键 把 MySQL、PG、SqlServer、PolarDb数据库 拖到DLA,再分析,解决原MySQL不敢分析的问题。 DLA 分析性能TPC-H 10G情况 比原MySQL 8c16g 等高出10倍,数据量越大,MySQL性能越差,在1TB数据量下,原MySQL基本跑不出来

欢迎大家群内咨询

image

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
API 对象存储 网络架构
OSS restful API 调用 put,上传文件,python发http request示例
发送put 请求,向bucket中写入文件,代码中*** 的部分改成实际内容。rest请求主要问题在拼header时authorization可能会有问题,注意生成signature时的入参。#tested env: python version v3.9.6 #author: Fred #2022-1-11 import hmac import hashlib import base64 im
1213 0
|
2月前
|
存储 Java 开发工具
【三方服务集成】最新版 | 阿里云OSS对象存储服务使用教程(包含OSS工具类优化、自定义阿里云OSS服务starter)
阿里云OSS(Object Storage Service)是一种安全、可靠且成本低廉的云存储服务,支持海量数据存储。用户可通过网络轻松存储和访问各类文件,如文本、图片、音频和视频等。使用OSS后,项目中的文件上传业务无需在服务器本地磁盘存储文件,而是直接上传至OSS,由其管理和保障数据安全。此外,介绍了OSS服务的开通流程、Bucket创建、AccessKey配置及环境变量设置,并提供了Java SDK示例代码,帮助用户快速上手。最后,展示了如何通过自定义starter简化工具类集成,实现便捷的文件上传功能。
【三方服务集成】最新版 | 阿里云OSS对象存储服务使用教程(包含OSS工具类优化、自定义阿里云OSS服务starter)
|
6月前
|
SQL 分布式计算 大数据
MaxCompute产品使用问题之如果oss文件过大,如何在不调整oss源文件大小的情况下优化查询sql
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
存储 JSON 前端开发
React+node 图片剪裁上传,集成本地存储和阿里云OSS
最近一直在调研图片上传阿里云oss功能,上篇文章主要讲述了阿里云oss大文件分片、断点续传。这篇文章是在原有基础上,前端加了图片剪裁、后端加了本地存储功能。
312 0
|
存储 对象存储 索引
针对OSS数据集成场景下的功能全面优化【Dataphin V3.12]
OSS(Object Storage Service)是对象存储服务,适用于存放各种文件类型,Dataphin已经支持连接到OSS进行文件数据的读取与写入。本期版本升级中,Dataphin对于OSS的数据同步场景做了全面的功能升级,包括数据源、输入组件与数据组件,一起来了解一下吧~
308 0
|
存储 监控 对象存储
阿里云OSS预留空间全新发布 存储成本最高降低70%
阿里云OSS预留空间全新发布 存储成本最高降低70%,对象存储OSS预留空间是什么?预留空间是指定地域的,仅可抵扣该地域“标准存储 - 本地冗余”的OSS存储费用,不支持非存储容量费用抵扣,付费周期一年,阿里云对象存储推出全新预留空间产品(Reserved Capacity),客户购买一年的预留空间,较按量付费,最高可节省70%的费用。还有无地域属性预留空间
264 0
|
存储 运维 监控
CloudLens for OSS--数据洞察可观测平台发布
日志服务联合阿里云OSS推出CloudLens for OSS,支持Bucket粒度的统一管理视图,支持资源用量、访问分析、异常检测、安全分析等可视化分析能力,提供场景化运维管理,实现Bucket资产的可观测性。
270 0
|
对象存储
获取本地文件上传oss固定路径,并调用头像分割接口
以下案例演示将本地图片上传至oss固定路径下,并获取到图片的oss链接,最终通过此链接调用阿里云头像分割接口
570 0
获取本地文件上传oss固定路径,并调用头像分割接口
|
PHP 开发工具 对象存储
tp5调用阿里云oss上传文件
tp5调用阿里云oss上传文件
561 0
tp5调用阿里云oss上传文件
|
JavaScript 前端开发 Linux
如何使用阿里云云效流水线发布vuecli项目到oss?
如何使用阿里云云效流水线发布vuecli项目到oss?
10714 0