Storm

流计算

流数据

大数据包括静态数据和动态数据(流数据),大数据计算包括批量计算和实时计算。

 

流数据(或数据流)是指在时间分布和数量上无限的一系列动态数据集合体;数据记录是流数据的最小组成单元。

流数据特征:

-数据快速持续达到,潜在大小也许是无穷无尽的。

-数据来源众多,格式复杂。

-数据量大,但不十分关注存储,一旦流数据中的某个元素经过处理,要么被丢弃,要么被归档存储。

注重数据的整体价值,不过分关注个别数据。

-数据顺序颠倒,或不完整,系统无法控制将要处理的新到达的数据元素的顺序。

Hadoop就是典型的批处理模型,由HDFS和HBase存放大量的静态数据,由MapReduce负责对海量数据执行批量计算。

流数据必须采用实时计算。

流计算秉承一个基本理念,即数据的价值随着时间的流逝而降低。

数据采集系统的基本架构有三部分:

1、Agent:主动采集数据,并把数据推送到Collector部分。

2、Collector:接收多个Agent的数据,并实现有序、可靠、高性能的转发。

3、Store:存储Collector转发过来的数据。

对于流计算,一般在Store部分不进行数据的存储,而是将采集的数据直接发给流计算平台进行实时计算。

开源流计算框架Storm

基础组成

Twitter Storm 是一个免费、开源的分布式实时计算系统。

 

Storm对一些设计思想进行了抽象化,主要术语包括Streams、Spouts、Bolts、Topology和Stream Groupings。

Streams

流数据Streams是一个无限的Tuple序列(Tuple即元组,是元素的有序列表,每一个Tuple就是一个值列表,列表中每个值都有个名称,类型可以使基本类型/字符类型/字节数组/其他序列化类型)。这些Tuple序列会以分布式的凡是并行地创建和处理。

可以理解为List<List<Object>>

Spouts

Storm认为每个Stream都有一个源头,并把这个源头抽象为Spouts。Spouts会从外部读取流数据并持续发出Tuple。

Bolts

Storm将Streams的状态转换过程抽象为Bolts。Bolts可以处理Tuple,也可以将处理后的Tuple作为新的Streams发送给其他Bolts。对Tuple的处理逻辑都被封装在Bolts中,可执行过滤、聚合、查询等操作。

Topology

Storm将Spouts和Bolts组成的网络抽象成Topology,Topology是Storm中最高层次的抽象概念,可以被提交到Storm集群执行。一个Topology就是一个流转换图,途中节点是一个Spout或Bolt,图中的边则表示Bolt订阅了哪个Stream。当Spout或Bolt发送元组(Tuple)时,它会把元组(Tuple)发送到每个订阅了该Stream的Bolt上进行处理。

Storm中的Topology定义仅仅是一些Thrift结构体(Thrift是基于二进制的高性能通信中间件),Thrift支持各种编程语言进行定义,这样一来就可以使用各种编程语言来创建、提交Topology。

Stream Groupings

用于告知Topology如何在两个组件(如Spout和Bolt之间,或者不同的Bolt之间)之间进行Tuple传送。

 

框架设计 

在Hadoop上运行的是MapReduce作业,而在Storm上运行的是Topology。但两者任务大不相同,主要的不同点是一个MapReduce作业最终会完成计算并结束运行,而Topology将持续处理消息。

Storm集群采用“Master-Worker”的节点方式,其中Master节点运行名为“Nimbus”的后台程序(类似Hadoop的JobTracker),负责在集群范围内分发代码,为Worker分配任务和检测故障。而每个Worker节点运行名为“Supervisor”的后台程序,负责监听分配给它所在机器的工作,即根据Nimbus分配的任务来决定启动或通知Worker进程。

 

Nimbus后台进程和Supervisor后台进程都是快速失败和无状态的,Master和Worker不直接通信,而是借助Zookeeper,将状态信息存放在Zookeeper中或本地磁盘汇总,以便节点故障时快速恢复。

 

 

 

应用场景:例如微博中的实时热门话题、业务监控、广告推荐、用户实时分析等业务场景。

Storm与Spark Streaming对比

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值