写在前面

本文隶属于专栏《100个问题搞定大数据理论体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和文献引用请见100个问题搞定大数据理论体系

解答

为什么需要工作流调度系统?

一个典型的大数据业务场景如下:

某个业务系统每天产生 100G 原始数据,我们每天都要对其进行处理,处理步骤如下

  1. 通过 Hadoop 先将原始数据同步到 HDFS 上。
  2. 借助 MapReduce 计算框架对原始数据进行转换,生成的数据以分区表的形式存储到多张 Hive 表中。
  3. 需要对 Hive 中多个表的数据进行 JON 处理,得到一个明细数据 Hive 大表。
  4. 将明细数据进行复杂的统计分析,得到结果报表信息。
  5. 需要将统计分析得到的结果数据同步到业务系统中,供业务调用使用。

一个完整的数据分析系统(业务系统)通常都是由大量任务单元组成,如 Shell 脚本程序、 Java 程序、 MapReduce 程序和 Hive 脚本等。

各任务单元之间存在时间先后及依赖关系,为了将这复杂的执行计划组织起来,需要一个工作流调度系统来调度执行。

crontab 存在的问题

在没有工作流管理器之前,可以使用 Linux 自带的 crontab 工具来定时调度任务,但是它存在如下几个问题。

  1. 大量的 crontab 任务需要管理;
  2. 任务没有按时执行,各种原因失败,需要重试;
  3. 多服务器环境下, crontab 分散在很多集群上,査看日志就很费时间。

正是由于上述需求以及 crontab 的功能不足,为了更好地管理和组织这样复杂的执行任务,就需要工作流管理器来对任务进行调度执行。

上一篇 下一篇