大数据系统之任务调度[1]

2016-05-20  本文已影响4371人  haitaoyao

什么是任务调度系统?

A job scheduler is a computer application for controlling unattended background program execution of jobs (from wikipedia)

简单来说就是你有很多任务, 彼此之间执行必须有一定顺序构成一个DAG. 如下图所示:

一个简单的 DAG 示意图

为什么需要任务调度系统


数据终究是要拿来计算的. 假设我们从小白开始搭建一套数据计算系统.

问题:

问题:

因此, 我们对调度系统的需求如下:


从系统的角度来说, 调度系统应该包含以下几个模块:

-- test.tmp_test_table 用于存储中间计算结果
CREATE TABLE test.tmp_test_table AS
SELECT data_date,
       count(*) AS cnt
FROM test_data
GROUP BY data_date;

是否具备幂等性? 回答是否定的. 因为一旦任务执行成功, 第二次执行时 test.tmp_test_table 已经存在, 任务会报错 (Table Already Exists).
如何修改? 很简单, 前面加一句 DROP TABLE IF EXISTS test.tmp_test_table 便可.

调度系统的需求明确了, 甚至各个模块的功能都想清楚了, 我们就可以像"选妃子"一样, 看市面上有哪些可选的开源项目

开源调度系统


两个系统都很不错, 也能够解决大多数需求. 网上针对两个的比较也很多, 我就不班门弄斧了.


继续上文中关于计算代码依赖 Library 的思考

因此, 如果我们把计算代码装进 Docker, 不就彻底解决了依赖问题?

-- EOF --

上一篇下一篇

猜你喜欢

热点阅读