版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)
1.1 基础安装
1.1.1 默认自带python2环境,自行安装pip
sudo yum -y install python-pip
使用bigdata用户安装,需要加sudo,否则会出现Permission denied
1.1.2 进行pip的更新,否则后续很多安装会报错
sudo pip install --upgrade pip
sudo pip install --upgrade setuptools
1.1.3 安装开发库
sudo yum install python-devel
sudo yum install libevent-devel
sudo yum install mysql-devel
1.1.4 安装mysql,作为airflow的元数据库(已安装,跳过)
yum -y install mariadb mariadb-server
启动并设置开机启动
systemctl start mariadb
systemctl enable mariadb
1.1.5 初始化配置mysql(已安装,跳过)
注:可以设定允许root远程登录,并且删除test和None用户,这样才能使得mysql允许远程登录
mysql_secure_installation
1.1.6 安装airflow
export SLUGIFY_USES_TEXT_UNIDECODE=yes
sudo pip install apache-airflow
(对方服务器不稳定,需要不断尝试)
默认安装到了~/airflow目录
1.1.7 初始化airflow并启动
airflow initdb
airflow web server -p 8080
1.1.8 防止密码明文存储
sudo pip install cryptography
参考:http://airflow.apache.org/howto/secure-connections.html
1.1.9 在本地写日志
vi airflow.cfg
base_log_folder
http://airflow.apache.org/howto/write-logs.html
远程日志记录
1.2 airflow mysql 安装
airflow数据库后端存储元数据,建议使用MySQL或Postgres(这里选择mysql)
1.2.1 安装airflow-mysql
pip install apache-airflow[mysql] —user
1.2.2 创建airflow用户,创建airflow数据库并给出所有权限给次用户
#创建库表和用户
create database airflow default charset utf8mb4 collate utf8mb4_general_ci;
create user airflow@'%' identified by 'airflow';
grant all on airflow.* to airflow@'%';
flush privileges;
1.2.3 修改airflow配置文件,指向数据库mysql
首次执行airflow命令时,会在$AIRFLOW_HOME下面创建airflow的配置文件airflow.cfg。
配置元数据库
vi /home/bigdata/airflow/airflow.cfg
快速查找 /
sql_alchemy_conn = mysql://airflow:[email protected]:3306/airflow
注:这里mysql在01节点,airflow装在02节点
1.2.4 修改配置文件添加参数,之后初始化数据库
vim /etc/my.cnf
[mysqld]
explicit_defaults_for_timestamp=1 // 添加此行 =1和=true是一样的
初始化数据库后端参考:http://airflow.apache.org/howto/initialize-database.html
修改后,重启mysql服务器
service mysqld restart
参考:http://airflow.apache.org/faq.html
初始化元数据库连接(默认sqlite)
airflow initdb
启动web服务(不指定端口时默认端口:8080)
airflow webserver -p 8080
airfow webserver -D
如果你想把 airflow 作为一个守护进程在后台运行,那么可以在后面添加参数 -d 。
airflow webserver --debug &
启动scheduler
airflow scheduler
访问验证&多用户登录
airflow.cfg
authenticate = True
auth_backend = airflow.contrib.auth.backends.password_auth
filter_by_owner = True
增加一个用户(在airflow所在服务器的python下运行)
import airflow
from airflow import models, settings
from airflow.contrib.auth.backends.password_auth import PasswordUser
user = PasswordUser(models.User())
user.username = 'airflow'
user.email = '[email protected]'
user.password = 'airflow'
session = settings.Session()
session.add(user)
session.commit()
session.close()
exit()
更多
清空元数据库
airflow resetdb
关闭webserver
每次修改完airflow.cfg都要重启airflow
每次新增DAG也需要重启airflow,不然找不到新的DAG
关闭webserver:
ps -ef|grep -Ei '(airflow-webserver)'| grep master | awk '{print $2}'|xargs -i kill {}