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からテンプレートをもってきて下記の部分を変更します
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
worker
$ airflow worker
これでひとまず動くようになりました
おまけ
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して動くようになった