离线数据开发之任务调度系统
大数据调度系统的由来
1)大数据下,调度系统时整个大数据体系的指挥中心,负责合理的调配资源。
2)在调度系统中各类任务互相依赖,形成一个有向无环图。
3)传统的数据仓库是依靠定时任务的方式进行调度,这种方式存在几个缺点:
① 任务调度依据时间,造成前一个任务未完成而后面的任务已经开始
② 任务难以并发,难以设置优先级
③ 任务管理维护比方便
4)大数据下数据量巨大,同时任务种类繁多,如MapReduce,hive,spark等,为了解决以上问题,大数据任务调度系统应运而生
调度系统设计模型
1)调度系统的构成:
2)调度系统的重要概念:
① 任务状态机模型:描述任务节点在生命周期中的状态
② 工作流状态机模型:描述任务节点在由调度树生成的工作流在运行时的不同状态
3)调度引擎的工作原理
基于任务状态机模型、工作流状态机模型,以事件驱动的方式运行,为任务节点生成实例,并在调度树中生成工作流。任务节点示实例在工作流状态机、工作流状态机和事件处理器之间转换。重要组件如下:
① Async Dispatcher:异步处理任务调度
② Sync Dispatcher:同步处理任务调度
③ Task 事件处理器:与任务状态机交互
④ DAG 事件处理器:与工作流状态机交互
4)执行引擎的工作原理
由三部分组成,服务接口、服务实现、task
① 服务接口:
-
任务管理接口:进行集群任务管理
-
系统管理接口:进行集群资源管理
② 服务实现:
- Driver:
-
Task pool:
-
-
- ResourceManager:整个集群的资源管理
-
TaskContainer:为Task执行提供载体
-
-
- session manager:实现对task session 的管理
-
node:集群中的节点,提供物理资源
③ task
批处理任务或者流处理任务会提交给对应的平台进行处理,其他如shell、数据同步等任务会在调度系统中直接执行