Apache PredictionIO 0.14.0 介绍与架构概览
Apache PredictionIO 0.14.0 介绍与架构概览:已退役的开源机器学习服务器(2020-09 退役决议、2021-04 迁入 Apache Attic),覆盖事件采集、DASE 引擎模板、Spark/MLlib Lambda 训练与 pio CLI 等架构概念、模板体系与 SDK、存量系统的版本依赖要求,信息于 2026-10-15 核实。
Apache PredictionIO 0.14.0 介绍与架构概览
⚠️ 项目已退役:Apache PredictionIO 已于 2020-09 作出退役决议、2021-04 完成向 Apache Attic 的迁移,GitHub 仓库已于 2021-05-12 归档为只读。最后发布版本为 0.14.0,此后无任何维护与安全更新。请勿将本项目用于任何新项目。 本文仅面向仍在维护 PredictionIO 存量系统的读者,用于理解其架构概念与版本依赖约束;文中的版本要求均为历史事实记录,不代表可安全用于新建设。
目标:介绍已退役的 Apache PredictionIO——一个构建在开源大数据栈之上的机器学习服务器;覆盖项目历史与退役时间线、架构核心概念(Event Server / DASE 引擎模板 / Spark 训练 / Lambda 模型 / pio CLI)、模板体系与 SDK,以及最后版本 0.14.0 的依赖要求速查。 覆盖范围:全部事实来自 Attic 官方页面、predictionio.apache.org 存档站、archive.apache.org 发行物归档与 GitHub 仓库横幅。 信息核实边界:以上来源均于 2026-10-15 核实抓取;本文为纯调研文档,未包含任何安装部署实操,运行细节以存档文档为准。
一、信息来源与核实边界
- 核实日期:2026-10-15;核实方式:对以下官方来源逐项抓取核对。
| 来源 | 地址 | 用途 |
|---|---|---|
| Attic 项目页 | https://attic.apache.org/projects/predictionio.html | 退役时间线的权威来源 |
| 官网存档站 | https://predictionio.apache.org | 仍可访问;架构文档、模板画廊、安装要求 |
| 发行物归档 | https://archive.apache.org/dist/predictionio/ | 版本列表的权威来源 |
| GitHub 仓库 | https://github.com/apache/predictionio | 归档只读横幅、历史 release 说明 |
- 核实说明:
- 官网存档站顶部横幅原文:"This project has retired. For details please refer to its Attic page."——文档仍可读,但均为存档内容;
- GitHub 仓库顶部横幅实测:"This repository was archived by the owner on May 12, 2021. It is now read-only."
- 本文所有事实(时间线、版本、依赖要求)均照录上述来源原文;未做部署实测,安装运行细节以存档文档为准。
二、项目历史与退役状态
2.1 Attic 时间线(官方页面原文)
Attic 项目页原文:
"PredictionIO became a Top Level Project in October 2017 (board_minutes_2017_10_18.txt), retired in September 2020 (board_minutes_2020_09_16.txt) and the move to the Attic was completed in April 2021 (ATTIC-187)."
关键时间点整理(「退役」有两个口径,务必分清):
| 时间 | 事件 |
|---|---|
| 2017-10 | 成为 Apache 顶级项目(TLP,董事会 2017-10-18 会议纪要) |
| 2020-09 | 董事会作出退役决议(2020-09-16 会议纪要) |
| 2021-04 | 向 Apache Attic 的迁移完成(工单 ATTIC-187) |
| 2021-05-12 | GitHub 仓库归档为只读(仓库横幅原文:"This repository was archived by the owner on May 12, 2021. It is now read-only.") |
即:退役决议发生在 2020-09,Attic 迁移完成在 2021-04;写时间线或合规报告时建议两个口径都写明。
2.2 项目定位(Attic 页面原文)
"PredictionIO was a machine learning server built on top of state-of-the-art open source stack, that enables developers to manage and deploy production-ready predictive services for various kinds of machine learning tasks."
拆解这一定位:PredictionIO 是一台开源机器学习服务器——把「采集事件数据 → 基于模板训练模型 → 部署预测服务」整条链路封装为一台可安装、可管理的服务,开发者无需自行拼装大数据与模型服务组件。存档首页列出的能力:
- 可安装为完整机器学习栈:捆绑 Apache Spark、MLlib、HBase、Akka HTTP、Elasticsearch;
- 实时响应查询:部署后的引擎以服务形式在线应答预测请求;
- 系统化评估调优:支持对多个引擎变体做评估与对比调优;
- 多平台数据接入:批/流数据统一接入。
2.3 终版与发行渠道(重要勘误)
- 最后发布版本为 0.14.0。archive.apache.org/dist/predictionio/ 实测目录列表:
/dist/ 0.12.1/ 0.13.0/ 0.14.0/ KEYS
- ⚠️ 勘误:GitHub Releases 页实测只列出一个版本——0.9.6,其说明为 "Starting from 0.9.6, Java 8 is a hard requirement ... Default Spark version has been bumped to 1.6.0"。原因是 Apache 时期的发行走 apache.org dist 渠道,不产生 GitHub Releases;
- 因此不要用 GitHub Releases 的数量判断其版本历史;Apache 时期的 0.12.1 / 0.13.0 / 0.14.0 三个版本只能从 archive.apache.org 获取;
- 0.9.6 的两条历史事实对存量系统仍有参考价值:自 0.9.6 起 Java 8 为硬性要求、默认 Spark 版本升至 1.6.0。
三、架构与核心概念(存档官网口径)
3.1 组件依赖总览
存档站 System Architecture 页(https://predictionio.apache.org/system/ )给出的组件与原文要点:
| 组件 | 官方原文要点 |
|---|---|
| HBase | "Event Server uses Apache HBase (or JDBC DB for small data) as the data store. It stores imported events." |
| Apache Spark | "powers the data preparation and input to the algorithm, training, and sometimes the serving processing. ... many algorithms come from Spark's MLlib." |
| HDFS | 用于批量导入的数据暂存(stage data for batch import)、Event Server 数据集导出,以及部分模型的存储 |
| Elasticsearch | "stores metadata such as model versions, engine versions, access key and app ID mappings, evaluation results, etc. For some templates it may store the model." |
| Lambda 模型 | "Templates generally fit the Lambda model for integrating real-time serving with background periodic model updates." |
3.2 核心概念拆解
- Event Server(事件服务器):统一事件采集层,提供 REST Event API(路径 /datacollection/eventapi)。各端把用户行为、业务事件统一导入,事件数据存入 HBase(小数据量场景可改用 JDBC 数据库);
- Engine 与 DASE 模板体系:引擎按 DASE 四组件组织——Data(数据源与预处理)、Algorithm(算法与训练)、Serving(预测应答逻辑)、Evaluation(评估)。引擎以「模板」形式发布与复用,业务方下载模板后按自身数据定制;
- 训练与服役(训练-服务双线):Spark / MLlib 完成训练并产出模型(模型可存 HDFS、本地或 Elasticsearch);按 Lambda 模型把「实时查询应答」与「后台周期性批量重训」融合——线上服务持续应答,模型在后台定期更新;
- pio CLI:命令行工具贯穿全流程——下载模板、customize(定制)、start(训练/启动事件服务器等)、deploy(部署引擎为服务)。
DASE 四组件的职责划分(按存档官网的组件命名与 3.1 节原文要点归纳):
| DASE 组件 | 职责 | 对应环节 |
|---|---|---|
| Data | 数据源接入与预处理(读取 Event Server 事件等) | 训练前 |
| Algorithm | 算法实现与模型训练(大量算法来自 Spark MLlib) | 训练 |
| Serving | 预测结果的应答与组合逻辑 | 在线服务 |
| Evaluation | 引擎变体的评估与对比 | 调优选型 |
一次典型使用流程可概括为:
接入方 → Event Server(REST Event API,事件入 HBase/JDBC)
→ pio 下载模板 → 定制 DASE 四组件
→ Spark/MLlib 训练(数据准备 → 算法 → 模型)
→ pio deploy 引擎为在线服务
→ 业务系统实时查询(Lambda:实时应答 + 后台周期重训)
分步说明:
- 事件采集:各端经 REST Event API 把事件写入 Event Server(存 HBase,或小数据量用 JDBC);
- 模板定制:从模板画廊选取合适类别的模板,按业务数据定制 DASE 四组件;
- 模型训练:pio 启动训练,Spark / MLlib 完成数据准备与算法执行,产出模型;
- 服务部署:pio deploy 把引擎部署为在线服务,业务系统开始实时查询;
- 持续迭代:Lambda 模型下后台周期性重训,模型更新与线上应答并行不悖。
(各步骤的具体命令参数以存档文档为准;本文未做部署实测,不提供「实测」结论。)
3.3 模板体系(7 类)
存档模板画廊(Template Gallery)实测页签分类,共 7 类:
Recommenders / Classification / Regression / NLP / Clustering / Similarity / Other
画廊首个模板为 ActionML 的 Universal Recommender(基于 Mahout Cross-Occurrence/CCO 算法、运行于 Spark)——推荐(Recommenders)是该生态最成熟的场景,其余类别覆盖分类、回归、自然语言处理、聚类、相似度等。
3.4 SDK 与语言
- 官方 SDK(存档首页表格实测):Java、PHP、Python、Ruby,另有社区贡献(Community Contributed)版本;
- PredictionIO 核心本身为 Scala 实现(官方 API 文档即 Scala API);但接入方经 REST API 或上述 SDK 调用时无需编写 Scala。
四、存量系统的版本与依赖要求(0.14.0)
本章面向仍在维护 PredictionIO 存量系统的读者,要求照录存档安装页(https://predictionio.apache.org/install/ )原文;新项目请勿参照本章选型。
4.1 官方最低版本要求(原文要点)
安装页强调:"It is very important to meet the minimum version of the following technologies...",具体要求:
| 组件 | 最低版本 | 备注 |
|---|---|---|
| Java SE Development Kit | 8 | 硬性要求(自 0.9.6 起即为 hard requirement) |
| Apache Spark | 2.0.2(for Hadoop 2.6) | 训练与部分服役环节的计算引擎 |
| Apache Hadoop | 2.6.5 | 可选——仅在需要 YARN 与 HDFS 时必需 |
| 事件/元数据存储 | PostgreSQL 9.1 或 MySQL 5.1 或 Apache HBase 0.98.5 | 按原部署形态选择其一 |
| Elasticsearch | 1.7.6 | 存元数据(部分模板亦存模型) |
存量要求速记:JDK 8 + Spark 2.0.2(Hadoop 2.6 谱系)+ 存储(PG/MySQL/HBase)+ Elasticsearch 1.7.6。
4.2 0.14.0 的版本变化(原文)
"Note that support for Scala 2.10 and Spark 1.6 were removed as of PredictionIO 0.14.0. Note that support for Elasticsearch 1 is deprecated as of PredictionIO 0.14.0."
即自 0.14.0 起:
- 移除 Scala 2.10 与 Spark 1.6 支持(Scala/Spark 侧要求随之抬高);
- 弃用 Elasticsearch 1(仍可用但已进入弃用轨道);
- 存量环境从 0.12.x/0.13.x 升级到 0.14.0 前,需核对这两处兼容性。
4.3 运行提示(原文)
- 单机运行官方建议至少 2GB 内存;
- Linux 上 Spark local 模式「可能不工作」(may not work),此时需将 Spark 配置为 standalone cluster 模式运行;
- License:Apache-2.0(官网 Licensing 节)。
4.4 存量维护速查表
给存量维护者的结论清单:
- 锁定 JDK 8——不要贸然升级 JDK,0.14.0 时代无更高版本的适配记录;
- 锁定 Spark 2.0.2(Hadoop 2.6 谱系);仅当用到 YARN/HDFS 才引入 Hadoop 2.6.5;
- 存储组合在 PostgreSQL 9.1 / MySQL 5.1 / HBase 0.98.5 中按原部署保持;Elasticsearch 固定 1.7.6 谱系(0.14.0 已弃用 ES 1,任何变更都需评估);
- 依赖升级前先对照 4.2 节:0.14.0 已移除 Scala 2.10 / Spark 1.6;
- 归档发行物只认 archive.apache.org 的 0.12.1 / 0.13.0 / 0.14.0 三个目录(GitHub Releases 不反映 Apache 时期版本);
- 任何「换机器重装」需求优先考虑迁移到活跃维护的替代方案,而非原样复刻这套 2016~2020 年代的依赖栈。
4.5 存量环境实操建议
- 重装 / 灾备重建:发行物从 archive.apache.org 的 0.12.1 / 0.13.0 / 0.14.0 目录取回 source-release,配合目录下 KEYS 做签名校验;不要到 GitHub Releases 寻找 Apache 时期版本(见 2.3 节勘误);
- 小版本升级(0.12.x / 0.13.x → 0.14.0):先核对 Spark 侧(0.14.0 已移除 Spark 1.6 与 Scala 2.10 支持)与 Elasticsearch 侧(固定 1.7.6;ES 1 已弃用)的兼容性,再行升级;
- 运行环境:JDK 固定 Java 8;Linux 上若 Spark local 模式异常,按官方提示切换 standalone cluster 模式;
- 迁移规划:退役项目无任何安全维护,建议以「迁移到活跃维护的替代方案」为主线做长期规划,而非持续扩容这套依赖栈;模板资产(如 Universal Recommender)迁移时需评估对应算法在新平台上的等价实现与数据重放成本。
五、适用场景与局限
适用场景(仅存量视角):
- 正在生产运行 PredictionIO 0.x 的系统:理解架构、核对依赖版本、评估升级或迁移路径时参考本文;
- 接手他人遗留的推荐/预测服务,需要快速理解 Event Server、DASE、pio CLI 等概念与组件关系时阅读;
- 需要从 archive.apache.org 取回历史发行物做合规存档或灾备重建时,按 2.3 节确认版本与渠道。
局限与不适用:
- 请勿用于新项目:项目已退役,仓库只读、零维护、零安全补丁;
- 依赖栈老旧:JDK 8、Spark 2.0.2、Elasticsearch 1.7.6、HBase 0.98.5 在现代环境中均属旧版本,继续扩容存量系统会放大维护与安全风险;
- 模板画廊与存档文档虽仍可访问,但模板本身同样无人维护;
- 官方支持渠道已随退役关闭,问题排查只能依赖存档文档与社区历史资料;
- 新项目应选择活跃维护的机器学习服务平台,或直接基于当前版本的 Spark/MLlib 等组件自建。
六、常见问题
Q1:GitHub Releases 里怎么只有 0.9.6? Apache 时期的发行走 apache.org dist 渠道、不产生 GitHub Releases;0.9.6 是进入 Apache 之前的版本。Apache 时期版本看 archive.apache.org:0.12.1 / 0.13.0 / 0.14.0。
Q2:最后版本到底是哪个? 0.14.0——archive.apache.org/dist/predictionio/ 下仅 0.12.1、0.13.0、0.14.0 三个版本目录。
Q3:新项目可以用它吗? 不可以。项目 2020-09 决议退役、2021-04 迁入 Attic、仓库 2021-05-12 起只读,无任何维护与安全更新;本文仅面向存量系统维护。
Q4:0.14.0 相比 0.13.0 有什么需要注意的破坏性变化? 移除 Scala 2.10 与 Spark 1.6 支持、弃用 Elasticsearch 1;升级前需核对 Spark 与 ES 两侧的兼容性。
Q5:存量环境的最低依赖组合是什么? JDK 8 + Spark 2.0.2(Hadoop 2.6 谱系,Hadoop 2.6.5 仅在需要 YARN/HDFS 时必需)+ PostgreSQL 9.1 / MySQL 5.1 / HBase 0.98.5 之一 + Elasticsearch 1.7.6。
Q6:单机部署有什么资源与模式要求? 官方建议单机至少 2GB 内存;Linux 上 Spark local 模式可能不工作,需改用 standalone cluster 模式。
Q7:官网和文档还能访问吗? 能。https://predictionio.apache.org 仍在,顶部横幅提示项目已退役并指向 Attic 页面;架构文档、安装要求与模板画廊均为存档内容,可作为存量维护的权威参考。
Q8:事件数据存在哪里? Event Server 把导入的事件存入 Apache HBase;小数据量场景可改用 JDBC 数据库(配合 4.1 节的 PostgreSQL 9.1 / MySQL 5.1 要求选择)。元数据(模型版本、引擎版本、access key 与 app ID 映射、评估结果等)则存于 Elasticsearch。
参考链接
- Attic 项目页(时间线权威来源):https://attic.apache.org/projects/predictionio.html
- 官网存档站:https://predictionio.apache.org/
- 系统架构文档(存档):https://predictionio.apache.org/system/
- 模板画廊(存档):https://predictionio.apache.org/gallery/template-gallery
- 安装与依赖要求(存档):https://predictionio.apache.org/install/
- 发行物归档(0.12.1 / 0.13.0 / 0.14.0):https://archive.apache.org/dist/predictionio/
- GitHub 仓库(2021-05-12 起归档只读):https://github.com/apache/predictionio