集群 | 分布式 |
---|---|
一个物理形态 | 一种工做方式 |
只要是一堆机器,就能够称为集群,至于它们是否协做干活,这个谁也不知道 | 一个程序或者系统,只要运行在不一样的机器上,就能够叫分布式(固然,C/S架构也能够叫分布式) |
通常是物理集中、统一管理的 | 不强调物理集中、统一管理 |
集群可能运行着一个或多个分布式系统,也可能根本没有运行分布式系统;web
分布式系统可能运行在一个集群上,也可能运行在不属于一个集群的多台(2台也算是多台)机器上。sql
Airflow是Airbnb开源的一个用Python编写的调度工具。markdown
DAG架构
Task分布式
在配置中,它是做业开始调度时间。而在谈论执行情况时,它是调度开始时间。工具
调度执行周期。spa
执行时间。在Airflow中称为执行时间,但其实它并非真实的执行时间。日志
[敲黑板,划重点]code
因此,第一次调度时间:在做业中配置的start_date,且知足schedule_interval的时间点。记录的execution_date为做业中配置的start_date的第一个知足schedule_interval的时间。orm
[举个例子]
假设咱们配置了一个做业的start_date为2019年6月2日,配置的schedule_interval为* 00 12 * * *
,那么第一次执行的时间将是2019年6月3日 12点。所以execution_date并非如期字面说的表示执行时间,真正的执行时间是execution_date所显示的时间的下一个知足schedule_interval的时间点。
可是有时候仅仅靠配置做业依赖和调度执行周期并不能知足一些复杂的需求
Airflow 提供了一个可视化的 Web 界面。启动 WebServer 后,就能够在 Web 界面上查看定义好的 DAG 并监控及改变运行情况。也能够在 Web 界面中对一些变量进行配置。
通常来讲咱们用 Celery Worker 来执行具体的做业。Worker 能够部署在多台机器上,并能够分别设置接收的队列。当接收的队列中有做业任务时,Worker 就会接收这个做业任务,并开始执行。Airflow 会自动在每一个部署 Worker 的机器上同时部署一个 Serve Logs 服务,这样咱们就能够在 Web 界面上方便的浏览分散在不一样机器上的做业日志了。
整个 Airflow 的调度由 Scheduler 负责发起,每隔一段时间 Scheduler 就会检查全部定义完成的 DAG 和定义在其中的做业,若是有符合运行条件的做业,Scheduler 就会发起相应的做业任务以供 Worker 接收。
Flower 提供了一个可视化界面以监控全部 Celery Worker 的运行情况。这个服务并非必要的。
Scheduler、WebServer、Flower: 10.21.0.192
Worker: 10.21.0.190、10.21.0.19一、10.21.0.193
RabbitMQ(Celry broker ): 10.21.0.192
Mysql(backend): 10.21.0.235