安装和理解等问题:
今天又再次体会到什么都木有官方文档管用
安装airflow时报错:
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-XaFsmu/apache-airflow/
原因详见:
https://airflow.apache.org/installation.html
所以安装前加一行:
export SLUGIFY_USES_TEXT_UNIDECODE=yes
然后再安装:
pip install apache-airflow
# install from pypi using pip
pip install apache-airflow
# initialize the database
airflow initdb
# start the web server, default port is 8080
airflow webserver -p 8080
# start the scheduler
airflow scheduler
Centos7防火墙开放8080端口:
firewall-cmd –zone=public –add-port=8080
/tcp –permanent
命令含义:
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
安装过程中报错:
error: command 'gcc' failed with exit status 1
解决方法:
yum install python-devel
Airflow的概念:
Operators:Airflow定义的一系列算子/操作符,更直接的理解就是python class。不同的Operator类实现了具体的功能,比如:
- BashOperator: 可以执行用户指定的一个Bash命令
- t1 = BashOperator(
task_id=’print_date’,
bash_command=’date’,
dag=dag) - PythonOperator:可以执行用户指定的一个python函数
- EmailOperator:可以进行邮件发送
- Sensor:感知器/触发器,可以定义触发条件和动作,在条件满足时执行某个动作。Airflow提供了更具体的Sensor,比如FileSensor,DatabaseSensor等
- Tasks:Operators的具体实例,在某个Operator的基础上指定了具体的参数或内容。其实就是OO概念中的对象(Operator是类)。
- Task Instances:一个Task的一次运行会产生一个实例
- DAGS:有向无环图,包括一系列的tasks和tasks之间的链接关系
使用Airflow的步骤就是定义以上概念的过程:;
- 根据实际需要,使用不同的Operator
- 传入具体的参数,定义一系列的Tasks
- 定义Tasks间的关系,形成一个DAG
- 调度DAG运行,每个Task会形成一个Instance
使用命令行或者Web UI进行查看和管理
pip install apache-airflow[celery]
安装成功之后,执行下面三步,就可以使用了。默认是使用的SequentialExecutor, 只能顺次执行任务。
- 初始化数据库 airflow initdb [必须的步骤]
- 启动web服务器 airflow webserver -p 8080 [方便可视化管理dag]
- 启动任务 airflow scheduler [scheduler启动后,DAG目录下的dags就会根据设定的时间定时启动]
- 此外我们还可以直接测试单个DAG,如测试文章末尾的DAG airflow test ct1 print_date 2016-05-14
配置airflow支持mysql数据库
1.启动mariadb:
systemctl start mariadb
2.创建数据库
CREATE DATABASE airflow;
GRANT all privileges on airflow.* TO ‘username’@’localhost’ IDENTIFIED BY ‘password’;
FLUSH PRIVILEGES;
3.修改airflow配置文件支持mysql
sql_alchemy_conn = mysql://username:password@localhost/airflow
4.初始化数据库
airflow initdb
pip install airflow[rabbitmq]
配置rabbitmq
vim删除操作:
,删除所有内容:先用G 转到文件尾,然后使用下面命令:
**:1, .d**
sql语句中的like操作符:
SELECT * FROM Persons
WHERE City LIKE 'N%'
我们希望从上面的 “Persons” 表中选取居住在以 “N” 开始的城市里的人.
IN 操作符允许我们在 WHERE 子句中规定多个值。
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)
like 使用%代表任何字符
like 使用?代表单个字符
matches使用*代表任何字符
matches使用_代表单个字符
第二次启动airflow时遇到一个问题:
Error: 'airflow.www.gunicorn_config' doesn't exist
一直没有解决
在这里理一下安装python3和pip3的方法:
http://www.cnblogs.com/wenchengxiaopenyou/p/5709218.html
网上有建议这样子解决,但是我没有成功:
执行命令
sudo pip3 install 'gunicorn==19.3.0'