一、Storm到底是什么?
Apache Storm是一个分布式实时大数据处理系统。Storm设计用于在容错和水平可扩展方法中处理大量数据。
它是一个流数据框架,具有最高的摄取率。虽然Storm是无状态的,它通过Apache ZooKeeper管理分布式环境和集群状态。
它很简单,您可以并行地对实时数据执行各种操作
二、Apache Storm vs Hadoop
基本上Hadoop和Storm框架用于分析大数据。两者互补,在某些方面有所不同。
Apache Storm执行除持久性之外的所有操作,而Hadoop在所有方面都很好,但滞后于实时计算。
下表比较了Storm和Hadoop的属性。
----------------------------------------------------------------------------------------------------------------
Storm | Hadoop
----------------------------------------------------------------------------------------------------------------
实时流处理 | 批量处理
----------------------------------------------------------------------------------------------------------------
无状态 | 有状态
----------------------------------------------------------------------------------------------------------------
主/从架构与基于ZooKeeper的协调。 | 具有/不具有基于ZooKeeper的协调的主 - 从结构。
主节点称为nimbus,从属节点是主管。 | 主节点是作业跟踪器,从节点是任务跟踪器。
----------------------------------------------------------------------------------------------------------------
Storm流过程在集群上每秒可以访问数万条消息。 | Hadoop分布式文件系统(HDFS)使用MapReduce框架来处理大量的数据,需要几分钟或几小时。
----------------------------------------------------------------------------------------------------------------
Storm拓扑运行直到用户关闭或意外的不可恢复故障。 | MapReduce作业按顺序执行并最终完成。
----------------------------------------------------------------------------------------------------------------
两者都是分布式和容错的
----------------------------------------------------------------------------------------------------------------
如果nimbus / supervisor死机,重新启动使它 | 如果JobTracker死机,所有正在运行的作业都会丢失。
从它停止的地方继续,因此没有什么受到影响。 |
----------------------------------------------------------------------------------------------------------------
三、我们能不能自己搞一套storm?
坑,海量高并发大数据,高并发的请求数据,分布式的系统,流式处理的分布式系统
如果自己搞一套实时流系统出来,也是可以的,但是。。。。
(1)花费大量的时间在底层技术细节上:如何部署各种中间队列,节点间的通信,容错,资源调配,计算节点的迁移和部署,等等
(2)花费大量的时间在系统的高可用问题上:如何保证各种节点能够高可用稳定运行
(3)花费大量的时间在系统扩容上:吞吐量需要扩容(5万/s,10万/s,扩容)的时候,你需要花费大量的时间去增加节点,修改配置,测试,等等
四、storm的特点是什么?
(1)支撑各种实时类的项目场景:实时处理消息以及更新数据库,基于最基础的实时计算语义和API(实时数据处理领域);
对实时的数据流持续的进行查询或计算,同时将最新的计算结果持续的推送给客户端展示,同样基于最基础的实时计算语义和API
(实时数据分析领域);对耗时的查询进行并行化,基于DRPC,即分布式RPC调用,单表30天数据,并行化,每个进程查询一天数据,
最后组装结果
(2)高度的可伸缩性:如果要扩容,直接加机器,调整storm计算作业的并行度就可以了,storm会自动部署更多的进程和线程到其他的机器上去,无缝快速扩容
(3)数据不丢失的保证:storm的消息可靠机制开启后,可以保证一条数据都不丢,数据不丢失,也不重复计算
(4)超强的健壮性:从历史经验来看,storm比hadoop、spark等大数据类系统,健壮的多的多,因为元数据全部放zookeeper,不在内存中,随便挂都不要紧
(5)使用的便捷性:核心语义非常的简单,开发起来效率很高
Apache Storm是一个分布式实时大数据处理系统。Storm设计用于在容错和水平可扩展方法中处理大量数据。
它是一个流数据框架,具有最高的摄取率。虽然Storm是无状态的,它通过Apache ZooKeeper管理分布式环境和集群状态。
它很简单,您可以并行地对实时数据执行各种操作
二、Apache Storm vs Hadoop
基本上Hadoop和Storm框架用于分析大数据。两者互补,在某些方面有所不同。
Apache Storm执行除持久性之外的所有操作,而Hadoop在所有方面都很好,但滞后于实时计算。
下表比较了Storm和Hadoop的属性。
----------------------------------------------------------------------------------------------------------------
Storm | Hadoop
----------------------------------------------------------------------------------------------------------------
实时流处理 | 批量处理
----------------------------------------------------------------------------------------------------------------
无状态 | 有状态
----------------------------------------------------------------------------------------------------------------
主/从架构与基于ZooKeeper的协调。 | 具有/不具有基于ZooKeeper的协调的主 - 从结构。
主节点称为nimbus,从属节点是主管。 | 主节点是作业跟踪器,从节点是任务跟踪器。
----------------------------------------------------------------------------------------------------------------
Storm流过程在集群上每秒可以访问数万条消息。 | Hadoop分布式文件系统(HDFS)使用MapReduce框架来处理大量的数据,需要几分钟或几小时。
----------------------------------------------------------------------------------------------------------------
Storm拓扑运行直到用户关闭或意外的不可恢复故障。 | MapReduce作业按顺序执行并最终完成。
----------------------------------------------------------------------------------------------------------------
两者都是分布式和容错的
----------------------------------------------------------------------------------------------------------------
如果nimbus / supervisor死机,重新启动使它 | 如果JobTracker死机,所有正在运行的作业都会丢失。
从它停止的地方继续,因此没有什么受到影响。 |
----------------------------------------------------------------------------------------------------------------
三、我们能不能自己搞一套storm?
坑,海量高并发大数据,高并发的请求数据,分布式的系统,流式处理的分布式系统
如果自己搞一套实时流系统出来,也是可以的,但是。。。。
(1)花费大量的时间在底层技术细节上:如何部署各种中间队列,节点间的通信,容错,资源调配,计算节点的迁移和部署,等等
(2)花费大量的时间在系统的高可用问题上:如何保证各种节点能够高可用稳定运行
(3)花费大量的时间在系统扩容上:吞吐量需要扩容(5万/s,10万/s,扩容)的时候,你需要花费大量的时间去增加节点,修改配置,测试,等等
四、storm的特点是什么?
(1)支撑各种实时类的项目场景:实时处理消息以及更新数据库,基于最基础的实时计算语义和API(实时数据处理领域);
对实时的数据流持续的进行查询或计算,同时将最新的计算结果持续的推送给客户端展示,同样基于最基础的实时计算语义和API
(实时数据分析领域);对耗时的查询进行并行化,基于DRPC,即分布式RPC调用,单表30天数据,并行化,每个进程查询一天数据,
最后组装结果
(2)高度的可伸缩性:如果要扩容,直接加机器,调整storm计算作业的并行度就可以了,storm会自动部署更多的进程和线程到其他的机器上去,无缝快速扩容
(3)数据不丢失的保证:storm的消息可靠机制开启后,可以保证一条数据都不丢,数据不丢失,也不重复计算
(4)超强的健壮性:从历史经验来看,storm比hadoop、spark等大数据类系统,健壮的多的多,因为元数据全部放zookeeper,不在内存中,随便挂都不要紧
(5)使用的便捷性:核心语义非常的简单,开发起来效率很高