Storm简介

一 Storm是什么

Storm是一个开源的分布式、可伸缩、容错的、实时计算系统,可以对流式数据进行可靠的处理。

Storm有很多应用场景,包括实时数据分析、在线机器学习、连续计算、分布式RPC、ETL等。


二 Storm和Hadoop的区别

Storm是一个实时的计算系统,计算的数据是无界的数据流,称为“流式数据”。除非Topology被杀死,否则会一直执行。

Hadoop是一个非实时的数据批处理系统,MapReduce的计算对象是一个有界的数据集。MapReduce最终会完成。


三 Storm核心技术和基本组成

1 Topology

Topology是一个有向图,表示一个数据的逻辑运算过程。有向图中的节点表示数据的处理逻辑,节点之间的链接表示数据的流动路径。


2 Stream

Storm中,数据的计算单位称为一个tuple(元组),元组中可以存储基本数据类型、String字符串、字节数组。这些Tuple在Topology中流动,形成了Stream。因此Stream就是抽象的数据对象。


3 Spout(喷口)

Spout是Topology的数据来源。Spout从Storm外部读取数据,并将数据发送到Topology中。

Spout可以分为可靠和不可靠两种模式。可靠的模式下可以保证每条ack的数据被Topology完全处理,如果计算失败将会重发;不可靠的Spout不保证每条数据被完全处理。


4 Bolt(螺栓)

Topology中的所有逻辑处理都在Bolt中完成,Bolt接收来自Spout或者其他Bolt的流,对流中的数据进行过滤、业务处理、数据存储等操作。


5 Stream grouping(流分组)

定义Bolt之间或者Bolt与Spout之间,数据流的分组方式。包括7中内置的分组方式:随机分组(Shuffle grouping)、字段分组(Fields grouping)、全部分组(All grouping)、全局分组(Global grouping)、无分组(None grouping)、直接分组(Direct grouping)、本地或者随机分组(Local or shuffle grouping)。


6 Task

每个Spout或者Bolt在集群中执行很多任务,每个任务对应一个线程来执行。在Topology中,每一个节点可以被认为是一个任务。


7 Worker(工作进程)

每个Worker是一个物理的JVM和Topology所有任务的一个子集。服务器集群中,一个节点可以部署一个或者多个worker。 


四 Storm优势

1 集成多种技术

Storm集成了很多消息队列系统和数据库系统,用户可以方便的搭建分布式的数据处理框架。

集成的消息队列主要有Kestrel、RabbitMQ、Kafka、JMS


2 简单的API

Storm使用Spout、Bolt、Topology三个抽象类型,完成了一个复杂多级的流式处理过程的定义和实现。


3 可扩展

Storm可以简单的对Topology的各个部分进行并行度的调整,从而完成扩展。

Storm一个节点(Intet E5645@2.4GHz 的CPU和24GB内存),可以在1秒钟处理100万条100字节的消息。


4 容错性

当节点死亡或者worker死亡,Storm会尝试重启worker或者将task分配到其他节点。


5 可靠性(保证数据处理)

通过跟踪Tuple的处理过程,可以保证每条数据可以被完全处理。


6 可以使用任何语言

主要使用Java开发,非JVM的Spout或者Bolt通过一个基于Json协议的stdin/stdout与Storm通信。


五 应用现状

1 流式数据处理(Streaming Processing)

2 连续计算(Continuous Computation)

3 分布式RPC(Distributed RPC)

Spout从DRCP服务器中获取函数调用的参数;Spout将函数名和参数发送到Topology进行函数调用和计算;Bolt将计算结果返回给DRCP服务器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值