新闻详情

新闻详情

首页 / 资讯中心 / 详情

Apache PredictionIO Helm Charts 部署指南:在 Kubernetes 上安装 PredictionIO 与 Spark 集群

发布时间:2026/10/29 16:41:54来源:尧图网络
Apache PredictionIO Helm Charts 部署指南:在 Kubernetes 上安装 PredictionIO 与 Spark 集群
Apache PredictionIO Helm Charts 部署指南在 Kubernetes 上安装 PredictionIO 与 Spark 集群【免费下载链接】predictionioPredictionIO, a machine learning server for developers and ML engineers.项目地址: https://gitcode.com/gh_mirrors/pred/predictionio本指南以仓库 docker/charts/README.md 为核心系统讲解如何借助 Helm Charts 将 Apache PredictionIO 部署到 Kubernetes 集群包括以 PostgreSQL 作为存储后端安装 PredictionIO、通过kubectl port-forward访问内置 Jupyter、独立安装 Spark 集群并最终使用pio train -- --master spark://...将训练任务提交到 Spark 集群。读完本文你将能够在一套 Kubernetes 环境中完整落地「存储 PredictionIO Jupyter Spark」的机器学习服务基础设施。Helm Charts 概览PredictionIO 的 Kubernetes 打包方式Helm Charts 本质上是「预配置好的 Kubernetes 资源包」它将 Deployment、Service、ConfigMap 等 Kubernetes 对象模板化配合 values 文件实现参数化安装。仓库中的docker/charts目录提供了两套可直接安装的 ChartpredictionioPredictionIO 主服务 Chart。其Chart.yaml声明了name: predictionio、version: 0.1.0、appVersion: 0.13.0默认镜像为predictionio/pio-jupyter见 predictionio/values.yaml即一个同时内置 PredictionIO 与 Jupyter Notebook 的运行环境。sparkApache Spark 集群 ChartappVersion: 2.3.2包含 Spark Master、Worker 与 Web UI供 PredictionIO 提交训练任务使用。两套 Chart 可以独立安装、独立管理PredictionIO 的元数据、事件数据、模型数据存储在后端数据库中而训练计算则交给独立的 Spark 集群。下面按官方文档的步骤从「PredictionIO PostgreSQL」开始安装。前置条件在开始之前请确保你的环境满足以下条件一个可用的 Kubernetes 集群并已配置好kubectl访问凭证已安装 Helm 客户端集群节点可以拉取predictionio/pio-jupyter、stable/postgresql、bde2020/spark-master、bde2020/spark-worker等容器镜像从模板细节看这两套 Chart 的模板如 pio-deployment.yaml 中的apiVersion: apps/v1beta2、spark-master-deployment.yaml 中的extensions/v1beta1面向较早期版本的 Kubernetes/Helm 编写若你的集群版本较新建议先评估 API 版本兼容性。第一步安装 PredictionIO 与 PostgreSQL官方文档给出的安装过程分两步先装 PostgreSQL再装 PredictionIO全程使用helm install命令helm install --name my-postgresql stable/postgresql -f postgresql.yaml helm install --name my-pio ./predictionio -f predictionio_postgresql.yamlpostgresql.yaml与predictionio_postgresql.yaml分别是这两次安装使用的 values 覆盖文件下面逐一解析。PostgreSQL Chart 配置解析postgresql.yaml 是传给stable/postgresqlChart 的 values 文件内容如下postgresqlUsername: pio postgresqlPassword: pio postgresqlDatabase: pio # for testing persistence: enabled: falsepostgresqlUsername/postgresqlPassword/postgresqlDatabase创建数据库pio用户名与密码均为pio与后续 PredictionIO 的环境变量一一对应persistence.enabled: false关闭持久化存储注释明确标注「for testing」——生产环境请删除或改写此段以启用持久卷否则 Pod 重启后数据会丢失。第一次安装的 release 名为my-postgresqlHelm 会为该 release 生成形如my-postgresql-postgresql的 Service 名称这正是第二个配置文件中数据库连接地址的来源。PredictionIO Chart 配置解析predictionio_postgresql.yaml 通过覆盖pio.env列表告诉 PredictionIO 容器如何连接上面安装的 PostgreSQL。核心是四个存储相关环境变量组这与 PredictionIO 的「统一存储」设计一致——Metadata、Event Data、Model Data 三类数据仓库分别可指定独立的存储后端环境变量值作用PIO_STORAGE_SOURCES_PGSQL_TYPEjdbc存储源类型PredictionIO 通过 JDBC 访问 PostgreSQLPIO_STORAGE_SOURCES_PGSQL_URLjdbc:postgresql://my-postgresql-postgresql:5432/pio数据库连接地址Service 名 默认端口 5432 库名pioPIO_STORAGE_SOURCES_PGSQL_USERNAMEpio数据库用户名PIO_STORAGE_SOURCES_PGSQL_PASSWORDpio数据库密码PIO_STORAGE_REPOSITORIES_MODELDATA_NAMEpio_model模型数据仓库名PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCEPGSQL模型数据仓库使用 PGSQL 源PIO_STORAGE_REPOSITORIES_METADATA_NAMEpio_meta元数据仓库名PIO_STORAGE_REPOSITORIES_METADATA_SOURCEPGSQL元数据仓库使用 PGSQL 源PIO_STORAGE_REPOSITORIES_EVENTDATA_NAMEpio_event事件数据仓库名PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCEPGSQL事件数据仓库使用 PGSQL 源PYSPARK_DRIVER_PYTHON_OPTSnotebook --NotebookApp.token启动 Jupyter Notebook 且关闭 token 鉴权仅测试环境建议这套变量与 PredictionIO 的 pio-env 配置体系对应仓库中的 pio-env.sh.template 使用同样的PIO_STORAGE_SOURCES_*、PIO_STORAGE_REPOSITORIES_*命名规范Chart 只是把这些配置以环境变量形式注入容器从而免去手工编辑配置文件。Deployment 与 Service 模板解读PredictionIO Chart 的运行时形态由两个模板文件决定pio-deployment.yaml 定义 Deployment默认replicas: 1容器镜像由pio.image.repository:tag决定默认predictionio/pio-jupyter:latest。容器对外开放三个端口7070event事件服务器、8000predict预测服务、8888jupyter并分别配置了 livenessProbe 与 readinessProbe均通过 HTTP GET 探测 7070 端口/路径。此外还支持resources、nodeSelector、affinity、tolerations等标准调度配置默认均为空。pio-service.yaml 定义 Service默认type: ClusterIP暴露 8888 端口映射到容器 8888 端口名称为jupyterselector 依据app.kubernetes.io/name与app.kubernetes.io/instance匹配 Pod。values.yaml 是 PredictionIO Chart 的默认值全集其中还保留了pio.service.type可改为NodePort或LoadBalancer与pio.replicas等参数方便按需覆盖。第二步通过 port-forward 访问 Jupyter安装完成后PredictionIO 容器内置的 Jupyter Notebook 运行在 8888 端口。官方文档使用kubectl port-forward将本地端口转发到 Pod然后打开http://localhost:8888/export POD_NAME$(kubectl get pods --namespace default -l app.kubernetes.io/namepredictionio,app.kubernetes.io/instancemy-pio -o jsonpath{.items[0].metadata.name}) kubectl port-forward $POD_NAME 8888:8888关键点标签选择器app.kubernetes.io/namepredictionio,app.kubernetes.io/instancemy-pio中的instance值就是安装时的 release 名my-pio如果换用其他 release 名这里要同步修改。由于 values 中设置了PYSPARK_DRIVER_PYTHON_OPTSnotebook --NotebookApp.token访问http://localhost:8888/时不需要输入 token。除了默认的 ClusterIP port-forward 方式NOTES.txt 模板还根据pio.service.type提供了两种访问路径NodePort通过kubectl get ... -o jsonpath{.spec.ports[0].nodePort}获取节点端口再用节点 IP 访问http://$NODE_IP:$NODE_PORTLoadBalancer等待云厂商分配loadBalancer.ingress[0].ip可用kubectl get svc -w观察状态访问http://$SERVICE_IP:8888。第三步安装 Spark 集群PredictionIO 的训练计算依赖 Spark。官方文档给出的命令非常简单helm install --name my-spark ./spark该 Chartspark/Chart.yaml版本 0.3.0会创建1 个 Spark Master7077 端口用于接收作业提交8080 端口提供 Web UI3 个 Spark Worker默认关闭自动扩缩容可通过 HPA 在 CPU 达到阈值时扩容最多 10 个副本Master 与 WebUI 的 Service 默认类型为LoadBalancer。Spark Chart 可配置参数spark/README.md 给出了完整参数表整理如下Spark Master参数说明默认值Master.NameMaster 名称spark-masterMaster.Image容器镜像名bde2020/spark-masterMaster.ImageTag镜像标签2.2.2-hadoop2.7Master.Replicas副本数1Master.Component选择器 keyspark-masterMaster.Cpu容器请求 CPU100mMaster.Memory容器请求内存512MiMaster.ServicePortService 端口7077Master.ContainerPort容器监听端口7077Master.DaemonMemoryMaster JVM Xms/Xmx1gMaster.ServiceTypeService 类型LoadBalancerSpark WebUI参数说明默认值WebUi.NameWebUI 名称spark-webuiWebUi.ServicePortService 端口8080WebUi.ContainerPort容器监听端口8080Spark Worker参数说明默认值Worker.NameWorker 名称spark-workerWorker.Image容器镜像名bde2020/spark-workerWorker.ImageTag镜像标签2.2.2-hadoop2.7Worker.ReplicasDeployment 与 HPA 副本数3Worker.ReplicasMaxHPA 最大副本数10Worker.Component选择器 keyspark-workerWorker.Cpu容器请求 CPU100mWorker.Memory容器请求内存512MiWorker.ContainerPort容器监听端口7077注实际 Worker WebUI 为 8081见 values.yamlWorker.CpuTargetPercentageHPA CPU 目标利用率50Worker.DaemonMemoryWorker JVM Xms/Xmx1gWorker.ExecutorMemoryWorker 可提供给 Executor 的内存1gWorker.Autoscaling是否启用 HPAfalse参数可以通过两种方式覆盖# 方式一--set keyvalue helm install --name my-spark ./spark --set Worker.Replicas5,Master.Cpu500m # 方式二-f 指定 values 文件 helm install --name my-spark -f values.yaml ./sparkSpark Master 的模板实现从 spark-master-deployment.yaml 可以看到 Master 的完整形态容器以spark-class org.apache.spark.deploy.master.Master启动并通过环境变量注入SPARK_MASTER_HOST、SPARK_MASTER_PORT默认 7077、SPARK_MASTER_WEBUI_PORT默认 8080、SPARK_DAEMON_MEMORY默认 1g同时暴露 7077提交端口与 8080Web UI两个容器端口同文件还定义了两个 Servicemaster7077与webui8080。而 spark-worker-hpa.yaml 仅在Worker.Autoscaling.Enabledtrue时才会生成HorizontalPodAutoscaler以Worker.ReplicasMax为上限、Worker.CpuTargetPercentage为 CPU 目标利用率进行扩容。第四步向 Spark 集群提交训练任务Spark 集群就绪后即可在 PredictionIO 容器内执行pio train并通过--把参数透传给 Spark指定 Master 地址为上面安装的集群pio train -- --master spark://my-spark-master:7077这里的spark://my-spark-master:7077中my-spark是 Spark Chart 的 release 名master是该 Chart 生成的 Master Service 名称7077 是 Spark 标准提交端口。如果想在pio eval等其他需要 Spark 的命令中使用集群也可以用同样的-- --master spark://my-spark-master:7077方式指定。若改为 ClusterIP 类型的 Service则可以从集群内任意 Pod 以该地址访问 Master。自定义部署修改 values 与整体拓扑结合前文各配置文件的说明你可以按需调整整套部署更换存储后端本指南的 Chart 默认把三类仓库全部指向 PGSQLPredictionIO 支持多个存储源仓库中 pgsql、mysql、elasticsearch、hbase 等均有对应的 compose 与实现你可以在pio.env中为EVENTDATA、METADATA、MODELDATA分别指定不同源与不同连接参数。调整副本与资源修改 predictionio/values.yaml 中的pio.replicas、pio.resources或 Spark 的Worker.Replicas、Master.Cpu/Memory。暴露服务方式将pio.service.type改为NodePort/LoadBalancer后可依据 NOTES.txt 提示直接通过集群节点或负载均衡 IP 访问 Jupyter无需 port-forward。生产注意事项postgresql.yaml中persistence.enabled: false仅适用于测试生产环境应启用持久化同时为 Jupyter 关闭NotebookApp.token这类简化鉴权的设置并评估早期 API 版本模板与当前集群的兼容性。总结按照本文步骤你可以在 Kubernetes 上完成一套可用的 PredictionIO 环境stable/postgresql提供存储./predictionioChart 提供带 Jupyter 的 PredictionIO 服务7070 事件、8000 预测、8888 Jupyter./sparkChart 提供训练集群最终通过pio train -- --master spark://my-spark-master:7077将训练任务提交到 Spark。所有配置均可通过 values 文件与--set参数灵活覆盖相关模板与配置的完整实现都可直接查阅仓库 docker/charts 目录下的源码继续深入学习。【免费下载链接】predictionioPredictionIO, a machine learning server for developers and ML engineers.项目地址: https://gitcode.com/gh_mirrors/pred/predictionio创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/10/28 16:06:12

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/10/28 13:44:36

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/10/29 13:36:24

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/10/28 16:06:11

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/10/29 13:36:50

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/10/28 16:06:10

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉