说明
自 EMR on VKE 3.17.0 版本起,Proton 组件集成至软件栈,为引擎提供计算加速。
需确保EMR on VKE 虚拟集群版本≥3.17.0,且已开通 Proton 服务。
创建 EMR On VKE 集群,勾选 Proton 服务后,您需要特别关注以下配置:
limit_cached_bytes参数控制,默认为 200GiB;由于Proton 缓存加速能力依赖本地 SSD 盘,请结合本地 SSD 大小调整,避免节点磁盘打满;ProtonDataServer Pod 默认挂载于宿主机本地 SSD 盘挂载目录,即 /emr 目录(多块本地 SSD 盘时,挂载目录为 /emr、/emr1……)。若因特殊原因将 ProtonDataServer Pod 从某节点移除,且需清理缓存数据,可先查看 Proton Pod volume 对应的 hostpath,再到宿主节点的本地盘挂载目录下删除该路径对应文件。
目前 Spark 引擎支持 Proton 缓存加速功能。在安装 Proton 之前,Spark 默认使用客户端加速;在安装 Proton 之后,Spark 支持服务端加速。
proton_server_mode **** 值为 true 后保存并重启 Spark 服务。注意
开启服务端缓存加速后,Spark 会访问 ProtonDataServer,此时 TOS 权限控制由 Proton 中配置的 AK,SK 决定,请事先调整好 AK,SK,避免因权限问题影响作业。
Proton 默认会使用创建集群时指定的 AK、SK 访问所有 TOS bucket。在服务参数中可以看到,并按需修改。
参数 | 说明 |
|---|---|
| Proton Server 访问 TOS 使用的 AK |
| Proton Server 访问 TOS 使用的 SK |
如果您需要更精细的权限隔离,使用不同的 AK、SK 访问不同的 bucket,可以在custom_core_site_dynamic_properties 参数中增加配置,输入方式为 Key=Value,通过 ; 分隔,例如:
fs.tos.bucket.<bucket>.access-key-id=<AK>; fs.tos.bucket.<bucket>.secret-access-key=<SK>;
配置完成后,需要重启 Proton 服务使其生效。
默认 Proton 访问的 TOS 区域与 VKE 集群所在区域一致,如果您有跨区域加速 TOS 访问的需要,可以通过修改Proton 服务参数实现。
参数 | 说明 |
|---|---|
| 指定访问TOS的endpoint |
如果需要在一个 Proton 集群中访问多个区域的 TOS bucket 设置区域,需要为非默认区域的 bucket 单独配置 endpoint。在 custom_core_site_dynamic_properties 参数中增加配置:
fs.tos.bucket.<bucket>.endpoint=<endpoint>
配置完成后,需要重启 Proton 服务使其生效。
Proton按需缓存是指:通过配置规则来“允许或禁止缓存某些路径下数据”。按需缓存可以帮助用户更好地管理缓存,提高缓存的效率和安全性。默认情况下,所有能被访问到的数据都会被缓存。
使用方法
在一些场景下,我们期望某些低价值的数据不要被缓存,只缓存部分高价值的数据,可以通过配置“白名单列表”和“黑名单列表”来指定哪些路径下的数据可以被缓存,除此之外的数据都不被缓存。在 custom_core_site_dynamic_properties 参数中增加配置:
proton.metaserver.<scheme>.<bucket>.data-cache.blacklist=<blacklist>; proton.metaserver.<scheme>.<bucket>.data-cache.allowlist=<allowlist>;
例如:
proton.metaserver.tos.my-bucket.data-cache.blacklist=/; proton.metaserver.tos.my-bucket.data-cache.allowlist=/user/hadoop,/user/hive;
配置完成后,需要重启 Proton 服务使其生效。通过上述配置,可以使/user/hadoop,/user/hive这两个路径下的任何数据都被缓存到Proton中。除此之外其他路径下的数据则会不会被缓存到Proton中。
最长前缀匹配规则
黑名单、白名单配置遵循“最长前缀匹配”规则。举例来说,假设我们有如下的白名单、黑名单配置。
/ --> [allow] /a/b --> [deny] /a/b/c --> [allow] bash
如果在白名单、黑名单配置中都没有配置根目录 ,则会自动将根目录添加到白名单配置中。因此在“不缓存指定路径下的数据”小节的配置中,只配置了黑名单,就实现了:黑名单中路径全部不缓存,其他路径都缓存的效果。
注意事项