记录一下正在开发的一个任务调度系统,目的是为了解决大数据平台下的任务管理、调度及监控。
定时触发和依赖触发。
系统模块:
JobManager:调度系统的Master,提供RPC服务,接收并处理JobClient/Web提交的所有操作;与元数据通讯,维护Job元数据;负责任务的统一配置维护、触发、调度、监控;
JobMonitor: 监控正在运行的Job状态、监控任务池、监控等待运行的Job;
JobWorker:调度系统的Slave,从任务池中获取Job、负责启动并收集Job的执行状态,维护至元数据;使用Jetty提供任务运行日志访问服务。
JobClient/Web:调度系统客户端类,前端界面提供给用户,用作任务的配置、管理、监控等;
任务元数据:目前使用Mysql,保存Job的配置、依赖关系、运行历史、资源配置、告警配置等;使用Mysql很不靠谱,任务多的时候会成瓶颈,必须迁移至分布式存储,Zookeeper也行;
系统特性:
分布式:容量和负载能力(JobWorker)可线性扩充;
高可用性:拥有主备Master,一旦主Master异常,备Master会接替主Master提供服务;
高容错性:Master重新启动后,会将之前未完成的任务重新调度运行;
完善易用的Web用户界面:用于用户配置、提交、查询、监控任务及任务的依赖关系;
支持任意类型的任务:除了Hadoop生态圈的MapReduce、Hive、Pig等,还支持其他任何语言开发的任务,如Java、Shell、Python、Perl、Spark等;
完整的日志记录:收集并记录任务运行过程中产生的标准输出和标准错误,提供Http访问,用户可通过访问任务对应的日志Url来方便的访问任务运行日志;
任务之间的灵活依赖:可将任意一个任务作为自己的父任务进行依赖触发;
灵活多样的告警规则:除了失败告警,也支持任务超时未完成、任务超时未开始等告警规则;
难点:
依赖触发时候,业务日期以及子孙任务的判断,特别是手工运行任务,并且运行所有子孙任务的场景;
元数据的设计和存储:刚开始想借鉴MapReduce的架构,元数据只做持久化,其他全通过RPC,在内存中进行,但复杂度太高。
任务的恢复:服务异常重启之后,想将之前所有的任务恢复到原来的状态。
JobWorker之间的共享存储:暂时将任务程序放在HDFS上,JobWorker在运行任务时候从HDFS获取到本地。
任务超时告警:当一个任务超过某一时间还没开始或者成功结束时触发告警,此类告警放到Quartz中去触发。
JobWorker可以运行在任意机器上,只需要能访问元数据,一些不好迁移的业务程序可以将JobWorker运行在其机器上,添加任务时候需指定资源,这样,在分配任务的时候只会分配到指定的资源上去。
不同的业务需要用不同的用户去执行:将业务类型和用户名绑定。
KILL任务:对于Hadoop和Hive任务,不能仅仅销毁执行进程,需要从日志中解析Hadoop jobid,执行hadoop kill命令。
获取更新信息请查看我的博客: http://lxw1234.com
相关推荐
本文从大数据海量任务调度与智能运维实践的角度出发,深入探讨了网易有数团队在实际工作中遇到的问题、选择的技术方案以及改进的成果。内容涉及开源工作流调度引擎Azkaban的应用、优化措施、高可用性(HA)设计、任务...
Taier(大禹)可能是阿里巴巴开源的一款分布式任务调度系统,设计目标是简化大数据任务调度,提供易用、高效、稳定的工作流引擎。它可能支持多种计算框架如Hadoop、Spark,并且具有良好的可扩展性和灵活性,方便...
本文将详细介绍DolphinScheduler的特点、架构和优势,以及如何使用它构建强大的大数据任务调度系统。 ## 特点和优势 ### 1. 分布式任务调度 DolphinScheduler支持分布式任务调度,可以同时管理和调度多个任务。这...
【快⼿大数据任务调度系统设计与实践】 在快⼿公司的大数据处理中,任务调度系统起着至关重要的作用。本文将深入探讨快⼿大数据任务调度系统的发展历程、面临挑战、架构设计以及应用成果。 1. **背景介绍** - **...
分布式任务调度系统在大数据处理和分析中扮演着至关重要的...总的来说,Hera分布式任务调度系统是大数据环境下的重要工具,它通过智能调度和强大的管理功能,确保数据部门能够高效、可靠地执行各种复杂的大数据任务。
综上所述,"大数据平台的任务调度方法"涵盖了从基础的系统架构到高级的性能优化策略等多个层面的知识点。这份文档很可能是对这些内容的详细阐述,对于理解和优化大数据平台的运行效率具有极高的参考价值。通过深入...
总结,构建大数据平台调度系统的最佳实践涵盖了选择合适的调度框架、优化任务调度策略、弹性伸缩、监控报警、数据管理、用户体验和安全性等多个方面。通过这些实践,企业可以更有效地利用大数据资源,提升数据分析的...
1. **任务调度策略**:合理的调度策略对于提升大数据处理的效率至关重要。这可能包括优先级调度、周期性调度、并行调度等,以适应不同的业务需求。例如,高优先级任务可以被优先执行,周期性任务可以设置定时触发,...
总之,掌握大数据平台的监控命令,能够帮助运维人员深入理解平台的运行状态,及时发现潜在问题,从而提升整体的大数据处理能力和系统的可靠性。通过熟练运用各种监控工具和命令,可以实现对大数据平台的全面、精准...
预警调度模块提供整个系统的任务调度依赖,封装关于Azkaban的Restful API,提供自动部署提交的功能,实现一键部署、停止等功能。 大数据监控系统设计架构的优点是可以实时监控大数据系统的状态,快速发现问题,并...
Azkaban大数据任务调度器是一种高效的工作流管理系统,专门设计用于解决复杂的数据处理流程中的任务调度问题。在大数据处理场景中,通常会涉及到多个独立或相互依赖的任务单元,如Shell脚本、Java程序、MapReduce...
作为一个全面的大数据监控工具,Dolphinscheduler旨在解决大数据环境中的工作流调度问题,帮助用户实现复杂的数据处理流程的自动化。 Dolphinscheduler的核心功能包括以下几个方面: 1. **工作流调度**:Dolphin...
在系统架构层面,Spark运行在Hadoop YARN或独立的Standalone集群上,提供资源管理和任务调度。对于大规模数据处理,可以采用Spark的弹性分布式数据集(RDD)和DataFrame/Dataset API,确保高效的数据并行处理和容错...
综上所述,AntJob作为一个基于.NET开发的分布式任务调度系统,结合了.NET框架的优势,为中小企业提供了一个强大且灵活的大数据实时计算平台。通过理解并掌握这些关键技术点,我们可以更好地利用AntJob解决大数据处理...
4. 提高运作效率:大数据Hadoop平台监控、预警及自动化可以自动地执行许多运作任务,从而提高了运作效率和生产效率。 5. 降低运作成本:大数据Hadoop平台监控、预警及自动化可以自动地执行许多运作任务,从而降低了...
在本压缩包“azkaban大数据调度任务.zip”中,我们可以预见到与使用Azkaban进行大数据任务调度相关的资料和配置文件。 **Azkaban概述** Azkaban设计的目标是简化大数据处理中的任务调度问题,通过提供一个用户友好...
大数据平台运维管理通常涉及数据仓库和作业调度、资源管理器与计算引擎、分布式协调任务与部署工具等多种组件。运维团队需要建立相应的平台架构,借助PC服务器构建大数据集群,以实现数据的拓展与维护。对于存储于...
数据逻辑结构中可能涵盖了驱动任务设置表、驱动设置表、调度任务表等相关数据表的设计,它们是大数据平台高效运行的基础。 7. 安全和容错设计: 大数据平台需要具备一定的安全机制来保障数据安全,如系统维护设计和...
总结来说,大数据存储及分层实践主要关注如何高效地存储和访问海量数据,而大数据任务调度系统则是保证数据处理流程顺畅运行的关键。通过理解并应用这些理论和技术,企业可以构建出强大且灵活的数据处理平台,以应对...