增量,流式计算
我想问为什么会放一个高校邦
增量,流式计算
我想问为什么会放一个高校邦
增量计算的特点
Temporal SQL
Update 语义
Twritter
Strom
Topology:完整的流计算作业
Spout 收集数据的任务
Bolt 进行相关计算的任务
Task SpoutBolt负责某一数据分片的实体(调度的最小单位)
Acker:跟踪节点的处理状态
系统架构
Nimbus - > zookeeper - > Supervisor
容错:
Strrom
优点:
消息在框架内不落地,处理非常高效
保证消息至少被处理
Transactional Topology 为消息去重提供了去重
缺点
Transactional Topolgy 对Batch 串行执行
Kinesis
动态调整并发度
MillWhell 微软流计算框架
核心技术
数据收集:
输入
拉: kafka hbase hdfs
推:需要实现Http处理模块
输出
订阅:结果数据写入消息队列,业务方订阅
服务:
Shuffle 机制:
Pull
Push 上游 - 下游
计算
LongLive :不同的调度方式,不同 的消息机制
容错:任务跟踪机制
增量计算语义
消息机制
分发 -》 接收 -》 处理
难题
消息源头重发
节点内部重放
有状态计算
分布式挑战:集群规模上限是多少 计算作业是否可以线性增加
数据倾斜问题:用户可以重新定义等价的DAG来避免数据倾斜(牺牲性能)
倾斜带来超市,雪崩。数据动态的服务变化
服务化诉求:数据高可靠(数据中间状态) 服务的可用性(集群扩容,系统代码升级是否要停止服务)
单节点故障是否导致整个服务的不可用
增量计算语义
batch ==> delta f()
离线、在线或者:IO Qos
长进程rt sla 与cpu平均利用率的矛盾
minCPU/maxCPU
Priority
Cgroup
申请方式、部署方式 拉起方式 包管理
资源约束
离线ji'suan
批量计算
实时计算
增量计算
流式计算
流:有向 无界
全量
增量
Strom: Topology 有向无环图
Spout 收集数据的任务
Bolt 进行计算
Task 最小任务单位
Acker 负责消息跟踪
异或: 成对出现 结果为0