AirFlow source code reading

Intro

AirFlow目前(2016.10.17)是Apache孵化项目,是一个基于Flask的web大数据任务调度框架。

项目目录如下:

.
├── airflow
├── CHANGELOG.txt
├── CONTRIBUTING.md
├── dags
├── dev
├── DISCLAIMER
├── docs
├── init.sh
├── LICENSE
├── MANIFEST.in
├── migrations.sql
├── NOTICE
├── README.md
├── run_tox.sh
├── run_unit_tests.sh
├── scripts
├── setup.cfg
├── setup.py
├── tests
├── TODO.md
├── tox.ini
└── UPDATING.md

上面是整体的代码,包含了项目的说明,一些合作开发的脚本等。

airflow代码目录如下:

airflow
├── alembic.ini
├── bin
├── configuration.py
├── contrib
├── dag
├── default_login.py
├── example_dags
├── exceptions.py
├── executors
├── hooks
├── __init__.py
├── jobs.py
├── macros
├── migrations
├── minihivecluster.py
├── models.py
├── operators
├── plugins_manager.py
├── security
├── settings.py
├── ti_deps
├── utils
├── version.py
└── www

分模块源码阅读

version.py

里面是软件的版本信息。

setting.py

软件的相关设置:

  • 配置日志
    • 实现新的类DummyStatsLogger
    • 配置日志格式
  • 配置sqlalchemy/orm
    • 实例化engine
    • 实例化Session

init.py

  • 配置DAGS_FOLDER路径
  • 加载登录load_login:
  • 集成插件:
    • operators._integrate_plugins()
    • hooks._integrate_plugins()
    • executors._integrate_plugins()
    • macros._integrate_plugins()

configuration.py

  • 生成FERNET_KEY
  • expand env var
  • 定义了默认的配置DEFAULT_CONFIG
  • 定义了默认的配置TEST_CONFIG
  • AirflowConfigParser
    • 验证executor
    • 验证webserver是否初始化,
comments powered by Disqus