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

一、创建虚拟环境

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 asd@xxx.com

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

测试

在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


欢迎关注:爬虫王者

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349

推荐阅读更多精彩内容