美文网首页
airflow的使用

airflow的使用

作者: 安申 | 来源:发表于2021-12-02 20:28 被阅读0次

    背景:由于最近团队内部需要使用airflow调度,故使用进行一系列调度任务。记录一些在使用过程中遇到的问题

    1.启动airflow

    airflow 安装完成后,依次通过以下步骤,即可开始使用

    # 初始化数据库
    airflow initdb
    
    # 守护进程运行webserver, 默认端口为8080,也可以通过`-p`来指定端口
    airflow webserver -D  
    
    # 守护进程运行调度器,守护进程即表示后台启动
    airflow scheduler -D
    

    2.airflow常用命令

    # 测试任务,格式:airflow test dag_id task_id execution_time
    airflow test test_task test1 2019-09-10
    
    # 开始运行任务(这一步也可以在web界面点trigger按钮)
    airflow trigger_dag test_task
    
    # 守护进程运行webserver, 默认端口为8080,也可以通过`-p`来指定
    airflow webserver -D  
    
    # 守护进程运行调度器     
    airflow scheduler -D   
    
    # 守护进程运行调度器    
    airflow worker -D          
    
    # 暂停任务
    airflow pause dag_id      
    
    # 取消暂停,等同于在web管理界面打开off按钮
    airflow unpause dag_id     
    
    # 查看task列表
    airflow list_tasks dag_id  查看task列表
    
    # 清空任务状态
    airflow clear dag_id       
    
    # 运行task
    airflow run dag_id task_id execution_date
    
    #忽略依赖task运行task
    airflow run -A dag_id task_id execution_date 
    

    3.airflow webserver介绍

    参见:https://www.jianshu.com/p/cbff05e3f125

    4.ssh连接不上,一直报错 SSH operator error:No authentication available

    解析:只要看到authentication 很明显,权限问题,但是找不到到底是哪里权限有问题
    原因:airflow webServer->Admin->Connections

    • 配置一个conn,我的业务场景就是airflow会在其他服务器上调度脚本执行
    • 首先,需要airflow的机器可以ssh免密到待执行服务器
    • 其次,配置conn时可能涉及到切换到不同用户,会需要密码
    • 现在目标服务器上使用 passwd username 设置一个该用户密码
    • 然后在配置conn时将密码填入,注意:填入密码后,再阅读是看不到你填了什么的(会误以为啥也没写)
    • 是否有填入用户密码,可以通过 is Encrypetd,若该列打勾,则说明是加密过的,则表示有填入密码的,否则为一条横杠

    5.在使用SSHOperator时遇到问题

    • 命令是直接调用一个.sh脚本
    • 一直报错,但是该脚本手动是可以执行的
    • 后发现,直接调用shell脚本,"sh demo.sh ",最后需要带上一个空格才识别

    6.在使用airflow时,webServer密码忘记了,可添加新账户登录

    python
    
    import airflow
    from airflow import models, settings
    from airflow.contrib.auth.backends.password_auth import PasswordUser
    
    user = PasswordUser(models.User())
    user.username = 'usertest1'
    user.email = 'usertest1@163.com'
    user.password = 'usertest1'
    user.superuser = 1 //赋予管理员权限,如果是普通用户就不需要这个
    
    session = settings.Session()
    session.add(user)
    session.commit()
    session.close()
    exit()
    
    • 可以使用新设置的帐户密码登录,因为设置的是管理员权限,故之前所有的调度任务也都是可以看到

    相关文章

      网友评论

          本文标题:airflow的使用

          本文链接:https://www.haomeiwen.com/subject/toruxrtx.html