美文网首页大数据开发
大数据学习:什么是数据调度?

大数据学习:什么是数据调度?

作者: 成都加米谷大数据 | 来源:发表于2021-05-26 17:39 被阅读0次

    在大数据开发工作当中,我们常常会听到“调度”这个词,在大规模的数据处理任务面前,为了保证运行效率,以及不同任务之间的优先级问题,就需要调度工具、调度系统,去完成数据调度任务。今天的大数据学习,我们就来讲讲什么是数据调度?

    数据调度定义

    数据调度,就是一个任务何时运行,何时结束以及正确的处理任务之间的依赖关系。我们需要关注的首要重点是在正确的时间点启动正确的作业,确保作业按照正确的依赖关系及时准确的执行。

    在数据开发当中,对于数据调度,我们通常会指是“任务调度”或是“作业调度”。这里,我们先说一个概念,就是job和task。

    job和task有几种不同语境下的区别:

    spark语境下

    在Spark中,task是一个Job进行切割后运行的最小运算单元。一般情况下,一个rdd有多少个partition,就会有多少个task,因为每一个task只是处理一个partition上的数据。而task进行组合分批后,被称为stage。Spark会为不同的stage以及不同的task设好前后依赖,来保证整个job运行的正确性和完整性,最后一个resultTask结束意味着job成功运行。

    job>stage>task

    hadoop语境下

    Hadoop一个作业称为一个Job,Job里面分为Map Task和Reduce Task阶段,每个Task都在自己的进程中运行,当Task结束时,进程也会随之结束;

    job>task

    某调度产品语境下

    Task:一个任务。

    TaskType:任务类型,如ETL、MR job、Simple。

    Job:作业,任务在运行过程中的一次执行。

    综上所述,job、task不同语境下,他们的关系是不一样的,所以在不同的数据调度产品中,要注意他们的区别。

    数据调度产品包含什么模块?

    在数据调度产品中,需要理解几个问题:

    1.触发机制:时间、依赖、混合

    ·时间即任务按时间进行调度(年/月/日/小时/分钟/秒/毫秒)

    ·依赖即任务按依赖关系进行调度

    ·混合两者相互进行调度

    2.工作流:任务状态(中断&运行)、任务管理or治理(类型、变更)、任务类型、任务分片。

    3.调度策略:就绪&超时;重试&重试次数&重试用时。

    4.任务隔离:任务和执行的关系等。

    目前,市面上的任务调度系统有oozie、azkaban、airflow等等,此外,还有包括阿里的TBSchedule、腾讯的Lhotse、当当的elastic-job。

    我们可以按dag工作流类、定时分片系统分为两类:

    一种是dag工作流类系统:oozie、azkaban、chronos、lhotse

    一种是分片类系统:TB Schedule、elastic-job、saturn

    其中,dag(Directed Acyclic Graph),就是一种向无环图,是指任意一条边有方向,且不存在环路的图。

    如果选择了dag工作流这种方式,我们就要注意时间、完成度,保证丰富灵活的触发机制。

    分片是啥?我们来举个例子:如果我们有3台物理机,有10个每5s执行一次的定时任务,恰恰每个任务都打到第一台机器执行。为了避免“旱的旱死,涝的涝死”,所以我们需要将任务均衡分配到当前所有可执行的物理机上,这就是所谓分片机制。常见的分片机制比如平均分配算法、hash值、轮询算法,我们以各种各样的算法保证对于物理机的平均“消磨”。

    如果我们选择了分片类这种办法,就要注意准确、准时的触发。

    关于大数据学习,什么是数据调度,以上就为大家做了简单的介绍了。在分布式集群环境下,数据调度是一个值得关注的问题,而现有的数据调度产品也很多,之后我们会继续讲解。

    相关文章

      网友评论

        本文标题:大数据学习:什么是数据调度?

        本文链接:https://www.haomeiwen.com/subject/cjzksltx.html