1.������������
CentOS-6.5Python-2.7.12setuptools-29.0.1pip-9.0.1
2.������Python
sudo yum install -y gccsudo yum install -y gcc-c++sudo yum install -y wgetsudo yum install -y mysqlsudo yum install -y mysql-develsudo yum install -y python-develsudo yum install -y zlib-develsudo yum install -y openssl-develsudo yum install -y sqlite-develwget https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tgzsudo mkdir /usr/local/python27sudo tar zxfv Python-2.7.12.tgz -C /usr/local/cd /usr/local/Python-2.7.12/./configure --prefix=/usr/local/python27makemake installsudo mv /usr/bin/python /usr/bin/python2.6sudo ln -sf /usr/local/python/bin/python /usr/bin/python2.7vim /usr/bin/yum#!/usr/bin/python2.6vim /etc/profileexport PYTHON_HOME=/usr/bin/python2.6export PATH=$PYTHON_HOME/bin:$PATHwget https://pypi.python.org/packages/59/88/2f3990916931a5de6fa9706d6d75eb32ee8b78627bb2abaab7ed9e6d0622/setuptools-29.0.1.tar.gz#md5=28ecfd0f2574b489b9a18343879a7324tar zxfv setuptools-29.0.1.tar.gzcd setuptools-29.0.1python setup.py installwget https://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz#md5=35f01da33009719497f01a4ba69d63c9tar zxfv pip-9.0.1.tar.gzcd pip-9.0.1python setup.py installpip install --upgrade pipwget https://pypi.python.org/packages/a5/e9/51b544da85a36a68debe7a7091f068d802fc515a3a202652828c73453cad/MySQL-python-1.2.5.zip#md5=654f75b302db6ed8dc5a898c625e030cunzip MySQL-python-1.2.5.zipcd MySQL-python-1.2.5python setup.py install#������������ /usr/local/python27/lib/python2.7/site-packages
3.������
airflow������pip������������������������������������
# airflow needs a home, ~/airflow is the default,# but you can lay foundation somewhere else if you prefer# (optional)export AIRFLOW_HOME=/usr/local/airflow# install from pypi using pippip install airflowpip install airflow[hive]# initialize the databaseairflow initdb# start the web server, default port is 8080airflow webserver -p 8080
4.������mysql���������������
#���������������mysql���������sudo yum install -y mysqlsudo yum install -y mysql-develCREATE USER airflow;CREATE DATABASE airflow;CREATE DATABASE celery_result_airflow;GRANT all privileges on airflow.* TO 'airflow'@'%' IDENTIFIED BY 'airflow';GRANT all privileges on celery_result_airflow.* TO 'airflow'@'%' IDENTIFIED BY 'airflow';#������mysql������wget https://pypi.python.org/packages/a5/e9/51b544da85a36a68debe7a7091f068d802fc515a3a202652828c73453cad/MySQL-python-1.2.5.zip#md5=654f75b302db6ed8dc5a898c625e030cunzip MySQL-python-1.2.5.zipcd MySQL-python-1.2.5python setup.py install#���airflow������������������������mysql������������������������sudo vi $AIRFLOW_HOME/airflow.cfg#������������������������sql_alchemy_conn = mysql://airflow:airflow@localhost:3306/airflow#���������������������������dialect+driver://username:password@host:port/database#���������������������airflow initdb#������������������airflow resetdb
5.������������������
#������password������pip install airflow[password]#���airflow������������������������������������sudo vi $AIRFLOW_HOME/airflow.cfg[webserver]authenticate = Truefilter_by_owner = Trueauth_backend = airflow.contrib.auth.backends.password_auth
���������������������������������������������������������
import airflowfrom airflow import models, settingsfrom airflow.contrib.auth.backends.password_auth import PasswordUseruser = PasswordUser(models.User())user.username = 'quzhengpeng'user.email = 'quzhengpeng@163.com'user.password = 'quzhengpeng'session = settings.Session()session.add(user)session.commit()session.close()exit()
5.������������������
������������������������������������Airflow���������������������������������������������������������������${AIRFLOW_HOME}/dags������web UI ���������������������������������
airflow scheduler
6.������web������
#������web������airflow webserver -p 8080#������CentOS6������������sudo service iptables stop#������CentOS6���SELinuxsetenforce 0#������CentOS7������������systemctl stop firewalld.service#������firewall������������systemctl disable firewalld.service
Celery+MySQL
#Celery������ http://docs.jinkan.org/docs/celery/index.html#Celery4.0.0���airflow���������������������������������Celery3pip install -U Celery==3.1.24pip install airflow[celery]
������������������
vi airflow.cfg[core]executor = CeleryExecutor[celery]broker_url = sqla+mysql://airflow:airflow@localhost:3306/airflowcelery_result_backend = db+mysql://airflow:airflow@localhost:3306/airflow
������airflow
airflow webserver -p 8080airflow scheduler#������root������������airflow worker#������Celery WebUI ������celery������airflow flower http://localhost:5555/
Celery+RabbitMQ
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.5/rabbitmq-server-3.6.5-1.noarch.rpm#������RabbitMQ������������yum install erlangyum install socat#���������������rabbitmq���yum��� sudo yum install -y rabbitmq-serverrpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm
������RabbitMQ������
#������rabbitmq������sudo service rabbitmq-server start #������sudo rabbitmq-server#������ -detached ������������������������������������������������������������������sudo rabbitmq-server -detached#������������������rabbitmq������chkconfig rabbitmq-server on#��������������� kill ������ RabbitMQ ��������������������������� rabbitmqctl ������sudo rabbitmqctl stop
������RabbitMQ
#������������RabbitMQ������rabbitmqctl add_user airflow airflow#������������RabbitMQ������������rabbitmqctl add_vhost vairflow#���������������������admin���������rabbitmqctl set_user_tags airflow admin#������������������������������������������rabbitmqctl set_permissions -p vairflow airflow ".*" ".*" ".*"# no usagerabbitmq-plugins enable rabbitmq_management
������airflow������������������Celery
vi $AIRFLOW_HOME/airflow/airflow.cfg#������Executor���CeleryExecutorexecutor = CeleryExecutor#������broker_urlbroker_url = amqp://airflow:airflow@localhost:5672/vairflowFormat explanation: transport://userid:password@hostname:port/virtual_host#������celery_result_backendcelery_result_backend = amqp://airflow:airflow@localhost:5672/vairflowFormat explanation: transport://userid:password@hostname:port/virtual_host
������airflow���celery���rabbitmq������
pip install airflow[celery]pip install airflow[rabbitmq]
airflow������DAG(Directed Acyclic Graph,������������������)���������������������
#������DAGfrom datetime import datetime, timedeltafrom airflow.models import DAGargs = { 'owner': 'airflow', 'start_date': seven_days_ago, 'email': ['airflow@airflow.com'], 'email_on_failure': True, 'email_on_retry': True, 'retries': 3, 'retries_delay': timedelta(seconds=60), 'depends_on_past': True}dag = DAG( dag_id='dag', default_args=args, schedule_interval='0 0 * * *', dagrun_timeout=timedelta(minutes=60))
������������������������������DAG���
from airflow.operators.bash_operator import BashOperatorfrom airflow.operators.dummy_operator import DummyOperatordemo = DummyOperator( task_id='demo', dag=dag)last_execute = BashOperator( task_id='last_execute', bash_command='echo 1', dag=dag)
���������������������������
demo.set_downstream(last_execute)