airflow + CeleryExecutor 环境搭建

airflow整合环境搭建

1. 整体结构

mysql -> 后端数据库

redis -> 用于broker

CeleryExecutor -> 执行器

2. 环境安装

  • 安装python anaconda环境
添加py用户
# useradd py
设置密码
# passwd py
创建anaconda安装路径
# mkdir /anaconda
赋权
# chown -R py:py /anaconda

上传anaconda安装包并用py用户运行安装程序
$ chmod +x Anaconda3-5.1.0-Linux-x86_64.sh
$ ./Anaconda3-5.1.0-Linux-x86_64.sh
Welcome to Anaconda3 5.1.0
In order to continue the installation process, please review the license
......
- Press ENTER to confirm the location
- Press CTRL-C to abort the installation
- Or specify a different location below
[/home/py/anaconda3] >>> /anaconda/anaconda3 输入自定义安装路径,如果用默认的话回车跳过
然后将anaconda加入环境变量,并使其生效

$ vi .bash_profile
在最后一行加上如下配置:
export PATH=/anaconda/anaconda3/bin:$PATH
然后使其生效:
$source .bash_profile

检测一下安装结果,出现以下结果说明安装成功:
$ python -V
Python 3.6.4 :: Anaconda, Inc.

配置pipy源:
$ mkdir ~/.pip
$ touch ~/.pip/pip.conf
$ echo ‘[global]‘ >> ~/.pip/pip.conf
$ echo ‘trusted-host=pypi.douban.com/simple‘ >> ~/.pip/pip.conf
$ echo ‘index-url=http://pypi.douban.com/simple‘ >> ~/.pip/pip.conf
  • 安装mysql相关依赖
去mysql官网下载mysql-5.7.22-1.el6.x86_64.rpm-bundle.tar安装包并上传至服务器:
# tar xvf mysql-5.7.22-1.el6.x86_64.rpm-bundle.tar
检查服务器是否有旧版本依赖:
# rpm -qa|grep mysql-libs-5.1.73|wc -l
如果结果大于0则执行如下命令卸载旧依赖:
# rpm -e --nodeps mysql-libs-5.1.73-5.el6_6.x86_64
如果等于0则不需要此操作.
然后依次安装以下依赖:
# rpm -ivh mysql-community-common-5.7.22-1.el6.x86_64.rpm
# rpm -ivh mysql-community-libs-5.7.22-1.el6.x86_64.rpm
# rpm -ivh mysql-community-devel-5.7.22-1.el6.x86_64.rpm
  • 安装相关模块
$ pip install apache-airflow[celery]
$ pip install apache-airflow[redis]
$ pip install apache-airflow[mysql]
检测一下安装结果:
$ airflow -h
如果显示正常则表示安装成功,并且用户根目录会出现airflow文件夹
  • 安装mysql
上传mysql-5.7.22-1.el6.x86_64.rpm-bundle.tar至需要安装mysql的服务器上:
# tar xvf mysql-5.7.22-1.el6.x86_64.rpm-bundle.tar
检查服务器是否有旧版本依赖:
# rpm -qa|grep mysql-libs-5.1.73|wc -l
如果结果大于0则执行如下命令卸载旧依赖:
# rpm -e --nodeps mysql-libs-5.1.73-5.el6_6.x86_64
如果等于0则不需要此操作.
然后依次安装以下安装:
# rpm -ivh mysql-community-common-5.7.22-1.el6.x86_64.rpm
# rpm -ivh mysql-community-libs-5.7.22-1.el6.x86_64.rpm
# rpm -ivh mysql-community-devel-5.7.22-1.el6.x86_64.rpm
# rpm -ivh mysql-community-client-5.7.22-1.el6.x86_64.rpm
# rpm -ivh mysql-community-server-5.7.22-1.el6.x86_64.rpm

# vi /etc/my.cnf
尾部添加skip-grant-tables
# service mysqld start
# mysql -u root
用于测试话剧所以密码设置的比较简单,仅供测试:
mysql> use mysql
mysql> update user set password_expired=‘N‘ where user=‘root‘;
mysql> update user set authentication_string=password(‘123456‘) where user=‘root‘;

编辑/etc/my.cnf去掉skip-grant-tables 并重启mysql:
# service mysqld restart
# mysql -u root -p
使用密码123456登陆
#降低密码复杂度要求仅仅用于测试
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=4;
mysql> SET PASSWORD = PASSWORD(‘123456‘);
mysql> flush privileges;
针对airflow使用创建数据库,添加用户并授权
mysql> CREATE DATABASE airflow;
mysql> CREATE USER ‘af‘@‘localhost‘ IDENTIFIED BY ‘123456‘;
mysql> GRANT all privileges on airflow.* TO ‘af‘@‘localhost‘ IDENTIFIED BY ‘123456‘;
mysql> GRANT all privileges on airflow.* TO ‘af‘@‘%‘ IDENTIFIED BY ‘123456‘;
mysql> flush privileges;
账户测试:
# mysql -u af -p
使用123456登陆
  • 安装redis
redis官网下载redis-4.0.9.tar.gz安装包,并上传至需要安装redis的服务器:
$ tar zxvf redis-4.0.9.tar.gz
$ cd redis-4.0.9
$ make
$ cp redis.conf src/
$ cd src
编辑配置文件redis.conf将bind属性改为bind 0.0.0.0
启动redis
$ nohup ./redis-server redis.conf > output.log 2>&1 &
  • 配置airflow
如果执行过airflow -h命令后,则用户目录下面会出现一个airflow文件夹, airflow文件夹下面有个airflow.cfg
的文件,这个就是airflow的配置文件;
编辑airflow.cfg文件,修改一下内容,具体情况根据实际情况填写[ip和端口]:
[core]
#sql_alchemy_conn = mysql://[username]:[password]@[host]:[port]/airflow
sql_alchemy_conn = mysql://af:[email protected]/airflow
executor = CeleryExecutor
[celery]
broker_url = redis://localhost:6379/0
celery_result_backend = redis://localhost:6379/0

配置完成之后即可进行数据库初始化:
$ airflow initdb
  • 启动airflow
关于启动,这个要分应用节点和作业节点:
1) 应用节点:
$ airflow webserver -D
$ airflow scheduler -D
$ airflow worker -D (应用节点可不运行woker)
2) 作业节点:(作业节点只需要运行worker就行)
$ airflow worker -D

3.增加定时任务

  1. 在airflow文件夹下面新建dags文件夹用于存储定时任务文件
  2. 创建如下的定时任务文件helloworld.py
from datetime import timedelta, datetime

import airflow
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from airflow.operators.dummy_operator import DummyOperator

default_args = {
‘owner‘: ‘jifeng.si‘,
‘depends_on_past‘: False,
# ‘depends_on_past‘: True,
#‘start_date‘: airflow.utils.dates.days_ago(2),
‘start_date‘: datetime(2018, 5, 2),
‘email‘: [‘[email protected]‘],
‘email_on_failure‘: False,
‘email_on_retry‘: False,
‘retries‘: 1,
‘retry_delay‘: timedelta(minutes=5),
}

dag = DAG(
‘example_hello_world_dag‘,
default_args=default_args,
description=‘my first DAG‘,
schedule_interval=‘*/25 * * * *‘,
start_date=datetime(2018, 5, 28)
)

dummy_operator = DummyOperator(task_id=‘dummy_task‘, dag=dag)

hello_operator = BashOperator(
task_id=‘sleep_task‘,
depends_on_past=False,
bash_command=‘echo `date` >> /home/py/test.txt‘,
dag=dag
)

dummy_operator >> hello_operator
  1. 测试一下代码的正确性:
$ python helloworld.py

如果没出现异常则说明代码无错误, 并且airflow环境正常.

将helloworld.py 放在 /home/py/airflow/dags下.

测试一下任务看任务是否能正常运行:

$ touch ~/test.txt 创建用于测试的文件
$ airflow run -A example_hello_world_dag sleep_task 20180528

如果运行正常,则可以启用该定时任务,启用任务有两种方式:

1) 通过命令启动:

$ airflow unpause example_hello_world_dag

2) 通过界面启动:

然后观察用户路径下的test.txt文件,如果运行正常的话会不断增加时间信息:

$ cat test.txt
....
Thu May 31 15:55:10 CST 2018
Thu May 31 15:56:10 CST 2018
Thu May 31 15:57:09 CST 2018
Thu May 31 16:04:10 CST 2018
....

4.注意事项

  • airflow的cron定时器只能精确到分钟,而不能精确到秒
  • airflow使用的是utc时区,正式使用的时候需要进行时区转换

附录:

附上一个环境初始化shell脚本:

#!/bin/sh

#拷贝mysql依赖
#scp命令必须手工输入密码确认过一次之后才可保证sshpass能正常运行
sshpass -p ‘123456‘ scp -q [email protected]:/root/mysql-community-devel-5.7.22-1.el6.x86_64.rpm /root/ &&
sshpass -p ‘123456‘ scp -q [email protected]:/root/mysql-community-libs-5.7.22-1.el6.x86_64.rpm /root/ &&
sshpass -p ‘123456‘ scp -q [email protected]:/root/mysql-community-common-5.7.22-1.el6.x86_64.rpm /root/ &&

#添加py用户
password="[email protected]"
username="py"
pass=$(perl -e ‘print crypt($ARGV[0], "password")‘ $password)
useradd -m -p $pass $username &&

#添加anaconda安装路径
mkdir -p /anaconda &&
chown -R py:py /anaconda &&

#设置pipy源信息
su - py -c "mkdir ~/.pip && touch ~/.pip/pip.conf"
su - py -c "echo ‘[global]‘ >> ~/.pip/pip.conf"
su - py -c "echo ‘trusted-host=pypi.douban.com/simple‘ >> ~/.pip/pip.conf"
su - py -c "echo ‘index-url=http://pypi.douban.com/simple‘ >> ~/.pip/pip.conf"

#安装mysql依赖
old=$(rpm -qa|grep mysql-libs-5.1.73|wc -l)
if [ $old -gt 0 ]; then
rpm -e --nodeps mysql-libs-5.1.73-5.el6_6.x86_64
fi
rpm -ivh mysql-community-common-5.7.22-1.el6.x86_64.rpm &&
rpm -ivh mysql-community-libs-5.7.22-1.el6.x86_64.rpm &&
rpm -ivh mysql-community-devel-5.7.22-1.el6.x86_64.rpm &&

参考链接:

http://doc.okbase.net/permike/archive/245749.html

原文地址:https://www.cnblogs.com/cord/p/9226608.html

时间: 2024-11-08 09:01:31

airflow + CeleryExecutor 环境搭建的相关文章

一、环境搭建

1 更新到最新版本的pip(这是安装python扩展包的一个插件)命令如下: python -m pip install --upgrade pip 2 使用pip安装virtualenv,命令 pip install virtualenv  如果要指定版本号,pip install virtualenv==15.0.1(安装虚拟环境) 3 创建django虚拟环境,命令 virtualenv django_basic_venv 4 使用虚拟环境 需要进入到安装目录的Scripts文件夹下,运行

Ionic2环境搭建及文件目录介绍

[注]引用自:http://blog.csdn.net/jasonzds/article/details/53821184 1环境搭建 一年前研究混合框架,初步确定了四种方案给公司选择,ionic,hbuilder,wex5,react-native这四个框架各有优缺点,ionic和react-native是国外框架,相对好一点,文档更新很快,就不一一说了,大概的思路都是一样的,js逻辑实现,同时调用原生功能,h5,css3 UI实现,其实他们都有自己的ui框架,当时选择了国内的hbuiler,

Selenium+Java+Eclipse 自动化测试环境搭建

一.下载Java windows java下载链接 https://www.java.com/zh_CN/download/win10.jsp 二.安装Java 安装好后检查一下需不需要配置环境变量,现在java 8已经不用配置环境变量了,直接在命令行输入:java -version 三.下载和安装Eclipse windows Eclipse下载链接 https://www.eclipse.org/downloads/ 你也可以下载绿色版 四.下载selenium,然后解压 selenium

Qt在Mac OS X下的编程环境搭建(配置Qt库和编译器,有图,很清楚)

尊重作者,支持原创,如需转载,请附上原地址:http://blog.csdn.net/libaineu2004/article/details/46234079 在Mac OS X下使用Qt开发,需要配置Qt库和编译器.编译器只能使用苹果公司自主研发的Clang.1.分别下载并安装XCode和Command Line Tools(必须安装),安装完毕后,Clang就有了. https://developer.apple.com/downloads/ 2.下载Qt并默认安装 http://down

基于 Eclipse 的 MapReduce 开发环境搭建

文 / vincentzh 原文连接:http://www.cnblogs.com/vincentzh/p/6055850.html 上周末本来要写这篇的,结果没想到上周末自己环境都没有搭起来,运行起来有问题的呢,拖到周一才将问题解决掉.刚好这周也将之前看的内容复习了下,边复习边码代码理解,印象倒是很深刻,对看过的东西理解也更深入了. 目录 1.概述 2.环境准备 3.插件配置 4.配置文件系统连接 5.测试连接 6.代码编写与执行 7.问题梳理 7.1 console 无日志输出问题 7.2

ICE分布式文件管理系统——ICE环境搭建(其二)

上一博文,我们讲述了ICE这个中间件的基本认识. 接下来我们讲述开发环境搭建. 其过程主要分为三步: 安装GCC-4.4.6.安装ICE-3.4.2.安装QT-4.7.3. (本文是基于LINUX下的ICE-3.4.2的安装,如果已安装了GCC(版本高于GCC-4.4.6亦可),请直接安装ICE) 一.安装GCC: (gcc各版本浏览地址:http://ftp.gnu.org/gnu/gcc/) 一般来说基于linux的操作系统都是默认安装了GCC的.假如说你的电脑没有的话 请百度一哈,可以解决

[Step-By-Step Angular2](1)Hello World与自动化环境搭建

随着rc(release candidate,候选版本)版本的推出,万众瞩目的angular2终于离正式发布不远啦!五月初举办的ng-conf大会已经过去了整整一个月,大多数api都如愿保持在了相对稳定的状态——当然也有router这样的例外,在rc阶段还在大面积返工,让人颇为不解——不过总得说来,现在学习angular2不失为一个恰当的时机. Google为angular2准备了完善的文档和教程,按理说,官网(https://angular.io)自然是学习新框架的最好教材.略显遗憾的是,在B

Linux交叉开发环境搭建 —— 效率之源

楼主今天终于把所有Linux开发环境需要的软件下载完毕了.虽然以前也是搭建过的,时间久了又折腾了一晚上. 交叉环境: Windows.Linux文件共享 SecureCRT 连接虚拟机终端 工具: VirtualBox ubuntu-16.04-desktop-amd64.iso(ubuntu官网下载) SecureCRT Source Insight 虚拟机搭建: 检查bios虚拟技术功能开启 新建虚拟机,选择创建虚拟硬盘,其余均默认 点击新建虚拟机设置->存储->选中没有光盘->点击

Intellij IDEA 14.1.4 Scala开发环境搭建

主要内容 Intellij IDEA开发环境简介 Intellij IDEA Scala开发环境搭建 Intellij IDEA常见问题及解决方案 Intellij IDEA常用快捷键 1. Intellij IDEA开发环境简介 具体介绍请参见:http://baike.baidu.com/link?url=SBY93H3SPkmcmIOmZ8H60O1k4iVLgOmdqoKdGp9xHtU-Pbdsq2cpn75ZPZPWAJxeUlwr0ravraQzOckh777beq Intelli