airflow+mysql搭建步骤2022年2月最新版

本文详细介绍了在Linux系统中安装Python 3.7.0、Airflow 2.2.3和MySQL 5.7.37的步骤。包括Python的下载、编译、安装及软链接创建,Airflow的环境变量设置、安装及插件配置,以及MySQL的下载、安装、初始化和权限设置。此外,还讲解了如何将Airflow的默认数据库替换为MySQL,包括创建数据库、用户、权限,并修改Airflow配置文件。最后,文章提供了在浏览器中访问Airflow Web服务的指南。

本次使用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自动创建了很多表。

欢迎留言探讨!!!!谢谢!!!!!

### Airflow与RAGFlow的集成或对比 #### 关于Airflow Apache Airflow 是一种用于数据管道编排的强大工具,它通过有向无环图 (DAG) 来定义工作流中的任务及其依赖关系[^2]。Airflow 提供了一个灵活的任务调度机制以及丰富的插件生态系统,使得复杂的数据处理流程可以被轻松管理和自动化。 #### RAGFlow简介 RAGFlow 可能指代基于检索增强生成(Retrieval-Augmented Generation, RAG)的工作流框架或者类似的自定义实现方案。这种架构通常涉及从大量文档中提取相关信息并将其输入到生成模型中以创建上下文敏感的回答。虽然具体细节可能因项目而异,但其核心理念围绕着高效的信息检索和自然语言生成技术展开[^1]。 #### 集成可能性分析 如果考虑将 Apache Airflow 和 RAGFlow 进行集成,则主要目标可能是利用前者强大的任务协调能力来优化后者内部各阶段操作之间的衔接效率。例如,在构建土壤科学期刊摘要自动获取系统时,可以通过设置一系列按顺序执行的操作节点——包括但不限于网络爬取最新文章链接、解析HTML内容、存储至数据库以及最终调用机器学习算法生成简洁概述等环节——借助 Airflow 实现全流程监控与错误恢复功能[^3]。 另一方面,假设存在名为 “RagFlow” 的专用软件包专门服务于某些特定领域内的文本挖掘需求,则此时两者之间更倾向于形成互补合作关系而非单纯意义上的替代选项。在这种情况下,重点应放在如何让二者优势相互补充上:即由 RagFlow 负责完成高精度语义理解方面的计算密集型子任务;与此同时依靠 Airflow 组织好这些耗时较长且彼此关联紧密的小单元活动的整体进度安排情况。 #### 对比维度探讨 当把注意力转向比较两者的差异之处时,可以从以下几个方面入手: - **设计目的** 如前所述,Airflow 主要定位于解决大规模分布式环境下的ETL过程管理难题;相比之下,“假想”的RAGFlow则更加专注于提升问答系统的响应质量和服务水平。 - **适用场景** 前者适用于任何需要周期性运行批量脚本的企业级应用场合;而后者的典型应用场景或许集中在科研辅助决策支持平台建设等领域内。 - **扩展性和灵活性** 尽管两种解决方案都强调模块化设计理念以便日后维护升级方便快捷,但从长远来看,由于开源社区活跃度较高加上第三方库资源丰富等因素影响下,Airflow 在这方面显然占据一定领先地位。 ```python from airflow import DAG from datetime import timedelta, datetime from airflow.providers.google.cloud.operators.bigquery import BigQueryInsertJobOperator default_args = { 'owner': 'airflow', 'depends_on_past': False, 'email_on_failure': False, 'email_on_retry': False, 'retries': 1, 'retry_delay': timedelta(minutes=5), } with DAG( dag_id='example_bigquery_dag', default_args=default_args, description='A simple tutorial DAG', schedule_interval=timedelta(days=1), start_date=datetime(2022, 1, 1), catchup=False, ) as dag: run_query = BigQueryInsertJobOperator( task_id="run_query", configuration={ "query": { "query": """SELECT * FROM `project.dataset.table` LIMIT 10""", "useLegacySql": False, } }, ) ``` 上述代码片段展示了如何使用 Airflow 创建一个简单的 ETL 流程实例,其中包含了查询 Google BigQuery 数据表的部分逻辑。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值