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
这是一个环境变量问题。我通过重新导出气流运算符中的所有变量来解决。
我目前正在使用气流及其调度程序。我正在尝试使用 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
这是一个环境变量问题。我通过重新导出气流运算符中的所有变量来解决。