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 PredictionIOPredictionIOApacheJava机器学习Spark2026/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-12GitHub 仓库归档为只读(仓库横幅原文:"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:实时应答 + 后台周期重训)

分步说明:

  1. 事件采集:各端经 REST Event API 把事件写入 Event Server(存 HBase,或小数据量用 JDBC);
  2. 模板定制:从模板画廊选取合适类别的模板,按业务数据定制 DASE 四组件;
  3. 模型训练:pio 启动训练,Spark / MLlib 完成数据准备与算法执行,产出模型;
  4. 服务部署:pio deploy 把引擎部署为在线服务,业务系统开始实时查询;
  5. 持续迭代: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 Kit8硬性要求(自 0.9.6 起即为 hard requirement)
Apache Spark2.0.2(for Hadoop 2.6)训练与部分服役环节的计算引擎
Apache Hadoop2.6.5可选——仅在需要 YARN 与 HDFS 时必需
事件/元数据存储PostgreSQL 9.1 或 MySQL 5.1 或 Apache HBase 0.98.5按原部署形态选择其一
Elasticsearch1.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。

参考链接