大数据-Airflow(一):Docker部署Airflow

140 阅读2分钟

前置条件

  • centos7.9+

安装配置

2.1 安装docker

添加源

sudo yum -y install yum-utils
sudo yum -y install aria2
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

卸载系统之前可能安装的 docker(防止冲突)

sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

安装必须的依赖

sudo yum install -y wget device-mapper-persistent-data lvm2

安装 docker,以及 docker-cli

sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose

启动 docker

sudo systemctl start docker
sudo systemctl enable docker

2.2 安装docker-compose

安装docker-compose

sudo aria2c -d /usr/local/bin -s 4 -x 4  "https://github.com/docker/compose/releases/download/v2.32.1/docker-compose-linux-x86_64"

添加软链接

sudo mv /usr/local/bin/docker-compose-linux-x86_64 /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# 备份以前docker-compose,如果没有会报错,可忽略
sudo mv /usr/bin/docker-compose /usr/bin/docker-compose.bak
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

2.3 部署Airflow

创建并进入工作目录

/opt/module/airflow/airflow-2.10.5可修改为自己需要创建的目录

export $AIRFLOW_HOME=/opt/module/airflow/airflow-2.10.5
mkdir -p $AIRFLOW_HOME/{dags,config,logs,plugins,data}
mkdir -p $AIRFLOW_HOME/data/postgres
cd $AIRFLOW_HOME

更新docker-compose变量

这些变量和会和之后的docker-compose中的部分变量匹配,会被docker-compose读取成为默认参数

AIRFLOW_UID:默认用户id,随便写一个即可

AIRFLOW_PROJ_DIR:Airflow的目录,docker-compose会将这个目录挂载到容器中

AIRFLOW_IMAGE_NAME:Airflow的镜像版本

_AIRFLOW_WWW_USER_USERNAME:Airflow web ui用户名

_AIRFLOW_WWW_USER_PASSWORD:Airflow web ui密码

cat << EOF | tee tee .env
AIRFLOW_UID=50000
AIRFLOW_PROJ_DIR=$AIRFLOW_HOME
AIRFLOW_IMAGE_NAME=apache/airflow:2.10.5
_AIRFLOW_WWW_USER_USERNAME=xu 
_AIRFLOW_WWW_USER_PASSWORD=123456
EOF

创建docker-compose文件

aria2c -d $AIRFLOW_HOME -s 4 -x 4  "https://airflow.apache.org/docs/apache-airflow/2.10.5/docker-compose.yaml"

无法下载也可以直接使用:

docker-compose.yaml

修改配置文件

根据自己的需求修改,不修改直接使用默认配置也是可以的。

vim docker-compose.yaml
x-airflow-common:
  environment:
    AIRFLOW__CORE__LOAD_EXAMPLES: 'false' # 不加载样例数据

services:
  airflow-webserver:
    ports:
      - "18088:8080" # 将容器的8080端口映射到主机的18088端口,根据自己情况修改

  postgres:
    # 可以不修改,默认会将数据挂载到docker卷中,也可以将postgres的数据目录挂载到指定目录里面
    volumes:
      - /opt/module/airflow/airflow-2.10.5/data/postgres:/var/lib/postgresql/data

2.4 初始化Airlofw数据

注:均需在$AIRFLOW_HOME目录下运行

初始化

docker-compose up airflow-init

启动容器

docker-compose up -d

2.5 测试

登录WEB UI

2.6 停止与卸载

注:均需在$AIRFLOW_HOME目录下运行

停止

docker-compose stop

卸载

docker-compose rm