Edited at

Python3.6でAirflowをインストールする

More than 1 year has passed since last update.

http://qiita.com/hatappi/items/6dee3af8648f21eaaff1

過去に自分で書いた記事がPython2.7でいれた時のものだったのでPython3で動かした時のメモを投稿する


動作環境

今回はVagrantでboxはcentos/7を使用した

https://atlas.hashicorp.com/centos/boxes/7


手順


Python3.6のインストール

前回はソースからインストールしたが今回に関してはpyenvを使う

# 事前にPythonのインストールの際に必要なものをインストール

$ sudo yum install -y git zlib-devel bzip2-devel openssl-devel
# pyenvはinstallerが提供されているのでそれを使用する
$ curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash
# pyenv用のPATHを.bash_profileなどに追記した後に
$ pyenv install 3.6.1
$ pyenv global 3.6.1
$ python --version
Python 3.6.1

これでとりあえずpythonのインストールは完了


MySQL5.7のインストール

$ sudo rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm

$ sudo yum install -y mysql-community-server mysql-devel
$ mysqld --version
mysqld Ver 5.7.18 for Linux on x86_64 (MySQL Community Server (GPL))
$ mysql --version
mysql Ver 14.14 Distrib 5.7.18, for Linux (x86_64) using EditLine wrapper

接続確認のために

$ sudo systemctl start mysqld

$ cat /var/log/mysqld.log | grep 'A temporary password is generated for'
2017-05-06T08:15:01.618375Z 1 [Note] A temporary password is generated for root@localhost: hogehoge
$ mysql -u root -phogehoge # 先程grepされて表示されたパスワードを入力

これで接続確認は終わりで今後使用するairflowというdatabaseを作成しておきます


Airflowのインストール

installする時のコマンドは下記のみ

シンプルで良いですね

[mysql, celery]はairflowと一緒にインストールサブパッケージでここで一覧を見ることが出来ます

pip install "airflow[mysql, celery]"


Airflowの設定

Airflowはデフォルトでは~/airflow/airflow.cfgを読み込むのでgithubからテンプレートをもってきて下記の部分を変更します


~/airflow/airflow.cfg

executor = CeleryExecutor

sql_alchemy_conn = mysql://[usr名]:[password]@[host]:[port]/[db名]
broker_url = sqla+mysql://[usr名]:[password]@[host]:[port]/[db名]
celery_result_backend = db+mysql://[usr名]:[password]@[host]:[port]/[db名]

この後に下記のコマンドで動作に必要なテーブルなどを作成して準備完了

$ airflow initdb


webserver

$ airflow webserver -p 8080

image.png


worker

$ airflow worker

これでひとまず動くようになりました

image.png


 おまけ


 worker起動時のエラー

[2017-05-06 04:50:43,790] {__init__.py:57} INFO - Using executor CeleryExecutor

Traceback (most recent call last):
File "/home/vagrant/.pyenv/versions/3.6.1/lib/python3.6/site-packages/kombu/transport/__init__.py", line 53, in resolve_transport
transport = TRANSPORT_ALIASES[transport]
KeyError: 'sqla'

が出た

Celeryの4.0.2ではどうやらエラーが出るようでcelery==3.1.15にdowngradeして動くようになった