感悟:微店大数据开发平台架构演进

1.为什么需要大数据开发平台?

  1. 效率低下。

  2. 脚本或代码没有版本控制,开发人员想回滚到以前的版本很不方便。

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

  4. 任务缺乏权限控制,可登陆gateway的任何人都可修改、运行脚本。

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

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

  7. 任务失败重新恢复后无法自动通知依赖下游重新生成。

  8. 任务失败要逐层向上游查找最源头的任务失败原因,排查异常繁琐。

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

为此,开发一个大数据开发平台,提高大数据开发的效率,为线上每天调度的任务保驾护航已迫在眉睫。

2.大数据开发平台应该具备的功能特性?

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

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

  3. 权限控制,任务的所有人、管理员才可以操作任务。

  4. 依赖调度,所有依赖的任务执行成功,自动触发自身执行。

  5. 任务执行失败,发送执行失败消息给任务所有人,人工介入。

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

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

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

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

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

3.分布式系统架构

  • 谁是master,谁是worker

        应用启动时,机器通过抢占的方式争当master,通过在数据库中插入一条记录的方式标识当前谁是master,master每隔一定时间去更新数据库,通过维护一个更新时间间接告知worker它还活着,worker同样每隔一定时间去查询数据库,倘若master的更新时间超过一定时间间隔,worker则认为master故障,第一个发现的worker将当仁不让的成为新的master。

  • master、worker容灾模式

        master与worker之间使用基于protobuf的netty进行通信,master会每隔一段时间去检测与worker的连接,若发现worker故障,master将断开与worker的连接,把分配到该故障worker上的任务重新分配到其他worker上去执行;若master故障,worker将使用抢占的方式争当新的master,新的mater将中止所有正在运行的Job,重新分配。

原文地址:https://www.cnblogs.com/xiaohaigege666/p/10636409.html