1.1 基礎安裝
1.1.1 默認自帶python2環境,自行安裝pip
sudo yum -y install python-pip
使用bigdata用戶安裝,需要加sudo,否則會出現Permission denied
1.1.2 進行pip的更新,否則後續很多安裝會報錯
sudo pip install --upgrade pip
sudo pip install --upgrade setuptools
1.1.3 安裝開發庫
sudo yum install python-devel
sudo yum install libevent-devel
sudo yum install mysql-devel
1.1.4 安裝mysql,作爲airflow的元數據庫(已安裝,跳過)
yum -y install mariadb mariadb-server
啓動並設置開機啓動
systemctl start mariadb
systemctl enable mariadb
1.1.5 初始化配置mysql(已安裝,跳過)
注:可以設定允許root遠程登錄,並且刪除test和None用戶,這樣才能使得mysql允許遠程登錄
mysql_secure_installation
1.1.6 安裝airflow
export SLUGIFY_USES_TEXT_UNIDECODE=yes
sudo pip install apache-airflow
(對方服務器不穩定,需要不斷嘗試)
默認安裝到了~/airflow目錄
1.1.7 初始化airflow並啓動
airflow initdb
airflow web server -p 8080
1.1.8 防止密碼明文存儲
sudo pip install cryptography
參考:http://airflow.apache.org/howto/secure-connections.html
1.1.9 在本地寫日誌
vi airflow.cfg
base_log_folder
http://airflow.apache.org/howto/write-logs.html
遠程日誌記錄
1.2 airflow mysql 安裝
airflow數據庫後端存儲元數據,建議使用MySQL或Postgres(這裏選擇mysql)
1.2.1 安裝airflow-mysql
pip install apache-airflow[mysql] —user
1.2.2 創建airflow用戶,創建airflow數據庫並給出所有權限給次用戶
#創建庫表和用戶
create database airflow default charset utf8mb4 collate utf8mb4_general_ci;
create user airflow@'%' identified by 'airflow';
grant all on airflow.* to airflow@'%';
flush privileges;
1.2.3 修改airflow配置文件,指向數據庫mysql
首次執行airflow命令時,會在$AIRFLOW_HOME下面創建airflow的配置文件airflow.cfg。
配置元數據庫
vi /home/bigdata/airflow/airflow.cfg
快速查找 /
sql_alchemy_conn = mysql://airflow:[email protected]:3306/airflow
注:這裏mysql在01節點,airflow裝在02節點
1.2.4 修改配置文件添加參數,之後初始化數據庫
vim /etc/my.cnf
[mysqld]
explicit_defaults_for_timestamp=1 // 添加此行 =1和=true是一樣的
初始化數據庫後端參考:http://airflow.apache.org/howto/initialize-database.html
修改後,重啓mysql服務器
service mysqld restart
參考:http://airflow.apache.org/faq.html
初始化元數據庫連接(默認sqlite)
airflow initdb
啓動web服務(不指定端口時默認端口:8080)
airflow webserver -p 8080
airfow webserver -D
如果你想把 airflow 作爲一個守護進程在後臺運行,那麼可以在後面添加參數 -d 。
airflow webserver --debug &
啓動scheduler
airflow scheduler
訪問驗證&多用戶登錄
airflow.cfg
authenticate = True
auth_backend = airflow.contrib.auth.backends.password_auth
filter_by_owner = True
增加一個用戶(在airflow所在服務器的python下運行)
import airflow
from airflow import models, settings
from airflow.contrib.auth.backends.password_auth import PasswordUser
user = PasswordUser(models.User())
user.username = 'airflow'
user.email = '[email protected]'
user.password = 'airflow'
session = settings.Session()
session.add(user)
session.commit()
session.close()
exit()
更多
清空元數據庫
airflow resetdb
關閉webserver
每次修改完airflow.cfg都要重啓airflow
每次新增DAG也需要重啓airflow,不然找不到新的DAG
關閉webserver:
ps -ef|grep -Ei '(airflow-webserver)'| grep master | awk '{print $2}'|xargs -i kill {}