本次使用linux环境,python 3.7.0 ,airflow 2.2.3,mysql-5.7.37
1.安装python
#安装wget命令
yum -y install wget
# wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
#解压
tar xzvf Python-3.7.0.tgz
cd Python-3.7.0
./configure --with-ssl --prefix=/service/python3 --with-ssl
make
make install
如果遇到报错
ModuleNotFoundError: No module named '_ctypes'
解决办法
yum install libffi-devel -y
然后在
make install
#制作新的指向Python3的软连接
ln -s /service/python3/bin/python3 /usr/bin/python -f
#建立pip的软连接
ln -s /service/python3//bin/pip3 /usr/bin/pip -f
#查看Python版本
python -V
#检测pip版本
pip -V
#升级pip
pip install --upgrade pip
检查 yum 是否为2.7
vim /usr/bin/yum
如果第一行为
#!/usr/bin/python
就修改为下
#!/usr/bin/python2.7
2安装airflow
#设置临时环境变量
export SLUGIFY_USES_TEXT_UNIDECODE=yes
#添加编辑环境变量
vi /etc/profile
#在最后添加以下内容:
export PS1="[\u@\h \w]\$ "
#Python环境变量
export PYTHON_HOME=/service/python3
export PATH=$PATH:$PYTHON_HOME/bin
#Airflow环境变量
export AIRFLOW_HOME=/root/airflow
export SITE_AIRFLOW_HOME=/service/python3/lib/python3.7/site-packages/airflow
export PATH=$PATH:$SITE_AIRFLOW_HOME/bin
#生效环境变量
source /etc/profile
#安装apache-airflow并且指定2.2.3版本
pip install apache-airflow===2.2.3
#为airflow安装mysql模块
pip install 'apache-airflow[mysql]'
安装所需插件
yum -y install mysql-devel
pip install mysqlclient
pip install pymysql
pip install cryptography
创建airflow登陆用户
airflow users create \
--username root \
--firstname sam \
--lastname sam \
--role Admin \
--email 123456@qq.com
输入两次密码
airflow webserver --port 8080 -D 启动web服务
airflow scheduler -D 启动scheduler
安装到这里你可以在浏览器通过localhost:8080打开页面了
3安装mysql
下载地址:
https://dev.mysql.com/downloads/mysql/5.7.html#downloads
上传到服务器后解压
tar -xvf mysql-5.7.37-el7-x86_64.tar.gz
移动并重命名一下
mv mysql-5.7.37-el7-x86_64 /usr/local/mysql
创建mysql用户组和用户并修改权限
groupadd mysql
useradd -r -g mysql mysql
创建数据目录并赋予权限
mkdir -p /data/mysql #创建目录
chown mysql:mysql -R /data/mysql #赋予权限
配置my.cnf 没有就新建
vim /etc/my.cnf
内容如下
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
初始化数据库
进入mysql的bin目录
cd /usr/local/mysql/bin/
初始化
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize
查看密码 并记录密码
cat /data/mysql/mysql.err
启动mysql,并更改root 密码
先将mysql.server放置到/etc/init.d/mysql中
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
启动!!!
service mysql start
ps -ef|grep mysql
到这里说明mysql已经安装成功了!!
下面修改密码
首先登录mysql,前面的那个是随机生成的。
./mysql -u root -p #bin目录下
输入新密码
再执行下面三步操作,然后重新登录。
SET PASSWORD = PASSWORD('123456');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
FLUSH PRIVILEGES;
为了能从外部访问 继续设置
use mysql #访问mysql库
update user set host = '%' where user = 'root'; #使root能再任何host访问
FLUSH PRIVILEGES; #刷新
不希望每次都到bin目录下使用mysql命令则执行以下命令
ln -s /usr/local/mysql/bin/mysql /usr/bin
如果启动报错 记得去看下 mysql.err 日志 我遇到过一次是端口被占用,kill 掉占用的端口重启正常。
Starting MySQL. ERROR! The server quit without updating PID file (/data/mysql/mysql.pid).
4把airflow默认数据库替换为mysql
登陆MySQL、创建数据库、创建用户密码、更新策略
mysql> create database airflow;
mysql> GRANT all privileges on airflow.* TO 'airflow'@'%' IDENTIFIED BY '123456';
mysql> FLUSH PRIVILEGES;
设置MySQL对null的处理
mysql> set explicit_defaults_for_timestamp = 1;
对airflow配置文件(airflow.cfg)的设置
我的是在 /root/airflow/airflow.cfg
#打开你安装airflow的文件夹
vim /root/airflow/airflow.cfg
#设置两个属性
executor = LocalExecutor
sql_alchemy_conn = mysql+mysqlconnector://airflow:123456@localhost:3306/airflow
#这里可以设置时区为上海
default_timezone = Asia/Shanghai
#这里可以设置页面默认时区为上海
default_ui_timezone = Asia/Shanghai
为了airflow可以顺利重启把运行的进程全部 kill
ps aux |grep airflow 查询airflow运行
#数据库加载
airflow db init
#启动web服务
airflow webserver --port 8080 -D
airflow scheduler -D
到这里你的mysql也替换完成了,你可以使用新创建的用户 查看表,会发现airflow自动创建了很多表。
欢迎留言探讨!!!!谢谢!!!!!