首页 > 系统相关 >linux(centos)创建虚拟环境并部署airflow

linux(centos)创建虚拟环境并部署airflow

时间:2022-12-17 10:44:23浏览次数:47  
标签:airflow centos default 创建 smtp 虚拟环境 home

一、创建虚拟环境

1.安装virtualenv,virtualenvwrapper

pip install virtualenv virtualenvwrapper

安装好之后创建存放虚拟环境目录,这里我存在 ~/pythonvenv 里,查看当前路径:pwd,返回/home/cch/pythonvenv

如果没有pip 先安装pip:yum install -y pip

安装好了之后,查找virtualenv位置:find / -name virtualenv

例:返回:/home/cch/.local/bin/virtualenv

查找virtualenvwrapper.sh位置:find / -name virtualenvwrapper.sh

例:返回:/home/cch/.local/bin/virtualenvwrapper.sh

2.在/usr/bin中添加环境变量(就是新建了一个软连接)

ln -s /usr/local/python36/bin/virtualenv(virtualenv的位置) /usr/bin/virtualenv

3.修改环境变量相关脚本~/.bashrc

添加如下代码

export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3  # 指定python版本

export WORKON_HOME=/home/cch/pythonvenv

source /home/cch/.local/bin/virtualenvwrapper.sh #virtualenvwrapper.sh的位置

然后重启:source ./.bashrc,如下图所示

 


 

之后创建虚拟环境

 

mkvirtualenv venv1

 

完毕之后 就可以在~/pythonvenv文件夹里看到刚刚创建的 venv1了

这里是一些常用命令

 

创建虚拟环境: mkvirtualenv + 虚拟环境名称

创建虚拟环境(指定python版本): mkvirtualenv -p python + 虚拟环境名称

mkvirtualenv /usr/bin/python test #指定创建基于python3的环境

查看所有虚拟环境: workon + 2次tab键

使用虚拟环境: workon + 虚拟环境名称

退出虚拟环境: deactivate

删除虚拟环境(必须先退出虚拟环境内部才能删除当前虚拟环境):

rmvirtualenv + 虚拟环境名称

 

二、部署airflow

进入虚拟环境

 


 

安装airflow:pip install apache-airflow

 


 

出现以下报错,这是因为先前安装混乱导致,一般不会出现:

 


 

直接进入文件夹删掉文件即可:

 


 

之后配置存放airflow配置的文件夹,~目录下,创建airflow文件夹,

pwd查看路径:/home/cch/airflow

环境变量配置vim ~/.bashrc为:

 

export AIRFLOW_HOME=/home/cch/airflow

source ~/.bashrc

 

 

运行airflow,报错:

 


 

sqlite已经不推荐使用,进入airflow.cfg修改配置,`vim /home/cch/airflow/airflow.cfg`

 

# dags存放路径

dags_folder = /home/cch/.local/bin/airflow/dags

# 时区默认位utc时间建议换成国内Asia/Shanghai

default_timezone = utc

# 这里我换成

default_timezone = Asia/Shanghai

# airflow支持并行性的工作器,有`SequentialExecutor`(默认,顺序执行), `LocalExecutor`(本地执行), `CeleryExecutor`(远程执行), `DaskExecutor`

executor = SequentialExecutor

# 这里我换成

executor = LocalExecutor

# 数据库连接设置

sql_alchemy_conn = sqlite:////home/airflow/airflow.db

# 这里我换成

# mysql+pymysql://用户名:密码@主机名:端口号/数据库,提前在mysql中创建名称为数据库airflow即可,airflow db init的时候就会自动创建相应的表格

sql_alchemy_conn = mysql+pymysql://user:pass@localhost:3306/airflow

# 如果不设置数据库将会报错

# 因为这里设置了数据库 所以就得在你的ubuntu上安装mysql

# sudo apt update

# sudo apt install mysql-server

# 安装完之后创建用户

# 首先进入mysql环境

# 在服务器上输入 mysql

"""

创建airflow数据库 并指定字符集

create database if not exists airflow default charset utf8 collate utf8_general_ci;

创建用户

CREATE USER 'airflow'@'%' IDENTIFIED BY 'airflow';

# 给用户授权

grant all privileges on airflow.* to airflow@localhost identified by 'airflow';

但是你airflwo db init 初始化的情况下会出现问题:

”    raise Exception("Global variable explicit_defaults_for_timestamp needs to be on (1) for mysql")

Exception: Global variable explicit_defaults_for_timestamp needs to be on (1) for mysq

mysq的全局变量explicit_defaults_for_timestamp需要为on (1)

所以这里你就需要将 explicit_defaults_for_timestamp设置下:

set global explicit_defaults_for_timestamp =1;

"""

# 数据库编码方式

sql_engine_encoding = utf-8

# 是否与SqlAlchemy库进行数据交互

sql_alchemy_pool_enabled = True

# 最大数据库连接数

sql_alchemy_pool_size = 5

# 控制每个Airflow worker可以同时运行task实例的数量

parallelism = 32

# 用来控制每个dag运行过程中最大可同时运行的task实例数,若DAG中没有设置concurrency,则使用默认值

dag_concurrency = 16

# 创建新的DAG时,是否暂停

dags_are_paused_at_creation = True

# 同一时间最大运行dag的数量,默认为16

max_active_runs_per_dag = 16

# 加载示例dags,默认为True

load_examples = True

# 这里我换成

load_examples = False

# 任务清理时间

killed_task_cleanup_time = 60

# 这里我换成

killed_task_cleanup_time = 120

# 日志存放路径

base_log_folder = /home/xxx/airflow/logs

# 日志级别

fab_logging_level = WARN

# 这里我换成

fab_logging_level = WARNING

# web ui面使用的时区

default_ui_timezone = UTC

# 这里我换成

default_ui_timezone = Asia/Shanghai

# 运行web服务端口号

web_server_port = 8080

# 超时时间

web_server_master_timeout = 120

web_server_worker_timeout = 120

# 这里我还换成

web_server_master_timeout = 300

web_server_worker_timeout = 300

# 刷新时间

worker_refresh_interval = 6000

# 这里我换成

worker_refresh_interval = 30

# 任务重试时是否发送邮件提醒 

default_email_on_retry = True

# 这里我换成了

default_email_on_retry = False

# 任务失败时是否发送邮件提醒 

default_email_on_failure = True

# 设置web端Configuration不显示配置信息

expose_config = False

# 加载Airflow UI界面的时间

default_dag_run_display_number = 15

[smtp] 发送邮件时邮箱的配置

smtp_host = localhost

# 这里我用的163邮箱 所以我换成

smtp_host = smtp.163.com

# 加密通讯

smtp_starttls = True

# 这里我换成

smtp_starttls = False

smtp_ssl = False

# Example: smtp_user = airflow

smtp_user = 你的邮箱

# Example: smtp_password = airflow

smtp_password =你邮箱设置里smtp密码

smtp_port = 25

# 这里我设置

smtp_port = 465

smtp_mail_from = 你要收信的邮箱

smtp_timeout = 30

smtp_retry_limit = 5

#  配置celery的broker_url(存储要执行的命令然后celery的worker去消费)

broker_url = redis://redis:6379/0

# 配置celery的result_backend(存储任务执行状态)、 也可以用redis存储

result_backend = db+postgresql://postgres:airflow@postgres/airflow

# 调度程序尝试触发新任务的时间

scheduler_heartbeat_sec = 60

# 检测新dag的时间

min_file_process_interval = 10

# 是否使用catchup功能, 即是否执行自上次execute_date以来所有未执行的DAG Run, 另外定义每个DAG对象可传递catchup参数进行覆盖

catchup_by_default = True

初始化airflow数据库

airflow db init

最后一行出现Initialization done表示安装成功

创建airflow用户

airflow users create --username 账号 --firstname 姓 --lastname 名字 --role Admin --email [email protected]

输入密码和重复密码就完成创建账户了

测试

在dags目录下,创建dag文件(即py文件),开启airflow服务:

airflow webserver -D

airflow scheduler -D

or

nohup airflow scheduler &

nohup airflow webserver -p 5568 >/home/aw.log 2>&1 &

在内网打开:

(airflow运行机器内网ip):8080,即可打开airflow界面。

#杀进程

ps -ef|egrep 'scheduler|airflow-webserver'|grep -v grep|awk '{print $2}'|xargs kill -9

 

欢迎关注:爬虫王者

 

标签:airflow,centos,default,创建,smtp,虚拟环境,home
From: https://www.cnblogs.com/crawler-king/p/16988671.html

相关文章