国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > 服务器 > 数据平台调度系统的设计

数据平台调度系统的设计

来源:程序员人生   发布时间:2015-01-14 08:27:41 阅读次数:3748次

文章出自: http://blog.csdn.net/lili72


 1、 能定时发起各类型的任务

1.1  任务类型比如 shell脚本,或jar 程序,或调用存储进程

1.2  可以设置每天甚么时候开始履行,每天履行几次。或每隔多久履行1次(类crontab

1.3  数据平台1般的任务类型有:

   1.3.1    101任务: 检查数据源文件是不是到齐(包括文件个数,或是.ok文件),如果到齐,把任务状态标志为成功,如果没有到齐循环屡次检测,任务状态标志为进行中。可能由于各种缘由会致使数据源延迟,所有需要屡次循环检测数据源,而不是把该任务标志位出错。而如果数据源迟迟没有成功履行,会影响到后面所有的报表ETL任务,所以最好的设计是假设数据源检测任务超过1定的时间没有成功完成,则预警到对应的负责人。短信或邮件通知负责人需要处理该数据源,数据源极可能出现问题。最好1个数据源配置1个101任务,而不是所有的数据源配置1个任务,这样就尽可能减少了数据源之间的耦合。不会由于某个数据源的延迟或问题影象全部数据平台的数据。实现方式可以是shell脚本,检查对应数据源的.ok文件是不是生成。灵活1点可以用程序实现,把要监控的内容都配置到数据库中,程序通过读取数据库中的配置内容检测各数据源的到达情况。

 1.3.2    102任务:加载数据到hdfs中。判断各自的数据源依赖任务是不是已成功完成,如果完成进行加载任务。

1.3.3     103任务:数据清洗转换。这里有数据去重,数据转码,去掉脏数据等

1.3.4    104任务:履行报表或其它数据利用层转换。

1.3.5    105任务:清算任务(清算1些日志或很久不用的数据),或数据转移任务,把数据sqoop到关系型数据。

 

 2、 能在依赖完成以后才开始履行(履行任务之前,首先必须检测自己的依赖任务是不是已成功履行完成,如果是则履行当前任务,否则当前任务进入等待队列)

 3、 能触发下级任务履行(当前任务成功履行完成,触发依赖当前任务的下级任务开始履行)

 4、 支持并发操作(多个没有关系依赖的任务,可以同步履行)

 5、 支持散布式调度 (如果调度的任务很多,在1台机器集中触发,对该台机器的压力很大,最好可以散布在多台机器上履行)

 6 、任务分配优先级(有些报表,或算法优先级别比较高,需要尽快完成)

 7、 可以可视化管理任务(比如:手动停止正在运行的任务,手动触发其它任务运行) 

 8、 出错可以屡次自动重新发起(由于平台本身的bug hadoophive等都有本身的bug,重新发起1次,就能够正常运行了,hive中最多见的是高并发找不到表Table 'hive.DELETEME1414791576856' doesn't exist)。 

 9、 出错会记录出错日志并预警。(有了日志可以很快定位出问题的缘由,或记录任务在hadoop中的jobid,可以到hadoop的日志中查询任务的报错缘由)

 10 、 记录任务的履行时间(包括开始履行时间,结束时间,任务耗时,记录这些时间可以评估全部调度系统的繁忙时间和空闲时间,有益于后续配置任务,同时可以监控任务的运行情况,优化某些任务)

 

固然大家可以先研究下开源的淘宝调度:

 easyschedule   http://code.taobao.org/p/easyschdeule/src/

生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生