Storm的编程模式和架构

storm

  • storm是一个实时计算系统。
    适用于实时分析,在线机器学习,持续计算的流式计算系统。

  • 特点: 速度快,每秒每节点处理数据百万tuple级别的

  • 工作形式: topology
    无状态,集群状态和分布式环境形式在zk中保存
    确保每个消息至少被消费一次

storm和hadoop的区别

  • storm用于实时计算,hadoop用于离线计算
  • storm 处理的数据保存在内存中,源源不断,hadoop处理的数据保存在文件系统中,一批一批的。
  • storm的数据通过网络传输进来,hadoop的数据保存在磁盘中
  • storm与hadoop的编程模型相似。

编程模式:在这里插入图片描述

  • DataSource: 数据源,如淘宝产生的数据,都是实时数据。
  • tuple: 元组,数据结构,是有序的元素列表,通常是任意类型的数据,使用,号分割,交给storm计算。一次消息传递的基本单元,一组或者一条消息就是一个tuple。
  • stream: 就是一系列的tuple。
  • spout: 在一个topology中获取源数据的组件。
    通常情况下spout会从外部数据源中读取数据,然后转换为topology内部的数据源。
  • bolt: 是一个转接头,逻辑处理单元,接受数据然后执行处理的组件,用户可以在其中执行自己想要的操作。spout数据传输给bolt,bolt处理后产生新的数据,可以filter,聚合,分组接收数据–> 处理 --> 输出给bolt(多个)。
  • topology: storm中运行的一个实时应用程序的名称。它不会停止的,时刻在运行。除非手动杀死,MR是会停止的
  • task: spout和bolt的执行过程就是task,
  • worker: 工作节点。storm在woker之间均衡分发任务,监听job,启动或者停止进程。
  • Stream Grouping: 表示数据的流向。控制tuple如何进行路由,也就是分组策略,内置四个分组策略。

storm架构

Storm集群采用主从架构方式,主节点是Nimbus,从节点是Supervisor,有关调度相关的信息存储到ZooKeeper集群中,架构如下图所示:
在这里插入图片描述
总体的Topology处理流程图为:
在这里插入图片描述
具体的topology的流程:
在这里插入图片描述

组件

  • nimubs: master node,在work node间分发数据,负责资源分配和任务调度,指派给task给woeker node,监控故障。主要工作是运行topology,分析topology,手机执行的task,将task分发给可用的supervisor。
  • supervisor: work node,有多个处理进程,负责接收nimbus分配的任务,每个工作节点存在一个。。启动和停止属于自己管理的worker进程。通过配置文件设置当前supervisor上启动多少个worker。代理task所有的work进程,work进程孵化出足够的线程供task运行;在nimubs和supervisor之间使用内部的消息系统进行通信。
    nimubs和supervisor之间的所有协调工作都是zookeeper集群完成的。
  • worker: 运行具体处理组件逻辑的进程。worker运行的任务类型只有两种,一种spout,一种bolt
  • work prcess: 执行相关的task,创建executor(执行线程),可以有多个执行线程‘
  • task: worker中每一个apout/bolt的线程称为一个task。处理数据的,就是一个任务
  • zookeeper: 状态都是保存在zookeeper上的,zk可以维护状态。
    在这里插入图片描述

spout,bolt线程–>task;
共享同一个executor线程
本质就是在一个executor线程上,会执行很多task,就是说executor是线程,task是executor处理一个或者多个任务的,整个任务就是spout,bolt。task本质就是一个节点类的实列的对象。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值