Ubuntu 22.04 安装 Apache Mahout 14.1 指南

Ubuntu 22.04 安装 Apache Mahout 14.1(Java 可扩展机器学习库)指南:JDK 11/8 双版本环境准备、14.x 版本选型对照、官方二进制发行包与源码 Maven 构建两种方案、SHA1 校验、环境变量配置与卸载,全程实测。

Apache MahoutApache Mahout2026/10/12

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 环境。

八、注意事项

⚠️ 注意:

  1. Mahout 14.x 为当前维护主线,0.x 已进入维护收尾;新项目优先 14.x。
  2. 安装 JDK 阶段若出现 dpkg postinst 报错,先确认 java -version 是否正常(见 Q1),多数情况软件已可用。
  3. chmod 环境变量脚本前必须确认脚本文件已创建。
  4. 纯本地跑 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/