airflow部署

環境

ubuntu 16.04
python3.5 && python3.6
apt-get install python3-pip
pip3 install pipenv
pipenv install flask==1.0
1.需要的 python 模塊
import ssl
import sqlite3
2.安裝 airflow
網上的 pip install apache-airflow[all] 勿用太重
pipenv install apache-airflow==1.9 (現在 1.10 了)

but 你需要額外安裝
pipenv install apache-airflow[crypto]
pipenv install apache-airflow[mysql]

if mysql-config error
    sudo apt-get install libmysqlclient-dev python3-dev
3.if gcc error
根據python 環境安裝 dev
apt-get install python3.5-dev (請根據自己的 python 版本安裝 dev)
4.添加 airflow 到環境變量
echo "export AIRFLOW_HOME=~/airflow" >> ~/.bashrc
source ~/.bashrc
5.mysql 數據庫配置
mysql -u{user_name} -p{pwd}
# 1. 創建數據表
create database airflowdb;
6.if pip3 install pymssql ERROR
pip install setuptools_git
pip download pymssql
tar -zxvf pymssql-2.1.3.tar.gz
cd  pymssql-2.1.3
export PYMSSQL_BUILD_WITH_BUNDLED_FREETDS=1
python setup.py install
7.配置airflow 連接 mysql.airflowdb
vim  ~/airflow/airflow.cfg
executor = LocalExecutor
# 注意 mysql 用戶名密碼
sql_alchemy_conn = mysql://root:admin@localhost:3306/airflowdb 
8.在 airflow webserver 發現進程號重複,請
kill -9 PID
9.刪除dag
# 所有的 dag 項目在 
mysql
    databases庫     airflowdb
    tables表        dag
10.添加用戶, 開啓登錄頁面
在 webserver 下面的第一行添加認證, 加在authenticate 的默認位置下面無效
authenticate = True
auth_backend = airflow.contrib.auth.backends.password_auth    
#在 python shell 中添加用戶
cd ~/airflow 
pipenv shell 
python3 
>>> mport airflow 
>>> from airflow import models, settings
>>> from airflow.contrib.auth.backends.password_auth import PasswordUser
>>> user = PasswordUser(models.User())  user.username = 'username'
>>> user.email = 'email'
>>> user.password = 'pwd'
>>> session = settings.Session()
>>> session.add(user)
>>> session.commit()
>>> session.close()
>>> exit()

#如果期間 commit() 失敗, 先安裝 apache-airflow[mysql]
pipenv shell 
pipenv install apache-airflow[mysql]
airflow initdb
11.全部安裝成功請依次運行命令
# 初始化數據庫
airflow initdb
# 開始運行dag
airflow scheduler
# 運行 web 界面
airflow webserver
12.airflow 修改時區
1.在airflow家目錄下修改airflow.cfg,設置時區爲上海
default_timezone = Asia/Shanghai
    
2.找到虛擬環境下的 airflow 文件, pipenv 和 mkvirtualenv 安裝的虛擬環境都在.virtualenv 中
    進入airflow包的安裝位置,也就是site-packages的位置,以下修改文件均爲相對位置
    cd /root/.virtualenvs/af/lib/python3.5/site-packages/
3.修改 airflow/utils/timezone.py
    # 在 utc = pendulum.timezone(‘UTC’) 這行(第27行)代碼下添加,
    from airflow import configuration as conf
    try:
    	tz = conf.get("core", "default_timezone")
    	if tz == "system":
    		utc = pendulum.local_timezone()
    	else:
    		utc = pendulum.timezone(tz)
    except Exception:
        pass
4.修改utcnow()函數 (在第69)
    原代碼 d = dt.datetime.utcnow() 
    修改爲 d = dt.datetime.now()
5.修改airflow/utils/sqlalchemy.py
    # 在utc = pendulum.timezone('UTC') 這行(第37行)代碼下添加
    from airflow import configuration as conf
    try:
    	tz = conf.get("core", "default_timezone")
    	if tz == "system":
    		utc = pendulum.local_timezone()
    	else:
    		utc = pendulum.timezone(tz)
    except Exception:
    	pass
6.airflow/www/templates/admin/master.html(31)
    把代碼 var UTCseconds = (x.getTime() + x.getTimezoneOffset()*60*1000); 
    改爲 var UTCseconds = x.getTime();
    把代碼 "timeFormat":"H:i:s %UTC%",
    改爲  "timeFormat":"H:i:s",

直觀的界面

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章