{"value":"> 作者\n张策:Alluxio PMC & 联通大数据工程师\n# 01 什么是 Alluxio Local Cache\n随着云计算在基础设施领域的市场份额持续上升,主流数据分析引擎纷纷选择独立扩展存储、计算来适配云基础设施,并以此为云提供商降低成本。但是,存储计算分离也为查询延迟带来了新的挑战,因为当网络饱和时,通过网络扫描大量数据将受到 IO 限制。此外,元数据也面临远程网络来检索的性能问题。\n\n数据编排系统 Alluxio 预见到了存算分离的发展趋势,并通过分布式缓存服务为 Presto、Spark 等引擎加速查询性能。为了在存算分离架构中实现亚秒级的查询延迟,Alluxio 和 Presto 的核心团队合作实现了客户端嵌入式缓存库 Alluxio Local Cache,来进一步减少数据分析引擎和 Alluxio 之间的通信开销。\n\n**相关博客如下:**\n\nAlluxio Data Caching : [prestodb.io/blog/2020/0](https://prestodb.io/blog/2020/06/16/alluxio-datacaching)\n\nPresto RaptorX : [ https://prestodb.io/blog/2020/0](https://prestodb.io/blog/2020/06/16/alluxio-datacaching)\n\n# 02 Alluxio Local Cache 配置与启用\n2021 年大部分时间 Local Cache 仅支持 Presto Hive Connector,并已经得到大规模应用。社区于2021年底新增了Local Cache 对 Presto Iceberg Connector 的支持,相关内容将在之后的博客做深入介绍。\n\n如何在 Presto on Hive 场景配置、启用 Local Cache:\n\n1. Presto 配置文件:etc/catalog/hive.properties\n\n```\nhive.node-selection-strategy=SOFT_AFFINITY\n```\n\n2.修改 Presto 配置文件:etc/catalog/hive.properties,缓存路径推荐配置为 Ramdisk 或 SSD 来达到最佳效果。\n\n```\ncache.enabled=true\ncache.base-directory=file:///mnt/flash/data\ncache.type=ALLUXIO\ncache.alluxio.max-cache-size=1600GB\n```\n\n3. 启动 Presto\n\nTips:除数据缓存(Data cache)外,其他缓存功能为实验特性。\n\n# 03 如何监控 Local Cache\n为了提升 Local Cache 的可观测性,我们可以通过 prometheus jmx exporter 将 Worker 的指标暴露出来,使用 prometheus 采集后做进一步分析。\n\n**监控配置与启用**\n\n1.新增jmx_prometheus_config.yaml配置文件\n\n```\nglobal:\n scrape_interval: 15s\n evaluation_interval: 15s\n```\n\n2.下载jmx_prometheus_javaagent-.jar,简称jmx_prometheus_javaagent.jar\n\n3.presto jvm.config 配置中新增\n\n```\n-javaagent://jmx_prometheus_javaagent.jar=://jmx_prometheus_config.yaml\n```\n\n4.重启 Presto\n\n5.访问 http://<presto_worker>:port/ 查询是否配置成功\n\n6.将指标接入 prometheus,在 promethues 配置文件中新增\n\n```\nscrape_configs:\n - job_name: \"presto_local_cache\"\n scrape_interval: 15s\n static_configs:\n - targets: [\":\"]\n labels:\n appname: \"presto_local_cache\"\n```\n\n**指标解析**\n\nAlluxio Local Cache开放了众多监控指标,以下指标是描述缓存使用情况的基础指标,用户需要重点关注:\n\n缓存命中率\n\ncom_facebook_alluxio_Client_CacheHitRate_<HOST>_Value\n![image.png](https://dev-media.amazoncloud.cn/e3019d48df19419ba1164657df2ff1eb_image.png)\n缓存访问量:\n\ncom_facebook_alluxio_Client_CacheBytesReadCache_<HOST>_OneMinuteRate\ncom_facebook_alluxio_Client_CacheBytesReadCache_<HOST>_FiveMinuteRate\ncom_facebook_alluxio_Client_CacheBytesReadCache_<HOST>_FifteenMinuteRate\ncom_facebook_alluxio_Client_CacheBytesReadCache_<HOST>_Count\n![image.png](https://dev-media.amazoncloud.cn/163f6dacc6944310a1898c59bfd9e0f6_image.png)\n缓存未命中后,外部系统访问量\n\ncom_facebook_alluxio_Client_CacheBytesReadExternal_<HOST>_OneMinuteRate\ncom_facebook_alluxio_Client_CacheBytesReadExternal_<HOST>_FiveMinuteRate\ncom_facebook_alluxio_Client_CacheBytesReadExternal_<HOST>_FifteenMinuteRate\ncom_facebook_alluxio_Client_CacheBytesReadExternal_<HOST>_Count\n![image.png](https://dev-media.amazoncloud.cn/e1f691f13969405d93b86949b0d83194_image.png)\n缓存空间使用量\n\ncom_facebook_alluxio_Client_CacheSpaceUsed_<HOST>_Number\n![image.png](https://dev-media.amazoncloud.cn/f89d075bb20a48b38ddc0435a3b35fa6_image.png)\n缓存空间剩余量\n\ncom_facebook_alluxio_Client_CacheSpaceAvailable_<HOST>_Value\n![image.png](https://dev-media.amazoncloud.cn/2e82c6f1bd44423db40cd58ae7e9f99a_image.png)\n缓存页数目\n\nPS:在LOCAL模式下每个页存储为一个文件,当缓存存储在机械磁盘上时需要重点关注。不推荐使用机械磁盘作为LOCAL模式缓存存储,推荐使用SSD或者Ramdisk\n\ncom_facebook_alluxio_Client_CachePages_<HOST>_Count\n![image.png](https://dev-media.amazoncloud.cn/0dc0f30d0056420bb97c87d742c03a6b_image.png)","render":"<blockquote>\n<p>作者<br />\n张策:Alluxio PMC & 联通大数据工程师</p>\n</blockquote>\n<h1><a id=\"01__Alluxio_Local_Cache_2\"></a>01 什么是 Alluxio Local Cache</h1>\n<p>随着云计算在基础设施领域的市场份额持续上升,主流数据分析引擎纷纷选择独立扩展存储、计算来适配云基础设施,并以此为云提供商降低成本。但是,存储计算分离也为查询延迟带来了新的挑战,因为当网络饱和时,通过网络扫描大量数据将受到 IO 限制。此外,元数据也面临远程网络来检索的性能问题。</p>\n<p>数据编排系统 Alluxio 预见到了存算分离的发展趋势,并通过分布式缓存服务为 Presto、Spark 等引擎加速查询性能。为了在存算分离架构中实现亚秒级的查询延迟,Alluxio 和 Presto 的核心团队合作实现了客户端嵌入式缓存库 Alluxio Local Cache,来进一步减少数据分析引擎和 Alluxio 之间的通信开销。</p>\n<p><strong>相关博客如下:</strong></p>\n<p>Alluxio Data Caching : <a href=\"https://prestodb.io/blog/2020/06/16/alluxio-datacaching\" target=\"_blank\">prestodb.io/blog/2020/0</a></p>\n<p>Presto RaptorX : <a href=\"https://prestodb.io/blog/2020/06/16/alluxio-datacaching\" target=\"_blank\"> https://prestodb.io/blog/2020/0</a></p>\n<h1><a id=\"02_Alluxio_Local_Cache__13\"></a>02 Alluxio Local Cache 配置与启用</h1>\n<p>2021 年大部分时间 Local Cache 仅支持 Presto Hive Connector,并已经得到大规模应用。社区于2021年底新增了Local Cache 对 Presto Iceberg Connector 的支持,相关内容将在之后的博客做深入介绍。</p>\n<p>如何在 Presto on Hive 场景配置、启用 Local Cache:</p>\n<ol>\n<li>Presto 配置文件:etc/catalog/hive.properties</li>\n</ol>\n<pre><code class=\"lang-\">hive.node-selection-strategy=SOFT_AFFINITY\n</code></pre>\n<p>2.修改 Presto 配置文件:etc/catalog/hive.properties,缓存路径推荐配置为 Ramdisk 或 SSD 来达到最佳效果。</p>\n<pre><code class=\"lang-\">cache.enabled=true\ncache.base-directory=file:///mnt/flash/data\ncache.type=ALLUXIO\ncache.alluxio.max-cache-size=1600GB\n</code></pre>\n<ol start=\"3\">\n<li>启动 Presto</li>\n</ol>\n<p>Tips:除数据缓存(Data cache)外,其他缓存功能为实验特性。</p>\n<h1><a id=\"03__Local_Cache_37\"></a>03 如何监控 Local Cache</h1>\n<p>为了提升 Local Cache 的可观测性,我们可以通过 prometheus jmx exporter 将 Worker 的指标暴露出来,使用 prometheus 采集后做进一步分析。</p>\n<p><strong>监控配置与启用</strong></p>\n<p>1.新增jmx_prometheus_config.yaml配置文件</p>\n<pre><code class=\"lang-\">global:\n scrape_interval: 15s\n evaluation_interval: 15s\n</code></pre>\n<p>2.下载jmx_prometheus_javaagent-.jar,简称jmx_prometheus_javaagent.jar</p>\n<p>3.presto jvm.config 配置中新增</p>\n<pre><code class=\"lang-\">-javaagent://jmx_prometheus_javaagent.jar=://jmx_prometheus_config.yaml\n</code></pre>\n<p>4.重启 Presto</p>\n<p>5.访问 http://<presto_worker>:port/ 查询是否配置成功</p>\n<p>6.将指标接入 prometheus,在 promethues 配置文件中新增</p>\n<pre><code class=\"lang-\">scrape_configs:\n - job_name: "presto_local_cache"\n scrape_interval: 15s\n static_configs:\n - targets: [":"]\n labels:\n appname: "presto_local_cache"\n</code></pre>\n<p><strong>指标解析</strong></p>\n<p>Alluxio Local Cache开放了众多监控指标,以下指标是描述缓存使用情况的基础指标,用户需要重点关注:</p>\n<p>缓存命中率</p>\n<p>com_facebook_alluxio_Client_CacheHitRate_<HOST>_Value<br />\n<img src=\"https://dev-media.amazoncloud.cn/e3019d48df19419ba1164657df2ff1eb_image.png\" alt=\"image.png\" /><br />\n缓存访问量:</p>\n<p>com_facebook_alluxio_Client_CacheBytesReadCache_<HOST><em>OneMinuteRate<br />\ncom_facebook_alluxio_Client_CacheBytesReadCache</em><HOST><em>FiveMinuteRate<br />\ncom_facebook_alluxio_Client_CacheBytesReadCache</em><HOST><em>FifteenMinuteRate<br />\ncom_facebook_alluxio_Client_CacheBytesReadCache</em><HOST>_Count<br />\n<img src=\"https://dev-media.amazoncloud.cn/163f6dacc6944310a1898c59bfd9e0f6_image.png\" alt=\"image.png\" /><br />\n缓存未命中后,外部系统访问量</p>\n<p>com_facebook_alluxio_Client_CacheBytesReadExternal_<HOST><em>OneMinuteRate<br />\ncom_facebook_alluxio_Client_CacheBytesReadExternal</em><HOST><em>FiveMinuteRate<br />\ncom_facebook_alluxio_Client_CacheBytesReadExternal</em><HOST><em>FifteenMinuteRate<br />\ncom_facebook_alluxio_Client_CacheBytesReadExternal</em><HOST>_Count<br />\n<img src=\"https://dev-media.amazoncloud.cn/e1f691f13969405d93b86949b0d83194_image.png\" alt=\"image.png\" /><br />\n缓存空间使用量</p>\n<p>com_facebook_alluxio_Client_CacheSpaceUsed_<HOST>_Number<br />\n<img src=\"https://dev-media.amazoncloud.cn/f89d075bb20a48b38ddc0435a3b35fa6_image.png\" alt=\"image.png\" /><br />\n缓存空间剩余量</p>\n<p>com_facebook_alluxio_Client_CacheSpaceAvailable_<HOST>_Value<br />\n<img src=\"https://dev-media.amazoncloud.cn/2e82c6f1bd44423db40cd58ae7e9f99a_image.png\" alt=\"image.png\" /><br />\n缓存页数目</p>\n<p>PS:在LOCAL模式下每个页存储为一个文件,当缓存存储在机械磁盘上时需要重点关注。不推荐使用机械磁盘作为LOCAL模式缓存存储,推荐使用SSD或者Ramdisk</p>\n<p>com_facebook_alluxio_Client_CachePages_<HOST>_Count<br />\n<img src=\"https://dev-media.amazoncloud.cn/0dc0f30d0056420bb97c87d742c03a6b_image.png\" alt=\"image.png\" /></p>\n"}