湖存储加速(LakeCache)

更新时间:

云原生数据仓库 AnalyticDB MySQL 版推出了湖存储加速(LakeCache)功能,能够将OSS中的热点文件缓存在NVMe SSD高性能存储介质上,提高OSS数据的读取效率。该功能主要适用于需要大量带宽,且数据重复读的场景,例如,多个分析人员需要查询同一份数据。本文主要介绍湖存储加速功能的优势、应用场景以及使用方法。

前提条件

集群的产品系列为企业版、基础版或湖仓版

功能介绍

功能原理

image

流程介绍如下:

  1. 客户端对OSS的读请求会被转发给湖存储加速器,连接LakeCache Master节点,请求文件元数据。

  2. LakeCache Master将文件元数据返回给LakeCache Client。

  3. LakeCache Client根据元数据信息,向LakeCache Worker发起请求,获取OSS数据:

    • 若LakeCache Worker(缓存空间)存在目标文件,则直接将文件返回给客户端。

    • 若LakeCache Worker(缓存空间)没有目标文件,湖存储加速器会向OSS请求目标文件。湖存储加速器将文件数据返回给客户端,并将目标文件缓存到湖存储加速器中。

功能优势

  • 毫秒级延迟

    湖存储加速器的NVMe SSD介质可以为业务提供的毫秒级读延迟。

  • 高吞吐能力

    湖存储加速器的带宽随缓存空间大小线性增长,最大可提供数百Gb/s的突发吞吐能力。

  • 高吞吐密度

    湖存储加速器可以为少量数据提供极大的吞吐能力,可以满足少量热数据的突发读取需求。

  • 弹性伸缩

    湖存储加速器缓存空间可根据业务需求手动扩容或缩容,有效避免资源浪费,降低使用成本。缓存空间最小为10 GB,最大为10 TB。

  • 存算分离

    湖存储加速器相较于计算节点上的缓存空间,可以脱离计算节点独立且在线调整空间。

  • 数据一致

    OSS上的文件被更新时,加速器能自动识别并缓存更新后的文件,以确保计算引擎读取的都是更新后的数据。

性能指标及缓存策略

参数

说明

加速器带宽

加速器带宽计算公式为:5*缓存空间,单位为Gb/s,其中缓存空间单位为TB。

例如,湖存储加速器缓存空间配置为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重新预热,预热完成后查询速度将会恢复。

  • 湖存储加速器配置的缓存空间占用达到上限时湖存储加速器会根据缓存文件的热度,将缓存空间中的低热度的文件替换为高热度文件。如果您不想替换已存储在缓存空间中的文件,请手动扩容湖存储加速器的缓存空间,以增加缓存空间。

开通湖存储加速

  1. 登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表,在企业版、基础版或湖仓版页签下,单击目标集群ID。

  2. 进入集群信息页面,在配置信息区域,单击湖存储加速后的设置

  3. 湖存储加速对话框中,打开湖存储加速开关,并设置缓存空间

  4. 单击确定

使用湖存储加速

开通湖存储加速后,在读取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应用是否已成功使用湖加速功能,也可以查看湖存储加速器缓存空间读取的数据量等信息。具体操作如下。

  1. 登录云监控控制台

  2. 在左侧导航栏,选择云资源监控 > 云产品监控

  3. 鼠标悬浮在云原生数据仓库AnalyticDB MySQL版卡片上,单击云原生数据仓库AnalyticDB MySQL版3.0 - 湖仓版

  4. 单击目标集群ID对应操作列的监控图表

  5. 单击LakeCache指标页签,查询监控详情。

    监控指标详情如下:

    监控指标

    监控项说明

    LakeCache缓存命中率(%)

    计算方法为:命中缓存的读请求数/读请求总数。

    LakeCache缓存使用量(B)

    已使用的缓存空间(字节)。

    LakeCache历史累计读数据总量(B)

    通过缓存空间读取的数据总量(字节)。