Directrices para crear un entorno Airflow en el host

1. Ver el entorno del host

Este intercambio toma CentOS como ejemplo.

cat /etc/redhat-release

# ----output----
CentOS Linux release 7.9.2009 (Core)

2. Instale el entorno Python3.

Compruebe si el entorno Python3 ya existe; si no, instálelo

# 若不存在则使用如下命令安装
which python3	# python --version
1. Dependencias de instalación de CentOS
yum -y install zlib-devel bzip2-devel  openssl-devel ncurses-devel sqlite-devel   readline-devel tk-devel gdbm-devel db4-devel  libpcap-devel xz-devel libffi-devel gcc gcc-c++ wget make pcre pcre-devel openssl vim dos2unix crontab mysql-devel
2. Crea una carpeta correspondiente.
# 创建编译的安装目录
mkdir /usr/local/Python3.7.2  #创建编译安装目录(命名为版本比较好)

# 进入源码包解压后的文件夹
cd /usr/local/Python3.7.2
3. Descargue el código fuente de Python
# 从 Python 官网下载源码包
wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tar.xz

# 解压源码包, 准备编译
tar -xJf Python-3.7.2.tar.xz
4. Instale el código fuente de Python descargado.
# 进入源码包解压后的文件夹
cd /usr/local/Python3.7.2/Python-3.7.2

# 开始编译, 等待生成安装文件
./configure --prefix=/usr/local/Python3.7.2

# 开始安装 (如果存在 _ctypes 报错, 则安装 yum -y install libffi-devel)
make && make install

5. Configurar enlaces suaves

ln -s /usr/local/Python3.7.2/bin/python3 /usr/local/bin/python3
ln -s /usr/local/Python3.7.2/bin/pip3 /usr/local/bin/pip3

6. Verifique la versión de Python

# 验证 Python 版本
python3 -V

# 验证 pip 版本
pip3 -V

7. Actualice pip a la última versión.

pip3 install -U pip

3. Instale el servicio Docker

Compruebe si el entorno Docker ya existe, si no, instálelo

# 若不存在则使用如下命令安装
which docker	# docker --version
1. Instale algunas herramientas del sistema necesarias
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
2. Agregar información de fuente de software
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3. Actualice e instale Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
4. Inicie el servicio Docker
sudo service docker start
5. Instalación de prueba
docker version
6. Agregar agente Docker
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "registry-mirrors": [
    "https://uqvzue7x.mirror.aliyuncs.com",
    "https://k7da99jp.mirror.aliyuncs.com",
    "https://dockerhub.azk8s.cn",
    "https://registry.docker-cn.com"
  ],
  "storage-driver": "overlay2"
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker:

Cuarto, instale el contenedor mysql.

1. Construya el contenedor mysql
# 拉去镜像
docker pull mysql:8.0.29

# 运行mysql8
vim create_mysql_container.sh

#!/bin/bash
docker run -itd \
  -p 33306:3306 \
  -v /etc/localtime:/etc/localtime \
  -v /data/mysql/conf:/etc/mysql \
  -v /data/mysql/logs:/var/log/mysql \
  -v /data/mysql/data:/var/lib/mysql \
  -v /data/mysql/my.cnf:/etc/mysql/my.cnf \
  -v /data/mysql/conf.d:/etc/mysql/conf.d \
  -e MYSQL_ROOT_PASSWORD='xxx' \
  --name airflow-mysql-8 \
  mysql:8.0.29

# 构建 mysql 容器
bash create_mysql_container.sh
2. Crea un usuario
# 进入mysql容器,进入mysql
docker exec -it airflow-mysql-8  mysql -u root -p

#  —— 创建用户
create user 'airflow'@'%' identified by 'airflow';
create user 'airflow'@'localhost' identified by 'airflow';
#  —— 创建数据库
create database airflow character set utf8mb4;
#  —— 将数据库airflow的所有权限授权airflow用户
grant all on airflow.* to 'airflow'@'%';
grant all on airflow.* to 'root'@'%';
#  —— 刷新权限
flush privileges;

5. Ejecute el comando de instalación del flujo de aire.

1. Ejecute el comando de instalación del flujo de aire.
# 安装airflow 
echo "export AIRFLOW_HOME=/data/airflow" >> /root/.bashrc
source /root/.bashrc

pip3 install apache-airflow==2.3.3 --no-cache-dir

2. Resuelva el problema de que no se genera el directorio /data/airflow

Si se informa el error al ejecutar airflow: "-bash: airflow: comando no encontrado", ejecute el siguiente comando:

vim ~/.bash_profile
# 加入下行
PATH=$PATH:$HOME/bin:/usr/local/Python3.7.2/bin
# 使之生效
source ~/.bash_profile
# 执行 airflow 
airflow

3. Si se informa un error que indica que la versión de sqlite es demasiado baja (omita si usa PostgreSQL o Mysql)

Airflow se envía con un backend SQLite de forma predeterminada. Esto permite a los usuarios ejecutar Airflow sin ninguna base de datos externa. Sin embargo, dicha configuración es solo para fines de prueba; ejecutar la configuración predeterminada en producción puede provocar la pérdida de datos en varios escenarios. Si está ejecutando Airflow de nivel de producción, asegúrese de configurar el backend en una base de datos externa como PostgreSQL o MySQL.

Si se ejecuta airflow, se informa un error: airflow.exceptions.AirflowConfigException: error: versión de la biblioteca sqlite C demasiado antigua (< 3.15.0)

# 查看 sqlite3 版本
sqlite3 -version

# 若无 sqlite3,则安装 sqlite3
sudo yum install sqlite-devel

# 升级 sqlite3 版本
wget https://www.sqlite.org/2022/sqlite-autoconf-3390100.tar.gz
# 解压、编译
tar zxvf sqlite-autoconf-3390100.tar.gz
cd sqlite-autoconf-3390100
./configure --prefix=/usr/local
make && make install

# 删除旧版,替换新版
mv /usr/bin/sqlite3 /usr/bin/sqlite3_old
ln -s /usr/local/bin/sqlite3 /usr/bin/sqlite3
echo "/usr/local/lib" > /etc/ld.so.conf.d/sqlite3.conf
ldconfig

# 最后查看sqlite3的版本是否符合报错要求
sqlite3 -version

4. Modificar la configuración del flujo de aire

# 修改配置airflow.cfg
cd /data/airflow && vim airflow.cfg

# 配置数据库,这里使用了 mysql
executor = LocalExecutor

# sql_alchemy_conn = mysql+pymysql://<MySQL用户名>:<MySQL密码>@<MySQL地址>:<MySQL端口>/airflow
sql_alchemy_conn =  sql_alchemy_conn = mysql+pymysql://<MySQL用户名>:<MySQL密码>@<MySQL地址>:<MySQL端口>/airflow?charset=utf8

# 修改 webserver 地址
[webserver]
#base_url = http://{IP}:{PORT}
base_url = http://{
    
    IP}:{
    
    PORT}

# 刷新数据库配置
airflow db init/upgrade

# 创建管理员用户
airflow users create \
--username xxx \
--password xxx \
--firstname xxx \
--lastname xxx \
--role xxx \
--email xxx.com

6. Instalar dependencias de Python

vim requirements.txt

pymysql
pandas
redis
redis-py-cluster
clickhouse-driver
apache-airflow-providers-dingding
apache-airflow-providers-ssh


# 安装 python 依赖包
pip install -r requirements.txt

7. Ejecute dags de flujo de aire

1. Modifique el archivo airflow.cfg
# 存放 dag 路径
dags_folder = xxx
load_examples = False
airflow db upgrade

2. Reinicie el flujo de aire

# 停止服务
ps -ef | grep airflow | cut -c 9-15 | xargs kill -9

# 启动 Airflow webserver和scheduler
#启动web服务,默认端口8080
nohup airflow webserver >>werserver.log 2>&1 &  
#启动定时任务 
nohup airflow scheduler >>scheduler.log 2>&1 &   


nohup airflow webserver >>werserver.log 2>&1 &
nohup airflow scheduler >>scheduler.log 2>&1 &

Supongo que te gusta

Origin blog.csdn.net/TFATS/article/details/125960207
Recomendado
Clasificación