Ubuntu 22.04 安装 Apache Mahout 14.1 指南
Ubuntu 22.04 安装 Apache Mahout 14.1(Java 可扩展机器学习库)指南:JDK 11/8 双版本环境准备、14.x 版本选型对照、官方二进制发行包与源码 Maven 构建两种方案、SHA1 校验、环境变量配置与卸载,全程实测。
Ubuntu 22.04 安装 Apache Mahout 14.1 指南
目标:在 Ubuntu 22.04 服务器上完成 Apache Mahout 14.1(Java 可扩展机器学习库)的安装与验证。本文给出 JDK 11/8 双版本环境准备、14.x 版本选型对照、官方二进制发行包与源码 Maven 构建两种安装方案,以及环境变量配置、验证与卸载方式。JDK/Maven 版本回显、发行包下载与 SHA1 校验结果均在 Ubuntu 22.04 + JDK 11/8 环境实测;其余步骤命令回显未在本环境采集处均以 ⚠️ 标注,请以目标服务器实际输出为准。
一、环境信息
- 操作系统:Ubuntu 22.04 LTS(jammy)
- 架构:x86_64
- Java:OpenJDK 11.0.32.1(默认运行时
java-11-openjdk-amd64);OpenJDK 8u504(java-8-openjdk-amd64,提供编译用 javac) - 构建工具:Apache Maven 3.6.3(Ubuntu 官方源,
/usr/share/maven) - Mahout 版本:14.1(
apache-mahout-distribution-14.1.tar.gz,约 22M) - 安装目录:
/opt/mahout - 环境变量脚本:
/etc/profile.d/mahout.sh - 演示账号:root(Mahout 为库形态组件,无内置管理账号与密码,不涉及凭据配置)
💡 说明:Apache Mahout 以「Java 库(mahout-math 等 jar)+ 命令行脚本(bin/mahout)」形态提供,无独立守护进程与服务端口。所谓「安装」本质是准备好 JDK 环境、把发行包解压到
/opt/mahout并配置MAHOUT_HOME。
二、前置条件
2.1 更新软件源
sudo apt-get update
2.2 安装 JDK 与 Maven
Mahout 14.1 兼容 Java 8 与 Java 11。本环境安装组合为 openjdk-11-jre-headless(默认运行时)+ openjdk-8-jdk-headless(提供编译用 javac),并安装 Maven:
sudo apt-get install -y openjdk-11-jre-headless openjdk-8-jdk-headless maven wget unzip
实测安装过程出现 dpkg 报错(openjdk-11-jre-headless 的 postinst 阶段),但随后验证 java -version 正常:
Errors were encountered while processing:
openjdk-11-jre-headless:amd64
E: Sub-process /usr/bin/dpkg returned an error code (1)
该错误为包安装后置脚本执行异常,软件本身已可用,处理方法见「九、常见问题」Q1。
2.3 验证 JDK 与 Maven
java -version
mvn -version
实测回显:
openjdk version "11.0.32.1" 2026-08-18
OpenJDK Runtime Environment (build 11.0.32.1+1-post-1ubuntu1-22.04-Ubuntu)
OpenJDK 64-Bit Server VM (build 11.0.32.1+1-post-1ubuntu1-22.04-Ubuntu, mixed mode)
Apache Maven 3.6.3
Maven home: /usr/share/maven
Java version: 11.0.32.1, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64
Default locale: en_US, platform encoding: ANSI_X3.4-1968
查看已注册的 Java 备选版本:
update-java-alternatives -l
实测回显:
default-java
java-1.11.0-openjdk-amd64
java-1.8.0-openjdk-amd64
java-11-openjdk-amd64
java-8-openjdk-amd64
确认已安装的 openjdk 包:
dpkg -l | grep openjdk
实测回显:
openjdk-11-jre-headless:amd64 11.0.32.1+1-1ubuntu1~22.04
openjdk-8-jdk-headless:amd64 8u504-ga-1ubuntu1~22.04.3
openjdk-8-jre-headless:amd64 8u504-ga-1ubuntu1~22.04.3
⚠️ 注意:
mvn -version中Java version为 11.0.32.1,表示 Maven 正在使用默认 JDK 11。若需切换到 JDK 8(例如使用其 javac 编译),执行:sudo update-java-alternatives --set java-1.8.0-openjdk-amd64实测 JDK 8 回显:
openjdk version "1.8.0_504" OpenJDK Runtime Environment (build 1.8.0_504-8u504-ga-1ubuntu1~22.04.3-b01) OpenJDK 64-Bit Server VM (build 25.504-b01, mixed mode)
三、版本选型说明
Mahout 存在 0.x 与 14.x 两条主线:
| 版本系列 | 形态 | 运行 JDK | 适用场景 | 结论 |
|---|---|---|---|---|
| 0.14.0 及更早 0.x | 与 Hadoop MapReduce 生态深度耦合的旧主线 | JDK 8 | 存量 Hadoop 集群迁移 | 老生态用 |
| 14.0 / 14.1 | 新主线:mahout-math 独立库 + bin/mahout 脚本 | JDK 8+(构建于 JDK 11) | 新项目、独立 ML 应用 | 推荐 |
| 更新的 14.x | 同 14.1 形态 | JDK 8+ | 追求更新版本 | 按需选用 |
最新主线版本可通过 Apache 官方下载目录探测(本环境未采集该命令回显,输出以实际为准):
wget -q -O /tmp/mahout_versions.html https://downloads.apache.org/mahout/
grep -oE 'href="[0-9]+\.[0-9]+/' /tmp/mahout_versions.html | sed 's/href="//; s#/##' | sort -V | uniq
💡 版本选择建议:新部署默认选 14.x 主线(本文实测 14.1);仅当需兼容老 Hadoop 生态时才考虑 0.14.0。14.1 提供二进制发行包(约 22M),无需编译、解压即用。
四、方案 A:官方二进制发行包安装(推荐)
4.1 下载发行包
mkdir -p /opt/mahout
cd /opt/mahout
wget -q https://archive.apache.org/dist/mahout/14.1/apache-mahout-distribution-14.1.tar.gz
ls -lh apache-mahout-distribution-14.1.tar.gz
实测回显(下载完成后文件列表):
-rw-r--r-- 1 root root 22M Oct 11 16:25 apache-mahout-distribution-14.1.tar.gz
⚠️ 说明:wget 下载进度条回显未在本环境采集;
downloads.apache.org仅保留最新版,14.1 归档路径为https://archive.apache.org/dist/mahout/14.1/。
4.2 校验 SHA1
sha1sum apache-mahout-distribution-14.1.tar.gz
实测回显:
16903ff17b1a4014f0dd8a931907bf98898cf28e apache-mahout-distribution-14.1.tar.gz
4.3 解压并重命名
tar -xzf apache-mahout-distribution-14.1.tar.gz
ls -d apache-mahout-distribution-* # 先确认实际解压目录名
mv apache-mahout-distribution-14.1 /opt/mahout
⚠️ 说明:
mv的源目录名以ls -d apache-mahout-distribution-*的实际输出为准。本环境实测中直接执行mv apache-mahout-distribution-14.1 /opt/mahout报错(见「九、常见问题」Q2),原因是解压目录名与命令中写死的预期名不一致。
4.4 配置环境变量
cat > /etc/profile.d/mahout.sh <<'EOF'
export MAHOUT_HOME=/opt/mahout
export PATH=$MAHOUT_HOME/bin:$PATH
EOF
chmod +x /etc/profile.d/mahout.sh
source /etc/profile
⚠️ 说明:
chmod必须在脚本文件创建之后执行。本环境实测中曾出现先执行 chmod 导致的报错(见「九、常见问题」Q3)。
4.5 验证安装
echo $MAHOUT_HOME
which mahout
mahout --help
⚠️ 说明:
mahout --help的回显未在本环境采集。bin/mahout为启动脚本,首次执行会打印子命令帮助列表(工具清单见《Apache Mahout 14.1 常用工具与 API 详解》篇),输出以目标服务器实际为准。
五、方案 B:源码 Maven 构建安装(备用 / 离线定制)
5.1 下载源码包
cd /opt/mahout
wget -q https://archive.apache.org/dist/mahout/14.1/apache-mahout-distribution-14.1-src.tar.gz
tar -xzf apache-mahout-distribution-14.1-src.tar.gz
ls -d apache-mahout-distribution-14.1-src*
⚠️ 说明:源码包下载与解压回显未在本环境采集。
5.2 Maven 构建
cd <源码解压目录名>
mvn -q -DskipTests install
⚠️ 说明:
<源码解压目录名>以 5.1 中ls -d输出的实际目录名为准(取值方法:解压后执行ls -d apache-mahout-distribution-14.1-src*)。构建输出未在本环境采集,成功后各模块 jar 与bin/mahout脚本生成于各模块 target 目录。
5.3 配置与验证
同「四、方案 A」4.4/4.5:创建 /etc/profile.d/mahout.sh 配置环境变量,并执行 mahout --help 验证。
六、对比与选择建议
| 维度 | 方案 A:官方二进制发行包 | 方案 B:源码 Maven 构建 |
|---|---|---|
| 版本 | 14.1(官方预构建发行包) | 14.1 源码(自编译) |
| 是否需要联网 | 需要(下载 22M 发行包) | 需要(源码包 + Maven 依赖全量下载) |
| 安装方式 | 解压即用 | mvn install 全量编译 |
| 耗时 | 分钟级 | 依赖下载加编译,明显更久 |
| 适用场景 | 生产默认首选 | 需修改源码、裁剪依赖或审计源码 |
| 缺点 | 无法定制 | 需要完整 JDK 与 Maven 构建环境 |
💡 选择建议:生产环境直接选用方案 A;需要对 mahout-math 做定制、裁剪或审计源码时用方案 B。
七、配置说明
MAHOUT_HOME=/opt/mahout:发行包根目录(含bin/mahout脚本与各 jar)。PATH追加$MAHOUT_HOME/bin,使mahout命令全局可用。JAVA_HOME:默认 JDK 11(/usr/lib/jvm/java-11-openjdk-amd64);编译场景可用 JDK 8 的 javac(java-8-openjdk-amd64)。- JVM 内存:通过
MAHOUT_JAVA_OPTS控制(如-Xms256m -Xmx512m),详见《Apache Mahout 14.1 配置参数详解》篇 5.2。 - 日志:发行包
conf/log4j.properties控制日志级别与输出目标。 - Hadoop 集成:Mahout 14.1 的 mahout-math 纯本地即可运行,无需 Hadoop;仅在使用
bin/mahout的算法子命令(kmeans、naivebayes 等)时才需要 Hadoop 环境。
八、注意事项
⚠️ 注意:
- Mahout 14.x 为当前维护主线,0.x 已进入维护收尾;新项目优先 14.x。
- 安装 JDK 阶段若出现 dpkg postinst 报错,先确认
java -version是否正常(见 Q1),多数情况软件已可用。chmod环境变量脚本前必须确认脚本文件已创建。- 纯本地跑 mahout-math Java API 无需 Hadoop;需要使用
bin/mahout算法子命令时按需搭建 Hadoop。
九、常见问题
Q1:apt-get install 报 Errors were encountered while processing: openjdk-11-jre-headless?
错误回显:
Errors were encountered while processing:
openjdk-11-jre-headless:amd64
E: Sub-process /usr/bin/dpkg returned an error code (1)
原因:openjdk-11-jre-headless 包安装后置(postinst)脚本执行失败,属包管理器常见临时故障,包本体已安装。验证方式:java -version 正常输出 11.0.32.1 即可继续使用。修复命令(⚠️ 本环境未复测,按标准流程给出):
sudo dpkg --configure -a
sudo apt-get install -f
Q2:mv apache-mahout-distribution-14.1 /opt/mahout 报 cannot stat?
错误回显:
mv: cannot stat 'apache-mahout-distribution-14.1': No such file or directory
原因:解压后的实际目录名与命令中写死的目录名不一致(未先确认即重命名)。解决:先执行 ls -d apache-mahout-distribution-* 查看实际目录名,再以该名称作为 mv 的源参数。
Q3:chmod +x /etc/profile.d/mahout.sh 报 cannot access?
错误回显:
chmod: cannot access '/etc/profile.d/mahout.sh': No such file or directory
原因:脚本文件尚未创建即执行了 chmod(步骤顺序颠倒)。解决:先执行 4.4 的 cat > /etc/profile.d/mahout.sh <<'EOF' 创建脚本,再执行 chmod +x。
Q4:JDK 8 与 JDK 11 如何选择?
Mahout 14.1 两者均可(本环境默认 JDK 11.0.32.1,并预装 JDK 8u504)。默认运行时用 11;需要使用 javac 编译时切到 java-8-openjdk-amd64(sudo update-java-alternatives --set java-1.8.0-openjdk-amd64)。
Q5:downloads.apache.org 下载慢或无法访问?
14.1 属非最新版本,官方归档在 https://archive.apache.org/dist/mahout/14.1/;也可使用 Apache 镜像站同路径下载,或从内网软件源分发发行包。
十、卸载方式
rm -rf /opt/mahout
rm -f /etc/profile.d/mahout.sh
若同时移除 JDK 与 Maven:
sudo apt-get remove -y openjdk-11-jre-headless openjdk-8-jdk-headless openjdk-8-jre-headless maven
sudo apt-get autoremove -y
十一、参考链接
- Apache Mahout 官网:
https://mahout.apache.org/ - Mahout 版本归档目录:
https://archive.apache.org/dist/mahout/ - 当前版本探测:
https://downloads.apache.org/mahout/