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

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

我目前正在使用气流及其调度程序。我正在尝试使用 systemd 来正确管理网络服务器和调度程序这两个进程。但是,当使用 systemd(systemctl 命令)启动调度程序时,它在我的 dags 日志中出现此错误“FileNotFoundError:[Errno 2] 没有这样的文件或目录:'hadoop'”,如果我从命令行启动我的调度程序,一切正常很好(通过在终端中输入 airflow scheduler)。我想要做的是使用 subprocess.Popen 到 运行 Hadoop 命令。我只是想知道问题是什么。

这是我的 .service 文件

[Unit]
Description=Airflow scheduler daemon
After=network.target postgresql.service
Wants=postgresql.service

[Service]
EnvironmentFile=/root/.bashrc
User=root
Group=root
Type=simple
ExecStart=/bin/bash -c 'airflow scheduler'
Restart=always
RestartSec=5s

[Install]
WantedBy=multi-user.target

最有可能的问题是您没有设置相同的变量。 运行 可能是你的 PATH 变量没有设置好。

当您打开交互式 bash 会话时,通常会获取更多文件 - 很可能您的路径设置在 /etc/profile 中(但它可能在其他地方)。

https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html

这是一个环境变量问题。我通过重新导出气流运算符中的所有变量来解决。