配置mysql作爲元數據庫
安裝mysql
>: yum list | grep mysql >: yum install -y mysql-server mysql 啓動MySQL服務 >:service mysqld start 重啓MySQL服務 >:service mysqld restart 停止MySQL服務 >:service mysqld stop 檢查MySQL服務是不是開機自啓 >:chkconfig --list | grep mysqld 設置MySQL服務開機自啓 >:chkconfig mysqld on
設置mysql用戶密碼
設置MySQL根用戶密碼 (注:mysql root用戶默認沒有密碼) >:mysql -uroot 登陸mysql >:set password=password("password of root user") 爲root用戶設置密碼,不是必須操作 >:flush privileges >:create database airflow 創建airflow數據庫 >:grant all privileges on airflow.* TO 'odin'@'localhost' identified by 'odin_pw' with grant option (解釋:odin 替換成你想要設置的用戶名;odin_pw替換成該用戶的密碼) >:grant all privileges on airflow.* TO 'odin'@'%' identified by 'odin_pw' with grant option >:grant all privileges on airflow.* TO 'odin'@'ip' identified by 'odin_pw' with grant option (注:查看mysql版本信息的方法之一:`mysql --help | grep Distrib`)
在安裝完mysql之後,你需要查看mysql的版本mysql --help | grep Distrib
,5.7版本以下的mysql還需要做一些修改:
查看mysql默認存儲引擎並且修改默認引擎(因爲MySQL的默認引擎是My了SAM數據引擎,該引擎不支持事務也不支持外鍵,在使用的過程中會有報錯,並且對於字符串數據存儲的長度也有限制,所以需要將默認引擎修改爲innodb)
使用root賬號登陸MySQL >:mysql -uroot 查看mysql使用的默認引擎 >:show engines (你可以看到默認的數據引擎並且其也支持InnoDB) 設置默認引擎,在配置文件/etc/my.cof中的[mysqld]中加入>:default-storage-engine=INNODB 最後重啓mysql服務 (注意:在修改mysql默認存儲引擎之前穿件的數據庫和數據表的默認存儲引擎是不會發生變化的,需要刪除重建)
- 修改airflow源碼,5.7之下版本的mysql在使用的時候會報如下錯誤,所以需要將
airflow/migrations/versions/4addfa1236f1_add_fractional_seconds_to_mysql_tables.py
源碼中mysql.DATETIME(fsp=6)
全部改爲mysql.DATETIME()
>>>> sqlalchemy.exc.ProgrammingError: (_mysql_exceptions.ProgrammingError)
>>>> (1064, "You have an error in your SQL syntax; check the manual that
>>>> corresponds to your MySQL server version for the right syntax to use
>>>> near '(6) NULL' at line 1") [SQL: u'ALTER TABLE dag MODIFY last_scheduler_run DATETIME(6) NULL']
出現這個錯誤的原因:fsp表示支持秒的小數部分的精度,最大爲6,最小爲0表示沒有小數部分
但是這個功能只在5.6.4版本開始才被支持,所以如果版本太低,那一定就是會報錯的啊
- 修改airflow配置支持mysql
- 更改airflow的數據庫連接
sql_alchemy_conn = mysql://odin:odin_pw@localhost/airflow
- 初始化數據庫
airflow initdb
- 更改airflow的數據庫連接
配置CeleryExecutor作爲任務執行器
安裝erlang和rabbitMQ
wget https://packages.erlang-solutions.com/erlang/esl-erlang/FLAVOUR_1_general/esl-erlang_18.3-1~centos~6_amd64.rpm
yum install esl-erlang_18.3-1~centos~6_amd64.rpm
wget https://github.com/jasonmcintosh/esl-erlang-compat/releases/download/1.1.1/esl-erlang-compat-18.1-1.noarch.rpm
yum install esl-erlang-compat-18.1-1.noarch.rpm
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.1/rabbitmq-server-3.6.1-1.noarch.rpm
yum install rabbitmq-server-3.6.1-1.noarch.rpm
配置RabbitMQ
- 使用rabbitqctl status 檢查RabbitMQ是否正常啓動
- 設置開機啓動
chkconfig rabbitmq-server on
- 開啓服務
service rabbitmq-server start
- 停止服務
service rabbitmq-server stop
- 重啓服務
service rabbitmq-server restart
- 添加用戶並且配置權限
rabbitmqctl add_user [user name] [user password]
:rabbitmqctl asd_user odin 123456
rabbitmqctl set_user_tag odin administrator
(這裏可以添加不同的角色,也可以添加多個角色)rabbitmqctl add_vhost airflow
(添加一個命名空間或者叫虛擬主機 airflow)rabbitmqctl set_permissions -p airflow odin ".*" ".*" ".*"
登陸rabbitMQ
- rabbitMQ服務端口如下:
- client端通信端口
5672
- web ui訪問端口
15672
- server間通信端口
25672
- erlang發現端口
4369
- client端通信端口
- rabbitMQ服務端口如下:
- 配置airflow.cfg
broker_url = amqp://odin:123456@localhost:5672/airflow
celery_result_backend = db+mysql://odin:odin_pw@localhost:3306/airflow
executor = CeleryExecutor
default_queue = airflow
- 重新啓動airflow
airflow webserver -p8080
airflow worker
airflow flower
執行airflow flower
啓動celery的 flower ui,可以在網頁端訪問localhost:5555端口查看任務執行情況。