You need to enable JavaScript to run this app.
导航
Proton On VKE
最近更新时间:2025.11.06 16:06:57首次发布时间:2025.11.06 16:06:57
复制全文
我的收藏
有用
有用
无用
无用

前提条件

说明

自 EMR on VKE 3.17.0 版本起,Proton 组件集成至软件栈,为引擎提供计算加速。

需确保EMR on VKE 虚拟集群版本≥3.17.0,且已开通 Proton 服务。

创建 Proton

创建 EMR On VKE 集群,勾选 Proton 服务后,您需要特别关注以下配置:

  1. 节点池与 Pod 规格:默认含 1 个 ProtonMetaServer Pod、2 个 ProtonDataServer Pod;因 ProtonDataServer 依赖 SSD,节点池需至少 2 个带本地 SSD 的 Node;
  2. Storage Class 要求:新建 VKE 资源默认安装 ebs-csi 插件,无需额外配置;绑定已有 VKE 资源时,需确保集群存在 ebs-ssd 的 Storage Class;
  3. TOS 访问授权:需填入 AK、SK 供 ProtonDataServer 访问 TOS(桶不绑定,后续可通过变更 AK/SK 或修改桶配置访问其他桶);
  4. Pod 反亲和:默认 ProtonDataServer Pod 与 Celeborn Pod 反亲和,有混部需求需联系技术支持。

基础配置

  1. 缓存容量调整:ProtonDataServer Pod 缓存容量由limit_cached_bytes参数控制,默认为 200GiB;由于Proton 缓存加速能力依赖本地 SSD 盘,请结合本地 SSD 大小调整,避免节点磁盘打满;
  2. 扩容要求:ProtonDataServer Pod 支持扩容,最小 2 个Pod,扩容前需确保本地 SSD 型节点充足。

节点磁盘清理

ProtonDataServer Pod 默认挂载于宿主机本地 SSD 盘挂载目录,即 /emr 目录(多块本地 SSD 盘时,挂载目录为 /emr、/emr1……)。若因特殊原因将 ProtonDataServer Pod 从某节点移除,且需清理缓存数据,可先查看 Proton Pod volume 对应的 hostpath,再到宿主节点的本地盘挂载目录下删除该路径对应文件。

开启缓存加速

目前 Spark 引擎支持 Proton 缓存加速功能。在安装 Proton 之前,Spark 默认使用客户端加速;在安装 Proton 之后,Spark 支持服务端加速。

操作步骤

  1. 进入 Spark 服务参数配置页面,选择配置文件:envs
  2. 编辑参数proton_server_mode **** 值为 true 后保存并重启 Spark 服务。

注意

开启服务端缓存加速后,Spark 会访问 ProtonDataServer,此时 TOS 权限控制由 Proton 中配置的 AK,SK 决定,请事先调整好 AK,SK,避免因权限问题影响作业。

Proton最佳实践

TOS bucket权限隔离

Proton 默认会使用创建集群时指定的 AK、SK 访问所有 TOS bucket。在服务参数中可以看到,并按需修改。

参数

说明

fs_tos_access_key_id

Proton Server 访问 TOS 使用的 AK

fs_tos_secret_access_key

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 服务使其生效。

跨区域加速 TOS 访问

默认 Proton 访问的 TOS 区域与 VKE 集群所在区域一致,如果您有跨区域加速 TOS 访问的需要,可以通过修改Proton 服务参数实现。

参数

说明

tos_endpoint

指定访问TOS的endpoint

如果需要在一个 Proton 集群中访问多个区域的 TOS bucket 设置区域,需要为非默认区域的 bucket 单独配置 endpoint。在 custom_core_site_dynamic_properties 参数中增加配置:

fs.tos.bucket.<bucket>.endpoint=<endpoint>

配置完成后,需要重启 Proton 服务使其生效。

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
  • 对于/b/file,它的最长前缀匹配是/,而/属于白名单,因此/b/file可以被缓存。
  • 对于/a/b/file,它的前缀匹配包括:/、/a/b,其中/a/b更长,因此最长前缀匹配是/a/b,而/a/b属于黑名单,因此/a/b/file不可以被缓存。
  • 对于/a/b/c/file,它的前缀匹配包括:/、/a/b、/a/b/c,其中/a/b/c最长,因此最长前缀匹配是/a/b/c,而/a/b/c属于白名单,因此/a/b/c/file可以被缓存。

如果在白名单、黑名单配置中都没有配置根目录 ,则会自动将根目录添加到白名单配置中。因此在“不缓存指定路径下的数据”小节的配置中,只配置了黑名单,就实现了:黑名单中路径全部不缓存,其他路径都缓存的效果。
注意事项

  • 一个路径同时存在于黑名单和白名单中是非法的场景,会导致 Proton 无法启动。同一个路径只能排他地存在于白名单或者黑名单。
  • 仅支持配置具体的路径,不支持通配符,符号'*'会被识别为路径的一部分。