大数据(Storm)-简介

什么是Storm

Strom是一个老牌的实时数据处理框架,在Spark Streaming流行前,Storm统治者整个流式计算的江湖。

更详细的说,Storm是一个实时数据处理框架,具有低延迟/高可用/易扩展/数据不丢失等特点,同时,Storm还提供流类似与MapReduce的简单编程模型,便于开发。

Storm与Hadoop的区别

Storm与Hadoop可以说是数据处理中两种极端场景下的不同解决方案,主要区别有:

  • Storm用于实时计算,Hadoop用于离线计算
  • Storm将处理的数据保存在内存中,Hadoop则保存在HDFS上
  • Storm通过网络传输数据,Hadoop将中间数据保存在磁盘上

Storm的使用场景

  • 实时监控与日志分析
  • 管道系统
  • 消息转换

Strom的核心组件

这里写图片描述

  • Nimbus:负责资源分配和任务调度
  • Supervisor:负责接收Nimbus分配的任务,启动和停止属于自己的Worker进程
  • Worker:运行具体的处理逻辑的进程,Work运行的任务种类只有两种,一种是Spout任务,一种是Blot任务
  • Task:Work中的每个Spout/Blot任务都是一个线程,这个线程就是Task。但在0.8版本以后,一个task不再对应一个物理线程,有可能不同但Task共享同一个线程。

Storm编程模型

这里写图片描述

  • Topology:Storm中一个独立的实时计算应用但名称;
  • Spout:在一个Toplogy中获源数据流的组件;
  • Bolt:接收数据并进行处理的组件,可以在其中定义处理逻辑;
  • Tuple:Storm中消息的基本单元,在Spout/Blot之间传递的每条消息就是一个Tuple;
  • Stream:表示数据的流向,也可以理解为tuple流转流程

流式计算一般架构

网络系统<-Flume集群<-Kafka集群<-Storm集群<-Redis集群

  • Flume用来采集数据
  • Kafka用来临时保存数据
  • Storm用来实时计算数据
  • Redis作为内存数据库保存最终数据

猜你喜欢

转载自blog.csdn.net/zhangdong2012/article/details/80101202