云原生数据仓库 AnalyticDB MySQL 版推出了湖存储加速(LakeCache)功能,能够将OSS中的热点文件缓存在NVMe SSD高性能存储介质上,提高OSS数据的读取效率。该功能主要适用于需要大量带宽,且数据重复读的场景,例如,多个分析人员需要查询同一份数据。本文主要介绍湖存储加速功能的优势、应用场景以及使用方法。
前提条件
集群的产品系列为湖仓版。
功能介绍
功能原理
流程介绍如下:
客户端对OSS的读请求会被转发给湖存储加速器,连接LakeCache Master节点,请求文件元数据。
LakeCache Master将文件元数据返回给LakeCache Client。
LakeCache Client根据元数据信息,向LakeCache Worker发起请求,获取OSS数据:
若LakeCache Worker(缓存空间)存在目标文件,则直接将文件返回给客户端。
若LakeCache Worker(缓存空间)没有目标文件,湖存储加速器会向OSS请求目标文件。湖存储加速器将文件数据返回给客户端,并将目标文件缓存到湖存储加速器中。
功能优势
毫秒级延迟
湖存储加速器的NVMe SSD介质可以为业务提供的毫秒级读延迟。
高吞吐能力
湖存储加速器的带宽随缓存空间大小线性增长,最大可提供数百Gb/s的突发吞吐能力。
高吞吐密度
湖存储加速器可以为少量数据提供极大的吞吐能力,可以满足少量热数据的突发读取需求。
弹性伸缩
湖存储加速器缓存空间可根据业务需求手动扩容或缩容,有效避免资源浪费,降低使用成本。缓存空间最小为10 GB,最大为10 TB。
存算分离
湖存储加速器相较于计算节点上的缓存空间,可以脱离计算节点独立且在线调整空间。
数据一致
当OSS上的文件被更新时,加速器能自动识别并缓存更新后的文件,以确保计算引擎读取的都是更新后的数据。
性能指标及缓存策略
参数 | 说明 |
加速器带宽 | 加速器带宽计算公式为: 例如,湖存储加速器缓存空间配置为10 TB,则读带宽为(5*10)Gb/s=50 Gb/s。 |
湖存储加速器缓存空间 | 取值范围为10 GB~10 TB。湖存储加速器根据配置的缓存空间大小,为加速器上缓存的数据提供吞吐带宽。每TB的加速器空间提供5 Gbps的最大带宽。加速器提供的吞吐带宽为OSS标准带宽之外的性能,不受OSS标准带宽能力限制。 如果您的业务场景需要更高的容量,请提交工单联系技术支持提升容量。 |
缓存淘汰策略 | 当使用的缓存空间超过了容量,将采用LRU(Least Recently Used)缓存淘汰策略,淘汰缓存数据。LRU缓存淘汰策略用于确保最近经常被访问的数据不被删除,长时间不被访问的数据被优先移除,从而达到高效利用缓存空间的目的。 |
性能表现
AnalyticDB for MySQL基于TPC-H测试集,对开启湖存储加速和直接访问OSS存储空间两种方法进行了测试。在本次测试中,开启湖存储加速功能,数据访问效率能提升2.7倍。详细测试结果请参见:
类型 | 湖存储加速器缓存空间 | 数据集大小 | Spark资源规格 | 查询时长 |
开启湖存储加速 | 12 TB | TPC-H 10TB 测试集 | medium规格,2 Core 8 GB | 19578s |
直接访问OSS存储空间 | 无 | TPC-H 10TB 测试集 | medium规格,2 Core 8 GB | 7219s |
费用说明
开通湖存储加速功能后,湖存储加速器缓存空间将按量计费。计费详情,请参见湖仓版产品定价。
注意事项
仅部分地域支持湖存储加速功能:华东1(杭州)、华东2(上海)、华北2(北京)、华北3(张家口)、华南1(深圳)、新加坡、美国(弗吉尼亚)。
重要如果您需要在其他地域使用湖存储加速功能,请提交工单联系技术支持。
当缓存硬件发生故障时,数据查询不会中断和异常,但查询速度会下降。缓存数据需要从OSS重新预热,预热完成后查询速度将会恢复。
当湖存储加速器配置的缓存空间占用达到上限时,湖存储加速器会根据缓存文件的热度,将缓存空间中的低热度的文件替换为高热度文件。如果您不想替换已存储在缓存空间中的文件,请手动扩容湖存储加速器的缓存空间,以增加缓存空间。
开通湖存储加速
登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表,在湖仓版页签下,单击目标集群ID。
进入集群信息页面,在配置信息区域,单击湖存储加速后的设置。
在湖存储加速对话框中,打开湖存储加速开关,并设置缓存空间。
单击确定。
使用湖存储加速
开通湖存储加速后,在读取OSS数据时,可以通过在Spark作业配置中配置spark.adb.lakecache.enabled
参数,实现OSS数据的读加速。示例如下:
Spark SQL 开发
-- Here is just an example of using LakeCache. Modify the content and run your spark program.
SET spark.adb.lakecache.enabled=true;
-- Here are your sql statements
SHOW databases;
Spark Jar开发
{
"comments": [
"-- Here is just an example of using LakeCache. Modify the content and run your spark program."
],
"args": ["oss://testBucketName/data/readme.txt"],
"name": "spark-oss-test",
"file": "oss://testBucketName/data/example.py",
"conf": {
"spark.adb.lakecache.enabled": "true"
}
}
如果您需要在使用XIHE引擎时同时使用湖存储加速器,请提交工单联系技术支持。
查看湖存储加速的监控信息
开通湖存储加速后,您可以在云监控控制台查看提交的Spark应用是否已成功使用湖加速功能,也可以查看湖存储加速器缓存空间读取的数据量等信息。具体操作如下。
登录云监控控制台。
在左侧导航栏,选择
。鼠标悬浮在云原生数据仓库AnalyticDB MySQL版卡片上,单击云原生数据仓库AnalyticDB MySQL版3.0 - 湖仓版。
单击目标集群ID对应操作列的监控图表。
单击LakeCache指标页签,查询监控详情。
监控指标详情如下:
监控指标
监控项说明
LakeCache缓存命中率(%)
计算方法为:命中缓存的读请求数/读请求总数。
LakeCache缓存使用量(B)
已使用的缓存空间(字节)。
LakeCache历史累计读数据总量(B)
通过缓存空间读取的数据总量(字节)。