背景:因为用的是Mac的M芯片的电脑,安装很多东西都经常报错,最近在研究怎么把大数据集群上的crontab下的任务都配置到一个可视化工具中,发现airflow好像是个不错的选择,然后就研究怎么先安装使用起来,后面再做优化
一、安装conda环境
因为我本地已经安装了anaconda,所以这里可以直接使用试试,有问题再说
网上好多说安装miniconda的
二、安装airflow
我是直接使用pip命令安装的,命令如下;
pip install airflow
三、初始化airflow数据库
注意:airflow默认走配置文件的sqllite数据库,后面为了以后维护方便,我们再改成MySQL数据库
airflow db init
四、查看airflow的版本
airflow version
在上面的操作步骤上可以看到airflow的安装路径,我的是/Users/wuzhanxi/airflow
五、启动airflow web服务,启动后浏览器访问http://localhost:8080
启动命令:
airflow webserver -p 8080 -D
打开浏览器,账户密码后面我们会设置
### 六、启动airflow调度
启动命令:
airflow scheduler -D
七、创建airflow的账号、密码
airflow users create \
--username admin \
--firstname wzx \
--lastname wzx \
--role Admin \
--email 450275861@qq.com
八、然后我们先停止airflow进程
查看进程开始我用的下面的这个命令,发现打印出来一堆东西,很不好看,所以后面又搜了其他的方式
ps -ef|grep airflow
下面的命令更合理一些,查看进程
ps -ef|egrep 'scheduler|airflow-webserver'|grep -v grep|awk '{print $2}'
全部杀掉进程:
ps -ef|egrep 'scheduler|airflow-webserver'|grep -v grep|awk '{print $2}'|xargs kill -15
九、修改airflow连接的数据库为MySQL
第一步:在MySQL中创建airflow的数据库
第二步:安装Python连接MySQL的依赖、驱动
pip install mysql-connector-python
第三步:修改airflow的配置文件
文件位置:/Users/wuzhanxi/airflow下的airflow.cfg
找到database,然后往下滑,将连接数据库的配置文件改成你连接MySQL的配置文件
由于配置文件中内容较多,可以用./database进行搜索
[database]
# Path to the ``alembic.ini`` file. You can either provide the file path relative
# to the Airflow home directory or the absolute path if it is located elsewhere.
#
# Variable: AIRFLOW__DATABASE__ALEMBIC_INI_FILE_PATH
#
alembic_ini_file_path = alembic.ini
# The SqlAlchemy connection string to the metadata database.
# SqlAlchemy supports many different database engines.
# More information here:
# http://airflow.apache.org/docs/apache-airflow/stable/howto/set-up-database.html#database-uri
#
# Variable: AIRFLOW__DATABASE__SQL_ALCHEMY_CONN
#原来的配置文件如下
#sql_alchemy_conn = sqlite:////Users/wuzhanxi/airflow/airflow.db
sql_alchemy_conn = mysql+mysqlconnector://root:Wwzx152103@localhost:3306/airflow
配置文件:airflow.cfg
### 十、然后重启,重新创建账户、密码
这样这些基本配置信息都存入到咱们自己的MySQL中来了,后面维护起来就比较方便了
十一、修改执行器,官网不推荐在开发中使用顺序执行器,会造成任务调度阻塞。
还是修改刚才的配置文件,找到core
[core]
# The executor class that airflow should use. Choices include
# ``SequentialExecutor``, ``LocalExecutor``, ``CeleryExecutor``, ``DaskExecutor``,
# ``KubernetesExecutor``, ``CeleryKubernetesExecutor`` or the
# full import path to the class when using a custom executor.
executor = LocalExecutor