首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用conda env的apache-airflow系统文件

使用conda env的apache-airflow系统文件
EN

Stack Overflow用户
提问于 2018-09-13 09:02:08
回答 3查看 2.1K关注 0票数 2

我试图使用systemd在Ubuntu16.04文件上运行apache-airflow。我大致遵循了本教程并安装/设置了以下内容:

  • Miniconda 2,64位
  • 安装gcc (sudo apt-get install gcc)
  • Conda环境,使用本教程的yml文件

在以下conda环境中:

  • 出口AIRFLOW_HOME="/home/ubuntu/airflow“

当我测试气流时,一切都很好:

代码语言:javascript
复制
airflow webserver --port 8080

但是每当我试图用一个systemd文件启动气流时,它就失败了。据我正确理解,systemd文件使用了conda环境。我的systemd文件如下:

代码语言:javascript
复制
[Unit]
Description=Airflow webserver daemon

[Service]
User=ubuntu
Group=ubuntu
Type=simple
ExecStart=/home/ubuntu/miniconda2/envs/airflow-tutorial/bin/airflow webserver --port 8080
Restart=on-failure
RestartSec=5s
PrivateTmp=true

[Install]
WantedBy=multi-user.target

启动/启用systemd守护进程时,status返回以下错误:

代码语言:javascript
复制
airflow-webserver.service - Airflow webserver daemon
   Loaded: loaded (/etc/systemd/system/airflow-webserver.service; enabled; vendor preset: enabled)
   Active: activating (auto-restart) (Result: exit-code) since Thu 2018-09-13 08:59:00 UTC; 1s ago
  Process: 18410 ExecStart=/home/ubuntu/miniconda2/envs/airflow-tutorial/bin/airflow webserver --port 8080 (code=exited, status=1/FAILURE)
 Main PID: 18410 (code=exited, status=1/FAILURE)

Sep 13 08:59:00 ip-172-31-46-255 systemd[1]: airflow-webserver.service: Main process exited, code=exited, status=1/FAILURE
Sep 13 08:59:00 ip-172-31-46-255 systemd[1]: airflow-webserver.service: Unit entered failed state.
Sep 13 08:59:00 ip-172-31-46-255 systemd[1]: airflow-webserver.service: Failed with result 'exit-code'.

我们非常感谢你的帮助!

EN

回答 3

Stack Overflow用户

发布于 2018-09-13 09:20:22

下面是适用于我的虚拟环境的airflow-webserver.service

代码语言:javascript
复制
[Unit]
Description=Airflow webserver daemon
After=network.target postgresql.service mysql.service redis.service rabbitmq-server.service
Wants=postgresql.service mysql.service redis.service rabbitmq-server.service

[Service]
PIDFile=/run/airflow/webserver.pid
EnvironmentFile=/etc/default/airflow
User=airflow
Group=airflow
Type=simple
ExecStart=/usr/bin/bash -c 'source /usr/local/airflow/venv/bin/activate ; airflow webserver --pid /run/airflow/webserver.pid'
Restart=on-failure
RestartSec=5s
PrivateTmp=true

[Install]
WantedBy=multi-user.target
票数 4
EN

Stack Overflow用户

发布于 2018-09-19 07:58:24

对于我来说,有一个完全不同但却容易得多的解决方案:

  1. 添加具有sudo权限的新sudo用户,例如airflow
  2. apache-airflow用户的身份在环境中安装airflow
  3. 使用:airflow webserver --port 8080 -D运行气流守护进程

这会以后台进程的形式运行气流。您只需切换回其他用户并继续创建dags,等等。

票数 0
EN

Stack Overflow用户

发布于 2020-03-28 05:49:42

由kaxil给出的回答有点为我工作!但只要稍加修改。

我安装了我的气流(使用Anaconda),并位于:

代码语言:javascript
复制
#-> whereis airflow
airflow: /root/anaconda3/bin/airflow

airflow-webserver.service文件中添加下面一行为我解决了这个问题。

代码语言:javascript
复制
ExecStart=/usr/bin/bash -c 'source /root/anaconda3/bin/activate ; airflow webserver --pid /run/airflow/webserver.pid'

在它说了Error: /run/airflow doesn't exist. Can't create pidfile.之后,我发现了另一个错误,在[Service]下添加了下面的内容也解决了这个问题

代码语言:javascript
复制
RuntimeDirectory=airflow
RuntimeDirectoryMode=0775
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52310217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档