Storm简介
实时流式计算介绍
大数据环境下,流式数据作为一种新型的数据类型,是实时数据处理所面向的数据类型,其有以下几个特征:
1. 连续性:数据一直在产生而且不会间断
2. 无边界性:数据不会结束
3. 瞬时性:数据有瞬时突发性
实时流式计算就是对流式数据的实时计算,相比传统的数据处理技术,其具有以下特点:
1. 低延迟:从处理的数据角度来看,每一条数据项都可在有限时间内由系统处理完成,也即响应时间相对较短。
2. 高吞吐:从处理的过程角度来看,系统或节点在单位时间内能够成功处理数据项的数量比较多,也即吞吐量高。事实上,处理给定规模的数据,系统高吞吐量意味着每一项数据被成功处理的耗时短,所以,高吞吐量与低延迟追求的目标本质上是一致的。
3. 高容错:由于网络或者其他原因,可能会出现错误或者不完整的数据,系统对这些数据要有容错性,不能因为这些数据导致系统崩溃
4. 算法复杂度低:高吞吐的必然要求,尽可能用高效简单的算法解决问题
除了Storm流式处理框架,还有其他几种处理框架:
1. Queue + Worker: 数据放到队列里,由不同的worker来进行处理,是最原始的高性能数据处理框架
2. Apache S4:Yahoo开源的实时数据流计算平台:可靠性和容错性不如Storm,不保证完全不丢失数据;用户活跃度低
3. Spark Streaming:与Storm的根本区别是Storm处理的是每次传入的一个事件,而Spark Streaming处理的是某个时间段窗口的事件流,因此Storm处理一个事件可以达到极低的延迟,而Spark Streaming的延迟相对较高。
认识Storm
Storm是由Twitter开源的一个类似于Hadoop的实时数据处理框架。Storm是分布式流式数据处理系统,其强大的分布式集群管理、便捷的针对流式数据的编程模型、高容错保障,是它成为流式数据实时处理的首选。它有以下特点和优势:
1. 易用性:为复杂的流计算模型提供了丰富的服务和编程接口,易于学习和使用,降低了学习和开发的门槛。
2. 容错性:具有适应性的容错能力。当工作进程(worker)失败时,Storm可以自动重启这些进程;当一个节点宕机时,其上的所有工作进程都会在其它节点被重启;对于storm的守护进程,nimbus和supervisor被设计为无状态和快速恢复的,也即当这些守护进程失败时,它们可以通过被重启恢复而不会产生其他额外影响。
3. 可扩展性:storm作业天然具有并行性,可以跨机器甚至集群执行。Topology中各个不同的组件(Spout或Bolt)可以配置为不同的并行度。当集群性能不足时,可以随时添加物理机器并对任务进行balance。
4. 完整性:对数据提供完整性操作:至少处理一次、至多处理一次、处理且仅处理一次。用户可以根据自己的需求进行选择。
Storm使用场景
Storm目前使用极为广泛,已经在Twitter、Yahoo、腾讯、阿里、新浪等著名公司的产品级应用中使用。
1. 新浪的实时分析平台
2. 腾讯的实时计算平台
3. 奇虎360的实时平台
4. 百度的实时系统
5. 阿里的Jstorm
- 点赞
- 收藏
- 关注作者
评论(0)