大数据中的工作流调度
1. 工作流调度
工作流(Workflow),是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。工作流建模,即将工作流程中的工作如何前后组织在一起的逻辑和规则,在计算机中以恰当的模型表达并对其实施计算。
工作流要解决的主要问题是:为实现某个业务目标,利用计算机在多个参与者之间按某种预定规则自动传递文档、信息或者任务。
一个完整的大数据分析系统通常都是由多个前后依赖的模块组合构成的:数据采集、数据预处理、数据分析、数据展示等。
模块单元、模块内部往往存在时间上的先后依赖关系,且存在着周期性重复执行的工作。为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行。
2. 工作流调度实现方式
2.1. 简单的任务调度
使用 linux 的 crontab 来定义调度,但是缺点比较明显,无法设置依赖复杂任务调度。且需要编写相关 shell 脚本。
2.2. 复杂的任务调度
当下企业两种选择,要么自主开发工作流调度系统,要么使用开源调度系统,比如 azkaban、Apache Ooize、Zeus 等。
其中知名度比较高的是 Apache Oozie,但是其配置工作流的过程是编写大量的 XML 配置,而且代码复杂度比较高,不易于二次开发。
3. Azkaban 使用
3.1. Azkaban 介绍
Azkaban 是由领英公司推出的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban 使用 job 配置文件建立任务之间的依赖关系,并提供一个易于使用的 web 用户界面维护和跟踪工作流。
3.2. 数据预处理定时调度
数据预处理模块按照数据处理过程和业务需求,可以分成 3 个步骤执行:数据预处理清洗、点击流模型之 pageviews、点击流模型之 visit。并且 3 个步骤之间存在着明显的依赖关系,使用 azkaban 定时周期性执行将会非常方便。
预处理 MapReduce 程序 打 jar 包
编写 azkaban 调度 job 设置 dependence 依赖
将所有资源打成 zip 压缩包 在 azkaban 上创建工程执行
3.3. 数据入库定时调度
调度脚本的编写难点在于 shell 脚本。但是一般都是有固定编写模式。大体框架如下:
版权声明: 本文为 InfoQ 作者【五分钟学大数据】的原创文章。
原文链接:【http://xie.infoq.cn/article/28e158d45de9cee8ac944d815】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论