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

发布时间:2026/9/23 1:12:22

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),仅供参考
延伸阅读

更多相关文章

2026/9/23 1:07:22

基于种群进化算法的数字化车间排产调度系统实现解析

简介:面向数字化车间智能排产调度挑战赛的Python源码项目,围绕工业4.0背景下生产过程数字化与智能优化的实际需求,整合了从数据处理、算法设计到结果展示的完整赛题方案,适合智能制造、运筹优化方向的开发者与参赛者学习。压缩包共…

2026/9/23 1:07:22

Java垃圾分类管理系统源码与数据库设计实战

简介:面向高校计算机相关专业毕业设计、课程设计与期末大作业场景,这套城市垃圾分类回收管理系统源码数据库整合包,提供从前端页面到后端服务、数据库脚本的完整方案。后端采用 Java 技术栈,前端包含 HTML、CSS、JavaScript&#…

2026/9/23 1:07:22

POE供电网线接法全解析:方案A与方案B线序、原理及故障排查

网络工程里有一类故障特别典型:设备通电了,指示灯也亮,但就是搜不到、连不上、时断时续。排查半天,最后发现是网线接法出了问题——尤其是涉及 POE 供电的场景。很多人以为网线八根线随便压个水晶头就能用,结果要么设备…

2026/9/23 2:12:25

下载电子邮箱踩坑实录一文搞懂

下载电子邮箱踩坑实录一文搞懂 刚学会Python基础语法,是不是觉得自己已经入门了?结果一上手做项目,连个像样的邮件发送功能都写不利索,卡在半路动弹不得。这种“语法都会写,项目不会搭”的断崖式体验,是无数初学者从教程走向实战时最真实的痛。…

2026/9/23 2:12:25

HarmonyOS NEXT 迁移实战:Flutter 食谱 App 源码构建与避坑指南

简介:这份源码面向希望上手 HarmonyOS NEXT 与 Flutter 跨平台开发的移动应用开发者,以一款食谱 App 为载体,演示如何将 Flutter 的跨平台 UI 能力与 HarmonyOS NEXT 的分布式特性结合,解决多设备、多终端下食谱查询与浏览体验不一…

2026/9/23 2:12:25

前端开发者如何补上后端与部署这一课:从接口联调到容器化上线

前端开发者写页面写到一定阶段,几乎都会撞上同一堵墙:接口联调时后端同学甩过来一句“跨域自己解决”,部署时运维说“你打个镜像给我”,上线后老板问“为什么首页白屏了三秒”。这些事没人系统教过,但每一件都卡在“前…

2026/9/23 2:12:25

3个底层逻辑看懂鳄鱼哪个皮肤好看 面试必问

3个底层逻辑看懂鳄鱼哪个皮肤好看 面试必问 刚接手新项目的后端开发,是不是也遇到过这种抓狂时刻?需求文档里写着“支持鳄鱼皮肤换装”,你以为是改个图片路径,结果配置环境就卡半天。Nginx 静态资源路径配错了、CDN…

2026/9/22 10:02:42

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/22 9:07:39

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/23 0:01:54

3个实战技巧搞定形式英语:从看教程到跑通性能优化

3个实战技巧搞定形式英语:从看教程到跑通性能优化 看了一堆教程还是不会写项目?别慌,这种“眼高手低”的困境在开发者圈子里太常见了。很多人以为卡点在语法,其实真正拦路虎是缺乏将知识点串联成完整链路的能力。今天咱们不聊虚的,直接拿【形式英语】这…

2026/9/22 16:34:32

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/22 20:01:30

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/22 13:25:41

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码