写在前面
本文隶属于专栏《100个问题搞定大数据理论体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!
本专栏目录结构和文献引用请见100个问题搞定大数据理论体系
解答
为什么需要工作流调度系统?
一个典型的大数据业务场景如下:
某个业务系统每天产生 100G 原始数据,我们每天都要对其进行处理,处理步骤如下
- 通过 Hadoop 先将原始数据同步到 HDFS 上。
- 借助 MapReduce 计算框架对原始数据进行转换,生成的数据以分区表的形式存储到多张 Hive 表中。
- 需要对 Hive 中多个表的数据进行 JON 处理,得到一个明细数据 Hive 大表。
- 将明细数据进行复杂的统计分析,得到结果报表信息。
- 需要将统计分析得到的结果数据同步到业务系统中,供业务调用使用。
一个完整的数据分析系统(业务系统)通常都是由大量任务单元组成,如 Shell 脚本程序、 Java 程序、 MapReduce 程序和 Hive 脚本等。
各任务单元之间存在时间先后及依赖关系,为了将这复杂的执行计划组织起来,需要一个工作流调度系统来调度执行。
crontab 存在的问题
在没有工作流管理器之前,可以使用 Linux 自带的 crontab 工具来定时调度任务,但是它存在如下几个问题。
- 大量的 crontab 任务需要管理;
- 任务没有按时执行,各种原因失败,需要重试;
- 多服务器环境下, crontab 分散在很多集群上,査看日志就很费时间。
正是由于上述需求以及 crontab 的功能不足,为了更好地管理和组织这样复杂的执行任务,就需要工作流管理器来对任务进行调度执行。