湖存儲加速(LakeCache)
云原生數據倉庫 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)
通過緩存空間讀取的數據總量(字節)。