环境初始化
系统选择 centos 7.4,在 thor 平台上先择的基础镜像,什么都没有安装。
使用 root 用户用 yum 工具做一些初始化安装
yum install -y wget
yum install -y screen
yum install -y gcc
yum install -y gcc-c++
yum install -y openssl-devel
yum install -y readline readline-devel
yum install -y lrzsz # rz sz 传输文件
yum install -y libxml2 libxml2-devel
yum install -y cmake
yum install -y curl curl-devel
yum install -y libpng libpng-devel
yum install -y autoconf
yum install -y net-tools # ifconfig 命令
yum install -y dos2unix
yum install -y bc
yum install -y zip
yum install -y unzip
yum install -y jq # 命令行解 json
yum install -y cloc # 统计代码行数
yum install -y dstat # 查看机器运行情况
yum install -y traceroute # traceroute 诊断网络连接情况
yum install -y expect # mkpasswd 生成随机密码
yum install -y tree
yum install -y git
yum install -y lsof # 查看端口占用情况
yum install -y p7zip # 7zip 命令是 7za
yum install -y bzip2 # 使用 tar 解压 .tar.bz2 文件
yum install -y xorg-x11-xauth
yum install -y libffi-devel
redis
分发任务可以使用 redis,需要在本机安装一个redis。
折叠源码
mkdir ~/install/
cd ~/install/
wget http://download.redis.io/releases/redis-2.8.13.tar.gz
tar xzvf redis-2.8.13.tar.gz
cd redis-2.8.13
make && make install
mkdir -p /home/rong/bin/redis/bin
mkdir -p /home/rong/bin/redis/conf
mkdir -p /home/rong/bin/redis/log
mkdir -p /home/rong/bin/redis/var
cp src/redis-benchmark /home/rong/bin/redis/bin/
cp src/redis-check-aof /home/rong/bin/redis/bin/
cp src/redis-check-dump /home/rong/bin/redis/bin/
cp src/redis-cli /home/rong/bin/redis/bin/
cp src/redis-sentinel /home/rong/bin/redis/bin/
cp src/redis-server /home/rong/bin/redis/bin/
然后再启动 reids-server 就可以。
redis-server &
mysql
airflow 依赖 mysql,先安装 mysql。
centos 会自带 mariadb,需要先卸载。
折叠源码
#找到要卸载的模块名称
rpm -qa | grep mariadb
rpm -e --nodeps mariadb-libs-5.5.65-1.el7.x86_64
# 安装库
rpm -ivh https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm
yum install -y mysql
yum install -y mysql-devel
# 安装 mysql 服务
yum -y install mysql-server
启动 mysql 服务
# 启动mysql服务
systemctl start mysqld
# 可以察看mysql运行状态
systemctl status mysqld
使用以下命令获取 mysql 的初始密码
grep 'temporary password' /var/log/mysqld.log
登录mysql,重新设置 mysql 的密码
-- 设置mysql环境变量
set global validate_password_policy=0;
set global validate_password_length=1;
-- 重新设置 root 用户的 mysql 密码
alter user 'root'@'localhost' identified by '***';
-- 初始化 airflow 需要使用的库
CREATE DATABASE airflow;
CREATE DATABASE celery_result_airflow;
-- 赋予权限
GRANT all privileges on airflow.* TO 'airflow'@'%' IDENTIFIED BY 'airflow';
GRANT all privileges on celery_result_airflow.* TO 'airflow'@'%' IDENTIFIED BY 'airflow';
FLUSH PRIVILEGES;
-- 这个一定要设置,否则会报错
set global explicit_defaults_for_timestamp =1;
以上为通用。
下面为不同版本安装
airflow 2.1.0
安装 python3
采用 python 版本 3.8.6,下载 pytyon3 源文件
mkdir ~/install
cd ~/install
# 官网的源比较慢
# wget https://www.python.org/ftp/python/3.8.6/Python-3.8.6.tgz
# 这个源比较快
wget http://npm.taobao.org/mirrors/python/3.8.6/Python-3.8.6.tgz
tar xzvf Python-3.8.6.tgz
cd Python-3.8.6
mkdir /home/rong/bin/
./configure --prefix=/home/rong/bin/python3 --with-system-ffi
make
make install
配置 环境变量到 ~/.bash_profile
# python3
export PYTHON_HOME=/home/rong/bin/python3
export PATH=$PATH:$PYTHON_HOME/bin
安装pip及依赖
# 使用 -i 指定源为腾讯云的源服务,可以加快安装速度
ln -s /home/rong/bin/python3/bin/pip3 /usr/bin/pip3
# 更新 pip
pip3 install --upgrade pip -i https://mirrors.cloud.tencent.com/pypi/simple
pip3 install mysqlclient -i https://mirrors.cloud.tencent.com/pypi/simple
pip3 install apache-airflow==2.1.0 -i https://mirrors.cloud.tencent.com/pypi/simple
pip3 install apache-airflow[mysql] -i https://mirrors.cloud.tencent.com/pypi/simple
安装配置 airflow
先配置 airflow 相关的环境配置
# 部署路径
export AIRFLOW_HOME=/home/rong/airflow
export SLUGIFY_USES_TEXT_UNIDECODE=yes
先运行初始化db命令
airflow db init
此时命令会失败,但会生成配置文件。
修改配置文件 /home/rong/airflow/airflow.cfg,变动点如下
# sql_alchemy_conn = sqlite:////home/rong/airflow/airflow.db
sql_alchemy_conn = mysql://airflow:airflow@127.0.0.1:3306/airflow
再运行 初始化db命令就可以了。
最后启动airflow
# 启动 web server
airflow webserver -p 8009
# 启动调度
airflow scheduler -D
生成一个登录用户
# 运行命令后输入登录密码
airflow users create --username admin --firstname admin --lastname admin --role Admin --email xxx
环境配置
host 配置
# 线下的airflow
192.168.xx.xx airflow_dev
访问地址 http://airflow_dev:8009/home
用户名 admin
密码 123456
# 访问mysql
mysql -uairflow -pairflow
mysql -uroot -p123456