zoukankan      html  css  js  c++  java
  • storm的简单了解

    storm系统架构

    storm 是什么的:分布式 && 实时 计算系统

    • Nimbus:负责资源分配和任务调度。

    • Supervisor:负责接受nimbus分配的任务,启动和停止属于自己管理的worker进程。

    • Worker:运行具体处理组件逻辑的进程。

    • Task:worker中每一个spout/bolt的线程称为一个task。同一个spout/bolt的task可能会共享一个物理线程,该线程称为executor。

    • storm架构中使用Spout/Bolt编程模型来对消息进行流式处理。消息流是storm中对数据的基本抽象,一个消息流是对一条输入数据的封装,源源不断输入的消息流以分布式的方式被处理,Spout组件是消息生产者,是storm架构中的数据输入源头,它可以从多种异构数据源读取数据,并发射消息流,Bolt组件负责接收Spout组件发射的信息流,并完成具体的处理逻辑。在复杂的业务逻辑中可以串联多个Bolt组件,在每个Bolt组件中编写各自不同的功能,从而实现整体的处理逻辑。

    storm的计算模型

    storm实时处理系统由以下几个关键概念组成

    拓扑 Topoloies 消息流 Streams 消息源 Spouts 消息处理单元 Bolt

    消息分发策略 Stream groupings 任务 Tasks 消息进程 Workers

    拓扑topolpgy

    一个实时计算应用程序的逻辑在Storm里面被封装到topology对象里面,这个对象称为:计算拓扑。

    消息源Spout

    消息源是消息流的源头,负责生产数据并将数据(元组)送入消息流。

    消息处理单元Bolt

    Bolt中封装了所有消息处理的逻辑:过滤,聚合,查询数据库等各种业务逻辑

    消息分发策略Stream groupings

    随机分组,直接分组,全局分组,定义分组,广播,不分组

    任务Tasks

    每个Spout和Bolt会被当作很多任务在整个集群里面执行。

    工作进程

    Topology可能会在一个或者多个工作进程里面执行,每个工作进程执行整个topology的一部分

    Tuple 元组

    Stream中最小数据组成单元

     

    Topology – DAG有向无环图的实现

    对于Storm实时计算逻辑的封装

    即,由一系列通过数据流相互关联的Spout、Bolt所组成的拓扑结构

    生命周期:此拓扑只要启动就会一直在集群中运行,直到手动将其kill,否则不会终止

    Stream – 数据流

    从Spout中源源不断传递数据给Bolt、以及上一个Bolt传递数据给下一个Bolt,所形成的这些数据通道即叫做Stream

    Stream声明时需给其指定一个Id(默认为Default)

     

    详述什么是storm的流分组?有哪几种?如何分组的?

    Shuffle grouping(随机分组):这种方式会随机分发tuple给bolt的各个task,每个bolt实例接收到的相同数量的tuple。

     

    Fields grouping(按字段分组):根据指定字段的值进行分组。比如说,一个数据流根据“word”字段进行分组,所有具有相同“word”字段值的tuple会路由到同一个bolt的task中。

     

    All grouping(全复制分组):将所有的tuple复制后分发给所有bolt task。每个订阅数据流的task都会接收到tuple的拷贝。

    Globle grouping(全局分组):这种分组方式将所有的tuples路由到唯一一个task上。Storm按照最小的task ID来选取接收数据的task。

     

    None grouping(不分组):在功能上和随机分组相同,是为将来预留的。

     

    Direct grouping(指向型分组):数据源会调用emitDirect()方法来判断一个tuple应该由哪个Storm组件来接收。只能在声明了是指向型的数据流上使用。

     

    Local or shuffle grouping(本地或随机分组):和随机分组类似,但是,会将tuple分发给同一个worker内的bolt task(如果worker内有接收数据的bolt task)。其他情况下,采用随机分组的方式。取决于topology的并发度,本地或随机分组可以减少网络传输,从而提高topology性能。

  • 相关阅读:
    9、spring五种scope
    2、数据库四种事务隔离级别
    4、jquery获取servlet值
    3、$.post不执行
    A brief Arch installation in VMware
    Git经验记录
    Windows上virtualenv搭建python开发环境
    no such file django-admin.py
    复制拷贝函数+重载operator=
    Reconfigure CentOS+freeradius+daloradius again
  • 原文地址:https://www.cnblogs.com/huzicourenao/p/11079035.html
Copyright © 2011-2022 走看看