大数据开发平台架构

传统的数据开发流程git

开发人员经过公共帐号登陆安装了Hive、Hadoop客户端的gateway机器;数据库

编写本身的脚本,调试代码,完成后经过crontab配置脚本定时执行;架构

为了防止脚本被其余同事修改,一些谨慎的同事会在每次开发完本身的脚本后同步一份到本机,后面为了实现版本控制,把脚本同步到了git;分布式

传统的开发流程面临的问题oop

效率低下。测试

脚本或代码没有版本控制,开发人员想回滚到之前的版本很不方便。大数据

若开发人员疏忽,添加新的需求后未通过调试,将可能会影响生成的数据,进而影响线上业务。版本控制

任务缺少权限控制,可登录gateway的任何人均可修改、运行脚本。调试

对于脚本中依赖的表,只能预估它天天产生的时间,一旦它产出延迟,将影响数据的产出。队列

任务失败无任何报警,只能依靠人工发现。

任务失败从新恢复后没法自动通知依赖下游从新生成。

任务失败要逐层向上游查找最源头的任务失败缘由,排查异常繁琐。

一旦gateway机器故障,全部的任务都将灰飞烟灭,毫无疑问这将是一场灾难。

大数据开发平台应具有的功能特征

Mars具有的功能特性:

引入版本控制,方便开发人员回滚到以前版本,快速恢复线上调度的任务。

规范大数据开发、测试、上线的流程。

权限控制,任务的全部人、管理员才能够操做任务。

依赖调度,全部依赖的任务执行成功,自动触发自身执行。

任务执行失败,发送执行失败消息给任务全部人,人工介入。

手动恢复任务,恢复成功后,自动通知下游的任务从新执行。

任务依赖图谱,成功失败用不一样颜色区分,失败源头一目了然。

任务信息存储在数据库,Mars机器采用分布式系统架构,即便单台机器故障也不会影响使用。

输入输出检测,判断输入表是否准备好,检测输出表数据是否完整。

合理使用Hadoop资源。用户只能使用所属团队指定的hadoop队列。