Airflow&redis&celery分布式计算
前面几篇文档已经装好airflow,配好rest API现在需要做单步骤可调用,所以必须使用Celery Executor,否则不能单步执行1、安装redis参考Centos7下安装redisRedis网址下载文件tar -zxvf redis-4.0.11.tar.gzcd redis-4.0.11make#编译cp redis.conf src/#将配置文件复制以可执行文件同一目录cd src
前面几篇文档已经装好airflow,配好rest API
现在需要做单步骤可调用,所以必须使用Celery Executor,否则不能单步执行
1、安装redis
- 下载文件,解压启动
tar -zxvf redis-4.0.11.tar.gz
cd redis-4.0.11
make #编译
cp redis.conf src/ #将配置文件复制以可执行文件同一目录
cd src
./redis-server redis.conf
- 为了让其后台执行,修改配置文件
daemonize no
改成
daemonize yes
保存后指定redis.conf文件启动
./redis-server redis.conf
查看后台进程,看是否起了
[root@localhost src]# ps -ef|grep redis
root 36983 1 0 15:54 ? 00:00:00 ./redis-server 127.0.0.1:6379
root 37514 9409 0 15:54 pts/1 00:00:00 grep --color=auto redis
测试看看,是不是能上
- 远程连接
远程要看一下redis数据,所以需要配置远程连接。
我用的redis解压目录下的src目录内的redis.conf
修改他
找到
bind 127.0.0.1
protected-mode yes
改成
bind 0.0.0.0
protected-mode no
重启
远程windows机器上,用redis desktop Manager连接一下。应该是能连上
这样是不安全的,最好还是设置个密码
- 设置密码
继续改redis.conf,找到requirepass
requirepass 你的密码
重启服务
再次连接就变成了
./redis-cli -p 6379 -a 你的密码
2、配置 airflow.cfg
注意这三个变量分的挺远的,仔细找找
executor = CeleryExecutor
# 配置celery的broker_url (存储要执行的命令然后celery的worker去消费)
broker_url = redis://127.0.0.1:6379/0
# 配置celery的result_backend (存储任务执行状态)、 也可以用redis存储
result_backend = db+mysql://airflow:123456@www.burukeyou.com:3306/airflow?charset=utf8
3、启动
#启动webserver
#后台运行 airflow webserver -p 80 -D
airflow webserver -p 80
#启动scheduler
#后台运行 airflow scheduler -D
airflow scheduler
#启动worker
#后台运行 airflow worker -D
#如提示addres already use ,则查看 worker_log_server_port = 8793 是否被占用,如是则修改为 8974 等
#未被占用的端口
airflow celery worker
#启动flower -- 可以不启动
#后台运行 airflow flower -D
airflow celery flower
4、启动一个dag
启动的方式很多
- 1、网页上trigger
- 2、命令行方式
airflow dags trigger <dag_id>
airflow dags trigger oug_dags
- 3、REST API方式
5、启动一个task
- 运行task
airflow tasks run <dag_id> <task_id> <execution_date>
airflow tasks run oug_dags test1 '2021-05-19 10:16:00'
时间必须写,执行完后在Airflow网页上看不到执行,要到flower的tasks网页上才能看到
celery的监控页面flower:http://***:5555。执行单位是task,同一个dag的不同task可能被分配到不同的worker执行,可以从flower页面看到执行节点
- 重跑/回溯历史任务( 不知道为什么backfill会报错,用dags trigger能执行,学艺不精吧!)
airflow dags backfill <dag_id> --start-date 2015-06-01 --end-date 2015-06-07
下一节讲如果利用redis及分布式计算trigger DAGS以及执行tasks
更多推荐
所有评论(0)