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 : http://prestodb.io/blog/2020/06/16/alluxio-datacaching

Presto RaptorX : http://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智庫]