Stom概念
实时计算系统
S4 storm puma
自己实现一个实时计算系统要考虑哪些问题
1.低延迟、高性能、分布式(单机已无法满足要求)、可扩展、容错
2.容易在上面开发应用程序,消息不丢失败、消息严格有序
Storm优势
1.简单的编程模型 类似于MapReduce的Spout/Bolt
2.是一个服务框架,支持热部署,及时上线下线App
3.可以使用多种编程语言(Clojure,java,Ruby,Python)
4.容错性,Storm会管理工作进程与节点的故障
5.水平扩展,计算是在多个线程、进程、服务器间进行的
6.可靠的消息处理
7.快速 (ZeroMQ作为底层消息队列)
8.本地模式
Storm架构
Nimbus 主节点,分配代码、布置任务、故障检测
Supervisor 工作节点,监听工作,开始与停止属于自己管理的worker进程
Worker 进行具体处理组件逻辑的进程
Task 在worker中每一个Spout/Bolt的线程称为task.
Zookeeper Nimbus与Supervisor的调度
Storm基本概念
Topology 拓卜,一个job
Spout 在一个topology中产生源数据流的组件
Bolt 在一个topology中接受数据然后执行处理的组件。可以做业务逻辑。
Tuple 一次消息传递的基本单元
Stream 源源不断传递的tuple组成了stream
Storm使用场景
1.流聚合,把多个数据流聚合成一个数据流(基于一些共同的tuple字段)
2.批处理,把一组tuple一起处理,而不是一个个单独处理
3.BasicBolt
4.内存缓存+Fields grouping组合
5.计算top N
Storm的分组机制
Storm Grouping定义了一个流在Bolt任务间该如何被切分。提供了6种:
1.随机分组 Shuffle grouping
2.字段分组 Fields grouping
3.全部分组 (慎用)
4.全局分组 (解决top N)
5.无分组 (等效于随机分组)
6.直接分组
还可以实现CustomStreamGrouping接口来定制自己需要的分组
已有 0 人发表留言,猛击->> 这里<<-参与讨论
ITeye推荐