Pandora数据工厂之任务调度引擎

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zxh19800626/article/details/84669939

任务调度引擎

     调度引擎作为整个集群的大脑,主要为平台中数据采集、数据计算、数据查询、数据清洗等各种需要调度任务的场景,提供统一的任务调度功能。

一、执行引擎

     执行引擎主要负责任务请求、任务调度和任务执行,整个架构采用master-slave架构,包括客户端、注册中心、任务管理中心、执行器和任务元数据等。

  • 客户端JobClient

  JobClient为执行引擎的web客户端,提供任务的配置、管理、监控等功能。针对数据采集、数据计算、数据查询、数据清洗等各种需要调度任务的场景问题,在客户端界面进行任务配置和调度配置后,通过restful api向jobmanager发送任务调度请求。当然,也可以直接调用restful api向jobmanager发送任务调度请求

  •  注册中心Discover

   是将jobmanager和执行器结合到一起的服务。执行器节点启动后向注册中心进行服务注册,jobmanager从注册中心Discover获得可以正常工作的执行器节点,进行任务调度执行。

  • 任务元数据

Job的元数据存储采用Mysql,保存Job的配置、依赖关系、运行历史、资源配置、告警配置等元数据。

  • 管理中心JobManager

   JobManager主要功能提供http服务,接收并处理JobClient提交的所有操作;与元数据通讯,维护Job元数据;负责任务的统一配置维护、触发、调度、监控度信息。JobManager主要包括服务注册、HttpServer、资源管理、任务监控、调度服务、日志管理以及Failover等功能。

HttpServer:接收JobClient调度任务的请求;

JobMonitor: 监控正在运行的Job状态、监控任务池、监控等待运行的Job。

  • 执行器

   执行引擎专注于任务的执行等操作,执行器接收JobManager发出的任务执行请求并执行任务逻辑,并收集Job的执行状态,维护至元数据库。

二、任务管理

任务管理包括任务操作、任务的调度配置、触发方式、任务执行状态和日志搜集等功能。

  • 任务操作

  提供任务的添加、编辑、删除以及任务运行状态的获取、任务启动、挂起、暂停和重新执行等功能。

  • 任务类型

  除了Hadoop生态圈的MapReduce、Hive、Pig等,还支持其他任何语言开发的任务,如Java、Shell、Python、Spark等;

  • 任务触发方式

  任务触发方式主要有三种:

  1. Cron方式
  2. 任务依赖方式
  3. 直接调用api触发任务的单次执行
  • 执行流程

  1. 用户通过JobClient向JobManager提交任务请求,httpserver模块接受任务请求;
  2. 执行引擎是以任务流为单位进行调度执行的,JobManager解析任务流,并把任务存放到任务池,同时把任务流和任务元数据写入元数据存储mysql;
  3. 调度器Scheduler根据搜集各节点资源情况,检测任务是否触发,并发起调度请求,把任务发送给执行器执行,并写入调度日志
  4. 执行器接受任务请求把任务存放到任务队列里,通过任务线程池执行任务,把执行日志写入本地日志文件并通过日志服务传递给JobManager,执行状态写入元数据。如果是提交到yarn资源执行的hadoop任务,资源管理器会根据任务提交用户进行权限认证和资源需求校验,如果认证失败或资源不满足需求,任务执行失败,任务监控模块把执行失败状态写入元数据,并把异常日志写入日志并通过日志服务传递给JobManager;
  5. 任务执行过程中,执行器通过回调服务把任务执行状态实时传递给JobManager的任务监控服务;
  6. 任务执行结束后,执行器执行回调任务,在回调请求执行结束之后会将执行结果回调通知JobManager。 
  • 资源管理

    任务是任务调度的执行单位,主要包括执行的程序、脚本和所需要的资源。资源管理主要负责执行任务执行过程中依赖的资源进行管理,资源类型包括jar、脚本等

  • 路由策略
  1. ROUND(轮询):根据轮询算法选择在线的机器;
  2. RANDOM(随机):随机选择在线的机器;
  3. CONSISTENT_HASH(一致性HASH):每个任务按照Hash算法固定选择某一台机器,且所有任务均匀散列在不同机器上。
  4. LEAST_FREQUENTLY_USED(最不经常使用):使用频率最低的机器优先被选举;
  5. LEAST_RECENTLY_USED(最近最久未使用):最久为使用的机器优先被选举;
  6.  FAILOVER(故障转移):按照顺序依次进行心跳检测,第一个心跳检测成功的机器选定为目标执行器并发起调度;
  •  回调服务

   JobManager作为Web服务部署时,一方面承担调度中心功能,另一方面也为执行器提供API服务。执行器在接收到任务执行请求后,执行任务,在执行结束之后会将执行结果回调通知JobManager。

  • 日志管理

  执行引擎的日志大体上有三种:监控日志、调度日志和任务执行日志。JobManager每次进行任务调度,都会记录一条任务调度日志。执行器在任务执行过程中产生的任务执行日志。监控器产生的Job状态日志和监控日志。

  • 失败策略

三、流程管理

  1. 任务超时控制:支持自定义任务超时时间,任务运行超时将会主动中断任务;
  2. 任务失败重试:支持自定义任务失败重试次数,当任务失败时将会按照预设的失败重试次数主动进行重试;
  3. 任务失败告警;默认提供邮件方式失败告警,同时预留扩展接口,可方便扩展短信、钉钉等告警方式;

任务流程管理主要是管理任务执行之间得依赖关系,多个任务通过依赖关系组成任务流程。执行引擎是以任务流为单位进行任务调度的。

1. 依赖配置

   任务配置时,可选择任务的前置依赖。只有前置依赖任务执行成功,后置的任务才可执行。前置依赖可以选择多个。不同周期的任务也可依赖,可以指定不同周期依赖任务的时间偏移如当日任务可依赖上可月的月任务。

  每个任务都对应有一个任务ID,同时,每个任务支持设置属性“子任务ID”,通过“任务ID”可以匹配任务依赖关系。当父任务执行结束并且执行成功时,将会根据“子任务ID”匹配子任务依赖,如果匹配到子任务,将会主动触发一次子任务的执行。

2. 流程操作

   流程操作主要包括任务流程的查询、创建、编排和删除以及以图形化的方式展示任务之间存在的依赖关系。用户可以通过JobClient提供的图形界面进行任务的编排。

3. 调度配置

调度配置用于任务的调度规则的配置,能够满足各任务类型的调度策略。调度规则又分为

1) crontab表达式

2) 时间调度规则如分钟、小时、天、周和月调度周期配置

3) 频率调度规则

四、插件管理

   插件式架构是一种理想的高扩展性的架构,应用广泛。为了考虑执行任务执行模式的可扩展性,任务运行模式采用插件式架构。

  • 插件定义

结合不通的任务类型,针对各种数据处理流程的不同需求(数据采集分发,清洗转换,核心处理,数据挖掘等),为用户提供可视化,可管理,可编辑,可扩展的插件开发。插件开发把已配置管理的数据源、元数据封装成不同的业务任务。

  •  插件使用

    平台提供满足不同业务类型的插件,并按照业务类型进行分类。用户可采用拖拽方式,将分类中的插件图标拖拽到开发区域,不同插件图标间可连线形成完整业务处理DAG流程,并将流程挂载到调度平台运行。满足丰富灵活的业务开发需求。

  • 插件扩展

可根据业务需求配置开发新的插件,实现业务处理的可扩展性。插件的扩展主要包括插件页面的动态配置和插件逻辑包的上传管理。

  • 插件管理

支持插件(包括采集插件,其它插件等)的增删改查,授权和版本管理。

  1. 插件开发者可以查看插件的信息:插件类型,插件名,插件版本,插件状态,插件新增修改时间和用户等信息。
  2. 插件开发者可通过插件配置服务动态的进行动态配置和插件依赖包上传,完成插件和新增和修改操作。插件管理可定义插件所属类型,如数据采集,数据加工,数据配送等
  3. 插件开发者可以对插件进行授权,可开放给所有角色使用,也可以授权给具体角色或用户使用。
  4. 具备版本管理和版本回退功能。插件开发完成后需要提交审核,只有审核通过后才能生效并形成正式版本。插件开发人员可以选择不同的版本号进行回退。

无题

暗停针线烛影长,落絮轻沾扑绣廊。
银河渐落微风起,桂树轻摇一院香。

猜你喜欢

转载自blog.csdn.net/zxh19800626/article/details/84669939