一、什么是Storm?
Storm是一个分布式计算框架,主要使用Clojure与Java语言编写,最初是由Nathan Marz带领Backtype公司团队创建,在Backtype公司被Twitter公司收购后进行开源。最初的版本是在2011年9月17日发行,版本号0.5.0。
2013年9月,Apache基金会开始接管并孵化Storm项目。Apache Storm是在Eclipse Public License下进行开发的,它提供给大多数企业使用。经过1年多时间,2014年9月,Storm项目成为Apache的*项目。目前,Storm的最新版本1.1.0。
Storm是一个免费开源的分布式实时计算系统。Storm能轻松可靠地处理*的数据流,就像Hadoop对数据进行批处理。
二、Storm和hadoop的区别
1)Storm用于实时计算,Hadoop用于离线计算。
2)Storm处理的数据保存在内存中,源源不断;Hadoop处理的数据保存在文件系统中,一批一批处理。
3)Storm的数据通过网络传输进来;Hadoop的数据保存在磁盘中。
4)Storm与Hadoop的编程模型相似
|
Storm |
hadoop |
角色 |
Nimbus |
JobTracker |
|
Supervisor |
TaskTracker |
|
Worker |
Child |
应用名称 |
Topology |
Job |
编程接口 |
Spout/Bolt |
Mapper/Reducer |
三、Storm的特点
1)适用场景广泛:Storm可以适用实时处理消息、更新数据库、持续计算等场景。
2)可伸缩性高:Storm的可伸缩性可以让Storm每秒处理的消息量达到很高。扩展一个实时计算任务,你所需要做的就是加机器并且提高这个计算任务的并行度。Storm使用Zookeeper来协调机器内的各种配置使得Storm的集群可以很容易的扩展。
3)保证无数据丢失:Storm保证所有的数据都被处理。
4)异常健壮:Storm集群非常容易管理,轮流重启节点不影响应用。
5)容错性好:在消息处理过程中出现异常,Storm会进行重试。