XXL(X)和 Dolphin(D)的对比
1、定位:
X是一个轻量级分布式的任务调度框架;
D是解决数据处理流程中错综复杂的依赖关系的框架。
2、可视化流程定义:
x:无,可配置任务级联触发;
D:有,所有流定时操作都是可视化的,通过拖拽模块来绘制DAG,配置数据源及资源,同时对于第三方系统,提供api方式的操作。
3、任务监控支持:
x: 无;
D:任务状态、任务类型、重试次数、任务运行机器、可视化变量等关键信息一目了然,可实时可视化监控任务的运行状态。
4、自定义任务类型支持:
x: 需要java先开发具体执行器;
D:本身支持。
5、任务类型支持:
x: java,shell,python,php;
D:支持传统的shell任务,同时支持大数据平台任务调度:MR、Spark、SQL(mysql、postgresql、hive/sparksql)、python、procedure、sub_process。
6、暂停/恢复/补数:(补数:补数据)
x:支持暂停、恢复操作;
D:支持暂停、恢复 补数操作,支持区间并行和串行两种补数方式。
7、高可用支持:
x:支持HA,调度中心HA和执行器HA;
D:支持HA,去中心化的多Master和多Worker。
8、过载处理能力:
x:任务队列机制,轮询;
D:任务队列机制,单个机器上可调度的任务数量可以灵活配置,当任务过多时会缓存在任务队列中,不会操作机器卡死。
9、集群扩展支持:
x:支持,新注册执行器即可;
D:支持,调度器使用分布式调度,整体的调度能力会随集群的规模线性增长,Master和Worker支持动态上下线。
dolphin的主要能力:
1、Task以DAG形式关联,实时监控任务的状态。(以DAG形式关联,任务方便调度,便于排错。xxl则不支持)
2、支持Shell、MR、Spark、SQL、依赖等10多种任务类型。(但我们用的主要是shell,所以这个功能不重要。)
3、支持流程实例和任务实例的优先级,如果流程实例和任务实例的优先级不设置,则默认是先进先出。(这个功能可以在我们资源有限的情况下,优先调度重要的任务。)
4、工作流可定时、依赖、手动、暂停/停止/恢复。(调度任务时和xxl功能相似)
5、支持补数、多租户、日志在线查看及资源在线管理。(最重要的是dolphin支持补数,多租户)
6、完善的系统服务监控,任务超时告警/失败。(都支持)
7、去中心化设计确保系统的稳定、高可用,通过 Zookeeper实现 Master 集群和 Worker 集群去中心化。(两者最大的区别就是dolphin去中心化,可防止调度器挂掉,任务失败)
8、支持每日十万数据量级任务稳定运行(两者相差不大)
9、失败策略:对于并行运行的任务,如果有任务失败,提供两种失败策略处理方式,继续是指不管并行运行任务的状态,直到流程失败结束。结束是指一旦发现失败任务,则同时Kill掉正在运行的并行任务,流程失败结束。(dolphin比xxl更优)
总结:
xxl轻量级,仅仅是个调度任务管理期,能够满足我们现在的任务需求,优;
dolphin相对于xxl比较复杂,依赖ZooKeeper,dolphin中的概念是工作流,更像是个调度编排,如果公司以 后数据量大增,业务更复杂,则比较适合。
dolphin安装要求:
Centos 7.0及以上,mysql: 5.6或5.7,jDK1.8 :必装,ZooKeeper 3.4.6+ 必装,Hadooop 2.6+:选装,
Hive(1.2.1) : 选装,hive任务提交需要安装,Spark(1.x,2.x) : 选装,Spark任务提交需要安装。