服务器使用的是centos系统,需要安装好pip和setuptools,同时注意更新安装的版本

接下来参考安装好Airflow

Airflow 1.8 工作流平台搭建 http://blog.csdn.net/kk185800961/article/details/78431484
airflow最简安装方法 centos 6.5 http://blog.csdn.net/Excaliburace/article/details/53818530

以mysql作为数据库,airflow默认使用sqlite作为数据库

1.建表

# 创建相关数据库及账号
mysql> create database airflow default charset utf8 collate utf8_general_ci;
mysql> create user airflow@'localhost' identified by 'airflow';
mysql> grant all on airflow.* to airflow@'localhost';
mysql> flush privileges;

2.安装airflow,需要环境隔离的时候请使用virtualenv ./env创建隔离环境

sudo pip install apache-airflow

3.使用pip来安装,安装的路径在python路径下site-packages文件夹,在使用上述命令一遍就能看到

~/anaconda2/lib/python2.7/site-packages/airflow

4.在/etc/proofile中添加,之后source一下

#Airflow
export AIRFLOW_HOME=/home/lintong/software/airflow

5.创建数据库,这一步会创建上面路径的airflow文件夹,以及文件夹中的一些文件

airflow initdb

查看是否安装成功

airflow version

5.配置元数据库地址

/home/lintong/software/airflow
vim airflow.cfg

修改下图中的配置

sql_alchemy_conn = mysql://airflow:airflow@localhost:3306/airflow

6.安装python的mysql驱动

pip install mysql-python

再次初始化数据库

airflow initdb

7.启动web界面

airflow webserver -p 8080
http://localhost:8080/admin/

8.在airflow路径下新建一个dags文件夹,并创建一个DAG python脚本,参考:[AirFlow]AirFlow使用指南三 第一个DAG示例

# -*- coding: utf-8 -*-

import airflow
import os
import time
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from airflow.operators.python_operator import PythonOperator
from datetime import timedelta # -------------------------------------------------------------------------------
# these args will get passed on to each operator
# you can override them on a per-task basis during operator initialization default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': airflow.utils.dates.days_ago(0),
'email': ['xxxxxxx'],
'email_on_failure': False,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(minutes=5)
# 'queue': 'bash_queue',
# 'pool': 'backfill',
# 'priority_weight': 10,
# 'end_date': datetime(2016, 1, 1),
# 'wait_for_downstream': False,
# 'dag': dag,
# 'adhoc':False,
# 'sla': timedelta(hours=2),
# 'execution_timeout': timedelta(seconds=300),
# 'on_failure_callback': some_function,
# 'on_success_callback': some_other_function,
# 'on_retry_callback': another_function,
# 'trigger_rule': u'all_success'
} # -------------------------------------------------------------------------------
# dag dag = DAG(
'example_print_dag',
default_args=default_args,
description='my first DAG',
schedule_interval=timedelta(days=1)) def each_content(content, path):
return ("echo \"" + content + " " + time.asctime(time.localtime(time.time())) + "\" >> " + path) # -------------------------------------------------------------------------------
# first operator #print1_operator = PythonOperator(
# task_id='print1_task',
# python_callable=each_content("1", "/home/lintong/桌面/test.txt"),
# dag=dag) print1_operator = BashOperator(
task_id='print1_task',
bash_command='echo 1 >> /home/lintong/test.txt',
dag=dag) # -------------------------------------------------------------------------------
# second operator print2_operator = BashOperator(
task_id='print2_task',
bash_command='echo 2 >> /home/lintong/test.txt',
dag=dag) # -------------------------------------------------------------------------------
# third operator print3_operator = BashOperator(
task_id='print3_task',
bash_command='echo 3 >> /home/lintong/test.txt',
dag=dag) # -------------------------------------------------------------------------------
# dependencies
#each_content("1", "/home/lintong/桌面/test.txt")
print2_operator.set_upstream(print1_operator)
print3_operator.set_upstream(print1_operator) #if __name__ == "__main__":
# dag.cli()

9.在web界面中查看是否出现这个DAG

10.出现的时候,DAG的状态是off,需要将起状态设置为on,并点击后面的 绿色三角形 启动按钮

11.启动调度器

airflow scheduler

12.查看文件test.txt,其中会顺序出现1 2 3或者1 3 2

安装完成后使用下面shell脚本来启动Airflow,端口为8080

#!/bin/bash

#set -x
#set -e
set -u # 使用./start_airflow.sh "stop_all"或者"start_all"
if [ $1 == "stop_all" ]; then
# 获取所有进程,取出Airflow,去除grep,截取PID,干掉
ps -ef | grep -Ei 'airflow' | grep -v 'grep' | awk '{print $2}' | xargs kill
fi if [ $1 == "start_all" ]; then
cd /home/lintong/software/airflow/logs
nohup airflow webserver >>webserver.log 2>&1 &
nohup airflow worker >>worker.log 2>&1 &
nohup airflow scheduler >>scheduler.log 2>&1 &
echo "后台启动Airflow"
fi

添加用户的python脚本

from airflow import models,   settings
from airflow.contrib.auth.backends.password_auth import PasswordUser
user = PasswordUser(models.User())
user.username = 'lintong'
user.email = 'xxxxx@gmail.com'
user.password = 'XXXXX'
session = settings.Session()
session.add(user)
session.commit()
session.close()
exit()

如果要安装1.10版本的,请使用python3.6

如果pip3找不到了

sudo python3 -m pip install --upgrade --force-reinstall pip

如果虚拟环境中不存在pip3

sudo apt-get install python3-venv

安装Python3.6

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.6

安装pip3.6

wget https://bootstrap.pypa.io/get-pip.py
sudo python3.6 get-pip.py

安装python-dev,不然会报error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

sudo apt-get install python3.6-dev

添加AIRFLOW_HOME

#Airflow
export AIRFLOW_HOME=/home/lintong/software/airflow

安装airflow 1.10.10

sudo pip3.6 install --force-reinstall apache-airflow -i https://pypi.tuna.tsinghua.edu.cn/simple

airflow version,然后airflow_home目录下会自动出现airflow.cfg文件,修改airflow.cfg

sql_alchemy_conn = mysql://airflow:airflow@localhost:3306/airflow

安装mysqlclient,因为python3没有mysql-python

pip3.6 install mysqlclient

初始化db

airflow initdb

搭建Airflow数据流调度器的更多相关文章

  1. Kubernetes集群调度器原理剖析及思考

    简述 云环境或者计算仓库级别(将整个数据中心当做单个计算池)的集群管理系统通常会定义出工作负载的规范,并使用调度器将工作负载放置到集群恰当的位置.好的调度器可以让集群的工作处理更高效,同时提高资源利用 ...

  2. Yarn 组件的指挥部 – 调度器Scheduler

    linux基础 为hadoop集群的搭建扫清了障碍,也为内存的管理,文件系统的管理扫清了障碍 接着到Hadoop的阶段,首先做集群的安装,深入到使用这两个核心的组件,分布式文件系统HDFS,解决大量数 ...

  3. ReactiveX 学习笔记(12)调度器

    Schedulers, threading and testing 本文的主题为调度器,多线程以及测试. RxJava操作符(六)Utility SubscribeOn / ObserveOn Sub ...

  4. Linux调度器 - 进程优先级

    一.前言 本文主要描述的是进程优先级这个概念.从用户空间来看,进程优先级就是nice value和scheduling priority,对应到内核,有静态优先级.realtime优先级.归一化优先级 ...

  5. java定时调度器解决方案分类及特性介绍

    什么是定时调度器? 我们知道程序的运行要么是由事件触发的,而这种事件的触发源头往往是用户通过ui交互操作层层传递过来的:但是我们知道还有另外一种由机器系统时间触发的程序运行场景.大家想想是否遇到或者听 ...

  6. Go调度器介绍和容易忽视的问题

    本文记录了本人对Golang调度器的理解和跟踪调度器的方法,特别是一个容易忽略的goroutine执行顺序问题,看了很多篇Golang调度器的文章都没提到这个点,分享出来一起学习,欢迎交流指正. 什么 ...

  7. 图解kubernetes调度器SchedulingQueue核心源码实现

    SchedulingQueue是kubernetes scheduler中负责进行等待调度pod存储的对,Scheduler通过SchedulingQueue来获取当前系统中等待调度的Pod,本文主要 ...

  8. 图解kubernetes调度器SchedulerCache核心源码实现

    SchedulerCache是kubernetes scheduler中负责本地数据缓存的核心数据结构, 其实现了Cache接口,负责存储从apiserver获取的数据,提供给Scheduler调度器 ...

  9. Web集群调度器-Haproxy

    Web集群调度器-Haproxy 目录 Web集群调度器-Haproxy 一.Web集群调度器 1.常用的Web集群调度器 2. Haproxy应用分析 3. Haproxy的主要特性 4. 常用集群 ...

随机推荐

  1. React生命周期函数详解

    React生命周期函数 生命周期函数是指在某一个周期自动执行的函数. React中的生命周期执行过程 以下是React中的常用的生命周期函数,按个部分中按照自动执行顺序列出,这几个过程可能存在同时进行 ...

  2. python字符串与列表的相互转换

    学习内容: 1.字符串转列表 2.列表转字符串 1. 字符串转列表 s ='hello python !'li = s.split(' ') #注意:引号内有空格print (li)输出:['hell ...

  3. Emgucv - 下载、安装、配置

    工欲善其事,必先利其器. 一.下载 Emgucv学习之前,我们先要搭建好开发环-Emgucv库.VS开发平台. (1)VS开发平台,个人觉得VS2015挺好用的,比如:自定义窗口布局.更优的代码编辑器 ...

  4. 谈一谈java里面的反射机制

    首先来看看百度百科中是如何定义的: JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意方法和属性:这种动态获取信息以及动态调用对象方 ...

  5. JavaScript 对象拷贝研究

    介绍一下JavaScript里面的一些对象拷贝的方法 浅拷贝 深拷贝 利用序列化进行对象拷贝

  6. SourceTree安装教程和破解教程

    SourceTree破解版是一款非常实用的编程工具,这是一款专业的Git和Hg客户端,界面简洁,操作简单易上手,是开发者的必备工具,欢迎大家来绿色资源网下载体验!SourceTree是一款免费的Git ...

  7. PHP 中的魔法常数

    PHP中的魔法常数 PHP中有很多描述当前状态的魔法函数,可以很方便地获取运行时的局部环境 测试代码及结果如下 <?php namespace NS { function writeln($v= ...

  8. 全排列 ---java

    排列的一种好方法,用链表来记录数据,简单明了,简称模板,值得记录 public class main{ static int count=0; public static void f(List< ...

  9. JS自学笔记04

    JS自学笔记04 arguments[索引] 实参的值 1.对象 1)创建对象 ①调用系统的构造函数创建对象 var obj=new Object(); //添加属性.对象.名字=值; obj.nam ...

  10. Javascript 字符串(一)常见函数使用

    一.js字符串示例1 <script type="text/javascript"> var strobject = new String('123abc123abc' ...