1. 简介

Storm最初是由Nathan MarzBackType团队创建的,BackType是一家社交分析公司,之后,StormTwitter收购并开源。在很短的时间内,Storm成为分布式实时处理系统的标准,允许我们处理大量的数据,类似于Hadoop20139月,Storm成为了Apache软件基金会的孵化项目,并最终成为Apache顶级项目。

 

Storm 是一个分布式实时大数据处理系统,可以帮助我们方便地处理海量数据,具有高可靠、高容错、高扩展的特点。

Storm 是流式框架,有很高的数据吞吐能力,Strom 本身是无状态的,通过 ZooKeeper 管理分布式集群环境和集群状态。(现在Storm可以通过YARN对资源进行管理)

Strom 的安装和使用都很简单,但功能强大,可以并行地对实时数据流进行各种处理。

Apache Storm是用JavaClojure编写的,它一直以来都是实时分析领域的领导者。本教程将探讨Apache Storm的原理,分布式消息传递,安装,创建Storm拓扑并将它们部署到Storm集群,实时应用程序以及最后一些有用的示例。

2. 为什么选择Storm

Apache Storm是一款免费且开源的分布式实时计算系统。 Storm可以轻松地可靠地处理无限数据流,从而实时处理Hadoop进行批处理的操作。 Storm很简单,可以与任何编程语言一起使用,并且使用起来非常有趣!

 

Storm有许多用例:实时分析,在线机器学习,连续计算,分布式RPCETL等等。 Storm速度很快:基准测试表明,每个节点每秒处理超过一百万个元组。 它具有可扩展性,容错性,可确保数据得到处理,并且易于设置和操作。

 

Storm可以集成用户已经使用的消息队列和数据库技术。 Storm topology消耗数据流,并以任意复杂的方式处理这些数据流,如果需要还会重新分配每个计算阶段之间的数据流。

3. Apache Storm Hadoop比较 

基本上HadoopStorm框架都能用于分析大数据,它们两者相辅相成,但在某些方面有所不同。 Apache Storm可以执行除持久性以外的所有操作,而Hadoop擅长于除了实时计算之外的一切。下表比较了StormHadoop的特性。


Storm

Hadoop

实时流处理

批量处理

无状态

有状态

ZooKeeper为协调管理工具的主/从体系结构。主节点被称为nimbus,从属节点是supervisor

/从架构,可以有ZooKeeper,也可以没有。主节点是作业跟踪器(job tracker),从节点是任务跟踪器 task tracker)。

                                                            

一个Storm流处理可以在群集上每秒访问数以万计的消息。

Hadoop分布式文件系统(HDFS)使用MapReduce框架处理需要几分钟或几小时的大量数据。

Storm Topology会一直运行直到用户关闭或遇到意外的不可恢复的故障。

MapReduce作业按顺序执行并最终自行结束。

两者都是分布式和容错的

如果nimbus 或者 supervisor死亡,重新启动会使其从停止的地方继续,因此作业不会受到影响。

如果JobTracker死亡,所有正在运行的作业都将丢失。

4. Storm的特点 

Storm有如下特点:

1.     编程简单:开发人员只需要关注应用逻辑,而且跟Hadoop类似,Storm提供的编程原语也很简单

2.     高性能,低延迟:可以应用于广告搜索引擎这种要求对广告主的操作进行实时响应的场景。

3.     分布式:可以轻松应对数据量大,单机搞不定的场景

4.     可扩展: 随着业务发展,数据量和计算量越来越大,系统可水平扩展

5.     容错:单个节点挂了不影响应用

6.     消息不丢失:保证消息处理

 

不过Storm不是一个完整的解决方案。使用Storm时你需要关注以下几点:

1.     如果使用的是自己的消息队列,需要加入消息队列做数据的来源和产出的代码

2.     需要考虑如何做故障处理:如何记录消息队列处理的进度,应对Storm重启,挂掉的场景

3.     需要考虑如何做消息的回退:如果某些消息处理一直失败怎么办?

5. Apache Storm的优势 

Storm是开源的,强大的和用户友好的。 它可以用于小公司以及大公司。

 

Storm容错,灵活,可靠,并支持任何编程语言。

 

支持实时流处理。

 

Storm的速度令人难以置信,因为它具有处理数据的巨大能力。

 

通过线性增加资源,Storm即使在负载增加的情况下也能保持性能。 它具有高度的可扩展性。

 

Storm可以在数秒或数分钟内执行数据刷新和端到端交付响应。 它具有非常低的延迟。

 

Storm拥有可操作的智能。

 

即使群集中的任何连接节点死亡或消息丢失,Storm仍可提供有保证的数据处理。

6.Storm 适用场景 

1)日志处理

监控系统中的事件日志,使用 Storm 检查每条日志信息,把符合匹配规则的消息保存到数据库。

2) 电商商品推荐

后台需要维护每个用户的兴趣点,主要基于用户的历史行为、查询、点击、地理信息等信息获得,其中有很多实时数据,可以使用 Storm 进行处理,在此基础上进行精准的商品推荐和放置广告。

7. Apache Storm的使用案例

Apache Storm在实时大数据流处理方面非常有名。出于这个原因,大多数公司都将Storm作为其系统的一个组成部分。一些典型的例子如下:

Twitter – Twitter正在将Apache Storm用于其“Publisher Analytics products”产品。 Publisher Analytics products”在Twitter平台中处理每个推文和点击。 Apache StormTwitter基础架构深度整合。

 

NaviSite – NaviSiteStorm用于事件日志监视/审计系统。系统中生成的每个日志都将通过Storm处理。 Storm将根据配置的正则表达式集检查消息,如果匹配,那么该特定消息将被保存到数据库中。

 

Wego – Wego是一个旅行元数据搜索引擎,公司位于新加坡。它所用到的旅游相关数据来自世界各地不同时段的许多数据源。 Storm帮助Wego搜索实时数据,解决并发问题并为用户找到最佳匹配。



关注微信服务号,手机看文章
关注微信服务号,手机看文章