实时可靠的开源分布式实时计算系统实时可靠的开源分布式实时计算系统——Storm
在Hadoop生态圈中,针对大数据进行批量计算时,通常需要一个或者多个MapReduce作业来完成,但这种批量计算方式是满
足不了对实时性要求高的场景。
Storm是一个开源分布式实时计算系统,它可以实时可靠地处理流数据。
Storm特点
在Storm出现之前,进行实时处理是非常痛苦的事情,我们主要的时间都花在关注往哪里发消息,从哪里接收消息,消息如何
序列化,真正的业务逻辑只占了源代码的一小部分。一个应用程序的逻辑运行在很多worker上,但这些worker需要各自单独部
署,还需要部署消息队列。最大问题是系统很脆弱,而且不是容错的:需要自己保证消息队列和worker进程工作正常。
Storm完整地解决了这些问题。它是为分布式场景而生的,抽象了消息传递,会自动地在集群机器上并发地处理流式计算,让
你专注于实时处理的业务逻辑。
Storm有如下特点:
编程简单:开发人员只需要关注应用逻辑,而且跟Hadoop类似,Storm提供的编程原语也很简单;
高性能,低延迟:可以应用于广告搜索引擎这种要求对广告主的操作进行实时响应的场景;
分布式:可以轻松应对数据量大,单机搞不定的场景;
可扩展:随着业务发展,数据量和计算量越来越大,系统可水平扩展;
容错:单个节点挂了不影响应用;
消息不丢失:保证消息处理。
不过Storm不是一个完整的解决方案,使用Storm时你需要关注以下几点:
如果使用的是自己的消息队列,需要加入消息队列做数据的来源和产出的代码;
需要考虑如何做故障处理:如何记录消息处理的进度,应对Storm重启,挂掉的场景;
需要考虑如何做消息的回退:如果某些消息处理一直失败怎么办?
Storm与Hadoop区别
定义及架构
Hadoop是Apache的一个项目,是一个能够对大量数据进行分布式处理的软件框架。
Storm是Apache基金会的孵化项目,是应用于流式数据实时处理领域的分布式计算系统。
应用方面
Hadoop是分布式批处理计算,强调批处理,常用于数据挖掘和分析。
Storm是分布式实时计算,强调实时性,常用于实时性要求较高的地方。
计算处理方式
Hadoop是磁盘级计算,进行计算时,数据在磁盘上,需要读写磁盘;Hadoop应用MapReduce的思想,将数据切片计算来处
理大量的离线数据。Hadoop处理的数据必须是已经存放在HDFS上或者类似HBase的数据库中,所以Hadoop实现的时候是通
过移动计算到这些存放数据的机器上来提高效率的。