A. 系统架构概要 — 分布式系统 — 数据处理
概述
- 问题
- 工作分发不均造成的问题
- 任务调度
- 核心:在资源成本和挤占风险之间取得平衡
- 低优先级运行,导致不能及时获取足够的资源
- 惊群效应
- 一个错误导致整个集群出问题
- 摩尔负载模式:不同任务之间或者同一个任务的不同阶段的资源共享问题
离线批处理
- MapReduce
实时流式处理
- Spark
- Storm
交互式数据分析
- Hive
Google Workflow
- 主要设计
- 正确性保证
- 工作进程打开文件做中间结果存储,每个文件名都是全局唯一的
- 有效租约设计:只有拥有有效租约的任务才能够更新状态
- 每个任务都拥有一个全局ID,任务发生变化,ID也发生变化:一个工作进程必须同时持有一个活跃的租约,并且拥有配置文件中的正确ID,即任务ID
- 客户端和服务器在每次操作的时候检验“主任务”令牌,防止主任务发生变化产生错误
- 全球容灾操作
- 全球一致性数据库提供日志存储
- 通过Chubby选主,同时将结果存放到Spanner(全球一致性数据库),客户端使用内部的一个名称来查询目前的“主任务”
- 部署Global workflow和Local workflow两种角色Global workflow管理任务引用,Local workflow会将任务引用提交给Global workflow,Local workflow负责在Global workflow系统中更新一个特殊的心跳任务。如果心跳任务一段时间没有更新,另外一个远端的workflow任务会接手目前的任务。
- 正确性保证