これはRetty Inc. AdventCalendar2018 19日目の記事です。
昨日は@masadooonさんのRettyの意思決定を最大化!データ分析チームの取り組みをご紹介でした。
はじめに
Rettyでインターンをしているものです。
Rettyではluigiを集計に使用しているサービスがありますが、分析基盤ではAirFlowを使用していることもあり統一しようとしています。
現在インターンでの業務としてAirflowに移行できるかどうかの検証を行っており、まず理解するためにAirflow Tutorialをやっていましたので解説していきたいと思います。
Airflowとは
- 言語 : Python
- Airflowは、ワークフローを記述、実行、監視するためのツール
- タスクの依存関係を管理
Airflow Tutorial 実践
公式
https://airflow.apache.org/index.html
Tutorialに書いてある通りsetupしていきます
Python 環境構築
まずアップデートします
$ apt-get -y update
pipをインストールします。
$ apt-get install python-pip
インストールしたpipをupgradeします。
$ pip install --upgrade pip
Airflow 構築
パスを通します
$ export AIRFLOW_HOME=~/airflow
airflowをインストールします。
$ pip install apache-airflow
構築時に起きたエラー 1
出なかった場合読み飛ばしてください
事象
$ pip install apache-airflow
File “/usr/bin/pip”, line 9, in <module> from pip import main ImportError: cannot import name main
対応策
vim をインストールします。
$ apt-get install vim
ファイルの一部を書き換えます。
$ vi /usr/bin/pip
from pip import __main__
if __name__ == '__main__':
sys.exit(__main__._main())
構築時に起きたエラー 2
出なかった場合読み飛ばしてください
事象
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-xg1yeW/apache-airflow/
対応策
公式でも同じようなことが書いてあります。
https://airflow.apache.org/installation.html
$ export AIRFLOW_GPL_UNIDECODE=yes
Airflow起動
データベース初期化
$ airflow initdb
Webサーバー起動
$ airflow webserver -p 8080
起動時に起きたエラー
出なかった場合読み飛ばしてください
事象
Traceback (most recent call last):
File "/usr/local/bin/airflow", line 28, in
args.func(args)
File "/usr/local/lib/python2.7/dist-packages/airflow/bin/cli.py", line 791, in webserver
gunicorn_master_proc = subprocess.Popen(run_args)
File "/usr/lib/python2.7/subprocess.py", line 711, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1343, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
対応策
gunicornコマンドがないようなのでインストールしたいと思います。
gunicornをインストール
$ sudo apt-get install gunicorn
Airflow
http://localhost:8080 へアクセスすると
このように表示されていれば成功です。
次にDAGのtutorialをクリックします
この画面でツリー表示が見れます。
Codeを次に見てみましょう。
ここで先ほどのワークフローがどのようにできているのかを確認できます。
最後に
ここまでで、Airflow Tutorialのための導入を実際に行ってみました!
今後は実際の業務に繋げていき、本格的な開発を頑張って行きます!
以上、ありがとうございました。
明日は@takumi-suzukiさんです!