You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置带HDFS存储的MLflow追踪服务器时遇hadoop文件未找到错误

问题:MLflow记录模型到HDFS时提示找不到hadoop命令

我正在搭建带有HDFS artifact store的MLflow追踪服务器,但在Jupyter Notebook中尝试将模型记录到HDFS时,收到如下错误:

File /usr/lib/python3.10/subprocess.py:1845, in Popen._execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, gid, gids, uid, umask, start_new_session)
   1843     if errno_num != 0:
   1844         err_msg = os.strerror(errno_num)
-> 1845     raise child_exception_type(errno_num, err_msg, err_filename)
   1846 raise child_exception_type(err_msg)

FileNotFoundError: [Errno 2] No such file or directory: 'hadoop'

我已安装并配置了Hadoop,认为相关环境变量设置正确,如下所示:

export PATH="/home/auto/miniconda/bin:$PATH"

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

export HADOOP_HOME=/home/auto/hadoop-3.3.4

export HADOOP_INSTALL=$HADOOP_HOME

export HADOOP_MAPRED_HOME=$HADOOP_HOME

export HADOOP_COMMON_HOME=$HADOOP_HOME

export HADOOP_HDFS_HOME=$HADOOP_HOME

export YARN_HOME=$HADOOP_HOME

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

补充:Jupyter使用的环境变量如下:

SHELL=/bin/bash
SESSION_MANAGER=local/auto-virtual-machine:@/tmp/.ICE-unix/1684,unix/auto-virtual-machine:/tmp/.ICE-unix/1684
QT_ACCESSIBILITY=1
COLORTERM=truecolor
XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg
SSH_AGENT_LAUNCHER=gnome-keyring
XDG_MENU_PREFIX=gnome-
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
GNOME_SHELL_SESSION_MODE=ubuntu
SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
XMODIFIERS=@im=ibus
DESKTOP_SESSION=ubuntu
GTK_MODULES=gail:atk-bridge
DBUS_STARTER_BUS_TYPE=session
PWD=/home/auto/test
LOGNAME=auto
XDG_SESSION_DESKTOP=ubuntu
XDG_SESSION_TYPE=wayland
JPY_SESSION_NAME=MLflow Live Demo.ipynb
SYSTEMD_EXEC_PID=1684
_=/usr/bin/env
XAUTHORITY=/run/user/1000/.mutter-Xwaylandauth.6CXZW1
HOME=/home/auto
USERNAME=auto
IM_CONFIG_PHASE=1
LANG=en_US.UTF-8
XDG_CURRENT_DESKTOP=ubuntu:GNOME
VTE_VERSION=6800
WAYLAND_DISPLAY=wayland-0
GNOME_TERMINAL_SCREEN=/org/gnome/Terminal/screen/534f59fb_c9a6_456a_a38d_0f37b80cf726
CLICOLOR=1
GNOME_SETUP_DISPLAY=:1
JPY_PARENT_PID=15426
KMP_DUPLICATE_LIB_OK=True
KMP_INIT_AT_FORK=FALSE
XDG_SESSION_CLASS=user
TERM=xterm-color
USER=auto
GIT_PAGER=cat
GNOME_TERMINAL_SERVICE=:1.188
DISPLAY=:0
SHLVL=0
PAGER=cat
QT_IM_MODULE=ibus
DBUS_STARTER_ADDRESS=unix:path=/run/user/1000/bus,guid=abe24557a2edb707c37a5e24639b3f1d
MPLBACKEND=module://matplotlib_inline.backend_inline
XDG_RUNTIME_DIR=/run/user/1000
XDG_DATA_DIRS=/usr/share/ubuntu:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin
GDMSESSION=ubuntu
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus,guid=abe24557a2edb707c37a5e24639b3f1d

问题原因及解决方法

原因

对比你设置的Hadoop环境变量和Jupyter实际使用的环境变量,能看到Jupyter的PATH里没有包含$HADOOP_HOME/bin和$HADOOP_HOME/sbin路径,导致系统找不到hadoop命令。这一般是因为你在终端中设置的环境变量仅对当前终端会话生效,而Jupyter是通过桌面环境启动的,没有继承这些变量。

解决方法

  • 持久化环境变量:把Hadoop的环境变量配置写入~/.bashrc或~/.profile文件中,执行source ~/.bashrc(bash终端)后重新启动Jupyter Notebook,或者直接重启系统。
  • 在Jupyter中临时设置:在Notebook代码开头添加以下代码,手动注入Hadoop相关环境变量:
    import os
    os.environ['HADOOP_HOME'] = '/home/auto/hadoop-3.3.4'
    os.environ['PATH'] += ':/home/auto/hadoop-3.3.4/bin:/home/auto/hadoop-3.3.4/sbin'
    
  • 从终端启动Jupyter:在已经配置好Hadoop环境变量的终端中执行jupyter notebook命令,让Jupyter继承终端的环境变量。

内容的提问来源于stack exchange,提问作者Mohamed Naji

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 06:45:36