Alluxio Local Cache 監控指南 Alluxio Alluxio ​

語言: CN / TW / HK

作者
張策:Alluxio PMC & 聯通大數據工程師

01 什麼是 Alluxio Local Cache

隨着雲計算在基礎設施領域的市場份額持續上升,主流數據分析引擎紛紛選擇獨立擴展存儲、計算來適配雲基礎設施,並以此為雲提供商降低成本。但是,存儲計算分離也為查詢延遲帶來了新的挑戰,因為當網絡飽和時,通過網絡掃描大量數據將受到 IO 限制。此外,元數據也面臨遠程網絡來檢索的性能問題。

數據編排系統 Alluxio 預見到了存算分離的發展趨勢,並通過分佈式緩存服務為 Presto、Spark 等引擎加速查詢性能。為了在存算分離架構中實現亞秒級的查詢延遲,Alluxio 和 Presto 的核心團隊合作實現了客户端嵌入式緩存庫 Alluxio Local Cache,來進一步減少數據分析引擎和 Alluxio 之間的通信開銷。

相關博客如下:

Alluxio Data Caching : https://prestodb.io/blog/2020/06/16/alluxio-datacaching

Presto RaptorX : https://prestodb.io/blog/2020/06/16/alluxio-datacaching

02 Alluxio Local Cache 配置與啟用

2021 年大部分時間 Local Cache 僅支持 Presto Hive Connector,並已經得到大規模應用。社區於2021年底新增了Local Cache 對 Presto Iceberg Connector 的支持,相關內容將在之後的博客做深入介紹。

如何在 Presto on Hive 場景配置、啟用 Local Cache:

1. Presto 配置文件:etc/catalog/hive.properties

hive.node-selection-strategy=SOFT_AFFINITY

2.修改 Presto 配置文件:etc/catalog/hive.properties,緩存路徑推薦配置為 Ramdisk 或 SSD 來達到最佳效果。

cache.enabled=true
cache.base-directory=file:///mnt/flash/data
cache.type=ALLUXIO
cache.alluxio.max-cache-size=1600GB

3. 啟動 Presto

Tips:除數據緩存(Data cache)外,其他緩存功能為實驗特性。

03 如何監控 Local Cache

為了提升 Local Cache 的可觀測性,我們可以通過 prometheus jmx exporter 將 Worker 的指標暴露出來,使用 prometheus 採集後做進一步分析。

監控配置與啟用

1.新增jmx_prometheus_config.yaml配置文件

global:
  scrape_interval:     15s
  evaluation_interval: 15s

2.下載jmx_prometheus_javaagent-.jar,簡稱jmx_prometheus_javaagent.jar

3.presto jvm.config 配置中新增

-javaagent://jmx_prometheus_javaagent.jar=://jmx_prometheus_config.yaml

4.重啟 Presto

5.訪問 http://<presto_worker>:port/ 查詢是否配置成功

6.將指標接入 prometheus,在 promethues 配置文件中新增

scrape_configs:
  - job_name: "presto_local_cache"
    scrape_interval: 15s
    static_configs:
      - targets: [":"]
        labels:
          appname: "presto_local_cache"

指標解析

Alluxio Local Cache開放了眾多監控指標,以下指標是描述緩存使用情況的基礎指標,用户需要重點關注:

緩存命中率

  • com_facebook_alluxio_Client_CacheHitRate_<HOST>_Value

緩存訪問量:

  • com_facebook_alluxio_Client_CacheBytesReadCache_<HOST>_OneMinuteRate
  • com_facebook_alluxio_Client_CacheBytesReadCache_<HOST>_FiveMinuteRate
  • com_facebook_alluxio_Client_CacheBytesReadCache_<HOST>_FifteenMinuteRate
  • com_facebook_alluxio_Client_CacheBytesReadCache_<HOST>_Count

緩存未命中後,外部系統訪問量

  • com_facebook_alluxio_Client_CacheBytesReadExternal_<HOST>_OneMinuteRate
  • com_facebook_alluxio_Client_CacheBytesReadExternal_<HOST>_FiveMinuteRate
  • com_facebook_alluxio_Client_CacheBytesReadExternal_<HOST>_FifteenMinuteRate
  • com_facebook_alluxio_Client_CacheBytesReadExternal_<HOST>_Count

緩存空間使用量

  • com_facebook_alluxio_Client_CacheSpaceUsed_<HOST>_Number

緩存空間剩餘量

  • com_facebook_alluxio_Client_CacheSpaceAvailable_<HOST>_Value

緩存頁數目

PS:在LOCAL模式下每個頁存儲為一個文件,當緩存存儲在機械磁盤上時需要重點關注。不推薦使用機械磁盤作為LOCAL模式緩存存儲,推薦使用SSD或者Ramdisk

  • com_facebook_alluxio_Client_CachePages_<HOST>_Count

想要獲取更多有趣有料的【活動信息】【技術文章】【大咖觀點】,請關注[Alluxio智庫]