1、背景-流式计算与storm
2011年在海量数据处理领域,Hadoop是人们津津乐道的技术,Hadoop不仅可以用来存储海量数据,还以用来计算海量数据。因为其高吞吐、高可靠等特点,很多互联网公司都已经使用Hadoop来构建数据仓库,高频使用并促进了Hadoop生态圈的各项技术的发展。一般来讲,根据业务需求,数据的处理可以分为离线处理和实时处理,在离线处理方面Hadoop提供了很好的解决方案,但是针对海量数据的实时处理却一直没有比较好的解决方案。
就在人们翘首以待的时间节点,storm横空出世,与生俱来的分布式、高可靠、高吞吐的特性,横扫市面上的一些流式计算框架,渐渐的成为了流式计算的首选框架。
如果庞麦郎在的话,他一定会说,这就是我要的滑板鞋!
在2013年,阿里巴巴开源了基于storm的设计思路使用java重现编写的流式计算框架jstorm。那jstorm是什么呢?
在jstorm早期的介绍中,一般会出现下面的语句:JStorm 比Storm更稳定,更强大,更快,Storm上跑的程序,一行代码不变可以运行在JStorm上。
在最新的介绍中,jstorm的团队是这样介绍的:JStorm 是一个类似Hadoop MapReduce的系统, 用户按照指定的接口实现一个任务,然后将这个任务递交给JStorm系统,Jstorm将这个任务跑起来,并且按7 * 24小时运行起来,一旦中间一个Worker 发生意外故障, 调度器立即分配一个新的Worker替换这个失效的Worker。
因此,从应用的角度,JStorm 应用是一种遵守某种编程规范的分布式应用。
从系统角度, JStorm一套类似MapReduce的调度系统。 从数据的角度, 是一套基于流水线的消息处理机制。实时计算现在是大数据领域中最火爆的一个方向,因为人们对数据的要求越来越高,实时性要求也越来越快,传统的Hadoop MapReduce,逐渐满足不了需求,因此在这个领域需求不断。现在,Jstom在淘宝海量的数据和大量的业务场景的锤炼下,从开始的追随者,使用者慢慢的演变成了流式计算技术的领导者。当下,还有很多企业并不知道jstorm,他们的生产环境依然是storm,并且storm也在不断更新,在笔者成文的时间点上,storm发布了1.0的beta版。
鉴于大多数企业的生产环境还在使用storm,我们学习的目标还是切换到Apache基金会的storm上来。
2、背景-Storm是为了解决什么样的问题
伴随着信息科技日新月异的发展,信息呈现出爆发式的膨胀,人们获取信息的途径也更加多样、更加便捷,同时对于信息的时效性要求也越来越高。
举个搜索场景中的例子,当一个卖家发布了一条宝贝信息时,他希望的当然是这个宝贝马上就可以被卖家搜索出来、点击、购买啦,相反,如果这个宝贝要等到第二天或者更久才可以被搜出来,估计这个大哥就要骂娘了。
再举一个推荐的例子,如果用户昨天在淘宝上买了一双袜子,今天想买一副泳镜去游泳,但是却发现系统在不遗余力地给他推荐袜子、鞋子,根本对他今天寻找泳镜的行为视而不见,估计这哥们心里就会想推荐你妹呀。其实稍微了解点背景知识的码农们都知道,这是因为后台系统做的是每天一次的全量处理,而且大多是在夜深人静之时做的,那么你今天白天做的事情当然要明天才能反映出来啦。
3、背景-实现实时计算系统需要解决那些问题
如果让我们自己设计一个实时计算系统,我们要解决哪些问题。
- 低延迟:都说了是实时计算系统了,延迟是一定要低的。
- 高性能:性能不高就是浪费机器,浪费机器是要受批评的哦。
- 分布式:系统都是为应用场景而生的,如果你的应用场景、你的数据和计算单机就能搞定,那么不用考虑这些复杂的问题了。我们所说的是单机搞不定的情况。
- 可扩展:伴随着业务的发展,我们的数据量、计算量可能会越来越大,所以希望这个系统是可扩展的。
- 容错:这是分布式系统中通用问题。一个节点挂了不能影响我的应用。
- 通信:设计的系统需要应用程序开发人员考虑各个处理组件的分布、消息的传递吗?如果是,发人员可能会用不好,也不会想去用。
- 消息不丢失:用户发布的一个宝贝消息不能在实时处理的时候给丢了,对吧?
4、离线计算是什么?
离线计算:批量获取数据、批量传输数据、周期性批量计算数据、数据展示
代表技术:Sqoop批量导入数据、HDFS批量存储数据、MapReduce批量计算数据、Hive批量计算数据、***任务调度
日常业务:
1,hivesql
2、调度平台
3、Hadoop集群运维
4、数据清洗(脚本语言)
5、元数据管理
6、数据稽查
7、数据仓库模型架构
5、流式计算是什么
流式计算:数据实时产生、数据实时传输、数据实时计算、实时展示
代表技术:Flume实时获取数据、Kafka/metaq实时数据存储、Storm/JStorm实时数据计算、Redis实时结果缓存、持久化存储(mysql)。
一句话总结:将源源不断产生的数据实时收集并实时计算,尽可能快的得到计算结果,用来支持决策。
6、离线计算与实时计算的区别
最大的区别:实时收集、实时计算、实时展示
离线计算,一次计算很多条数据
实时计算,数据被一条一条的计算
7、Storm是什么?
Storm用来实时处理数据,特点:低延迟、高可用、分布式、可扩展、数据不丢失。提供简单容易理解的接口,便于开发。
Spout Bolt
数据输入 数据计算 数据输出 数据计算 数据输出
Spout Bolt 1.... Bolt N BoltN+1. BoltN....
8、Storm的应用场景
Storm处理数据的方式是基于消息的流水线处理, 因此特别适合无状态计算,也就是计算单元的依赖的数据全部在接受的消息中可以找到, 并且最好一个数据流不依赖另外一个数据流。
因此,常常用于
- 日志分析,从海量日志中分析出特定的数据,并将分析的结果存入外部存储器用来辅佐决策。
- 管道系统, 将一个数据从一个系统传输到另外一个系统, 比如将数据库同步到Hadoop
- 消息转化器, 将接受到的消息按照某种格式进行转化,存储到另外一个系统如消息中间件
- 统计分析器, 从日志或消息中,提炼出某个字段,然后做count或sum计算,最后将统计值存入外部存储器。中间处理过程可能更复杂。
相关推荐
《深入理解流式计算框架Storm》 Storm,作为Twitter开源的一款实时数据处理框架,源自BackType,后来在Twitter的推动下成为了实时数据分析的核心工具。它弥补了Hadoop在实时处理领域的不足,为需要快速响应和处理...
总的来说,Storm流式计算与Kafka、Redis相结合,构建了一个强大的实时数据处理平台,能够处理各种实时业务场景,如日志分析、交易处理等,为企业提供了实时决策支持和业务优化的可能性。同时,实时系统中的安全问题...
1. **流式数据与Storm的诞生** - **流式数据**:在大数据时代,流式数据成为一种重要的数据类型,它表现为连续、无界且瞬时的数据流,适合处理高并发和实时场景。与传统的静态、批处理和持久化数据不同,流式数据在...
### 基于Zookeeper和Storm的车载...以上是对“基于Zookeeper和Storm的车载流式计算框架”的详细介绍。这一框架充分利用了现代技术的优势,解决了实时数据处理中的许多挑战,对于推动智能汽车行业的发展具有重要意义。
许多流行的流式计算框架,如Apache Flink、Apache Storm和Apache Kafka,都提供了Java API,使得开发者能够利用Java的强大功能构建高效、可靠的实时数据处理应用。 Apache Flink是一个高性能的流处理框架,其核心...
在"日志类平台需要实时计算,有完整的预警策略,通知技术人员"这个场景中,我们可以深入探讨流式计算的核心概念、应用以及与之相关的技术。 首先,实时计算的关键在于快速响应和处理数据,它允许系统在数据产生时...
大数据流式计算框架Storm的任务迁移策略
Storm与Hadoop的主要区别在于处理方式和时间维度。Hadoop适合离线批量处理,数据存储在HDFS中,而Storm则是针对实时数据流的处理,数据在内存中流转。此外,Hadoop的编程模型基于JobTracker和TaskTracker,而Storm...
奇虎360高级技术专家肖康在小象学院上的免费公开课《浅析Storm流式计算框架》的课件
首先,文章介绍了流式处理相关概念,分析了流行的流式计算技术,并结合电信运营商需求提出了一套基于流式计算的DPI数据处理方案,应用于实际项目中以满足电信运营商对数据处理实时性的需求。通过实际应用,将DPI数据...
在已有的流式处理系统中,Storm系统具有良好的稳定性、高可扩展性以及高容错性等优点,使它在流式数据处理系统中脱颖而出。但是在任务调度方面,Storm系统并没有做过多的考虑,默认采用相对简单的轮询调度法,导致...
Storm是一个分布式的、高容错的实时计算系统。Storm适用的场景: 1、Storm可以用来用来处理源源不断的消息,并将处理之后的结果保存到持久化介质中。 2、由于Storm的处理组件都是分布式的,而且处理延迟都极低...
15丨流式计算的代表:Storm、Flink、SparkStreaming.html
02_流式计算基础_第1天 (Storm集群部署、单词计数、Stream Grouping).docx
流式处理框架在大数据处理领域占据着至关重要的位置,它们为实时数据处理提供了高效、灵活的解决方案。本文将深入探讨三个流行的流处理框架——Apache Storm、Spark Streaming和Apache Samza,对比它们的设计理念、...