Storm核心概念如下:

 1、Tuple:元组
                Tuple即元组,是一个拓扑Topology中的Spout和Bolt组件之间数据传递的基本单元。元组中的字段可以是任何类型的对象,Storm使用元组作为其数据模型,支持所有的基本类型、字符串、和字节数组。
            Spout中nextTuple()方法产生元组通过收集器Collector发射给Bolt,Bolt中execute()方法接收来自Spout发射的元组(订阅Spout中declareOutputFields参数声明的的字段后)后处理或继续发送到下一个Bolt。
            
        2、Stream:流
                Stream即流是Storm的核心抽象,是一个无界的元组序列。源源不断传递的元组就组成了流,在分布式环境中并行的创建和处理。流由元组构成,使用OutputFieldsDeclarer声明流机器模式(直接分组等)。
            流被定义成由元组字段进行命名的方式,默认元组包含整型Integer、长整型Long、短整型Short、字节byte、字符String、双精度浮点型Double、单精度浮点型Float、布尔型Boolean和字节数据Byte[],还可以
            自定义序列化器以便本地元组可以使用自定义类型(自定义序列化必须实现ISerialization接口,然后通过使用CONFIG.TOPOLOGY_SERIALIZATIONS这个配置进行注册使用)。
                Spout是流的源,通常从外部数据源读取数据生成元组并发射到拓扑中。外部数据源包括Kafka、HDFS、HBase、Hive、Redis或Kestrel。
                Bolt接收任何数量的输入流执行处理后,可能结束或生成新的流提交到拓扑,如果生成新的流则需要多个Bolt。Bolt可以执行运行函数、过滤元组、连接流和连接数据库等操作。
                一个拓扑中的每个节点均可并行执行,也可以指定拓扑中跨集群执行的线程数量。一个拓扑会一直执行,直到手动杀死。Storm会重新分配任何失败的任务,如果主机宕机或消息被删除,Storm仍然能保证不
            会有任何数据丢失。
                每个流被声明后都会赋予一个ID,如果是单个流的Spout或Bolt,OutputFieldsDeclarer也能声明一个不指定ID的单流,这种情况下,流被赋予默认的ID值。
                
        3、Spout:喷口
                Spout即喷口是拓扑中流的来源,是一个拓扑中产生源数据流的组件,通常情况下Spout会从外部数据源Kafka、HDFS、HBase、Hive、Redis或Kestrel中读取数据,然后转换为拓扑内部的源数据。Spout支持可
            靠和不可靠两种方式,如果是可靠的Spout遇到处理元组失败会重新发射;不可靠的Spout遇到元组处理失败则跳过。Storm会不停的循环调用Spout中的nextTuple()方法,用户只要在此方法中生成源数据即可。
                Spout支持多个流,可以通过OutputFieldsDeclarer类的declareStream方法来声明多个流,使用SpoutOuputCollector类的emit执行流的提交。Spout的主要方法是nextTuple()方法,nextTuple()方法会产生一
            个或多个Tuple到拓扑中,如果没有新的Tuple则返回。Spout的其他常用方法是ack()和fail()方法,当有新的Tuple从Spout发出时,ack()和fail()会被调用。不可靠的Spout不调用ack()和fail(),可靠的Spout会
            调用ack()和fail()方法。
            
        4、Bolt:螺栓
                Bolt即螺栓,是一个拓扑中流的处理节点,Bolt可以完成过滤、业务处理、连接运算、数据库等操作。Bolt支持多个流,以通过OutputFieldsDeclarer类的declareStream方法来声明多个流,使用
            OuputCollector类的emit指定发射的流。
            
        5、Topology:拓扑
                Topology即拓扑,是Storm中运行的一个实时流数据处理的应用程序,由各个组件间的消息流动而形成逻辑上的拓扑结构。Storm的Topology类似于Hadoop的MapReduce作业,都是打成一个jar包在集群中运行,
            主要区别是MapReduce的Job处理完成后会结束,只有Mapper和Reducer两个组件构成;Storm的Topology永远都在运行直到被强制杀死,由一个Spout和多个Bolt组件构成。
            
        6、Master Node和Worker Node:主控节点和工作节点
                Master Node和Worker Node即主控节点和工作节点,Storm生产环境中的集群分为主控节点和工作节点,其中主控节点只有一个(直到0.9x系列Storm的nimbus仍存在单点故障,不支持HA),而工作节点可以
            有多个。
            
        7、Nimbus和Supervisor:Numbus进程和Supervisor进程
                Nimbus即主控节点上运行的一个守护进程,类似于Hadoop的JobTracker。Numbus进程负责在集群中分发代码、对节点任务分配和监控集群节点故障。Supervisor即工作节点上运行的一个守护进程,类似
            Hadoop中的TaskTracker,Supervisor进程负责监听其主机上以分配的作业,启动和停止Nimbus已经分配的工作进程。
            
        8、Stream Grouping:流分组
                Stream Grouping即流分组,是拓扑中定义的一部分,为每个Bolt指定应该接收哪个流作为输入。流分组定义了流/元组如何在Bolt的任务之间进行分发。Storm内置了7中流分组方式和通过实现
            CustomStreamGrouping接口可以执行自定义的流分组。
            
        9、Worker进程、Task任务、Executor线程
                Worker进程是每个Spout/Bolt中运行具体处理逻辑的进程。每个Worker进程是一个物理的JVM和拓扑中执行所有任务的一个子集。使用Config.TOPOLOGY_WORKERS配置项设置执行拓扑时分配的Worker数量。
                Worker进程中运行的是Executor线程,Executor线程中运行的是Spout/Bolt实例。

10、Reliability:可靠性
                    
Storm通过将每个Spout发射的元祖记录在的一个元祖树中,然后监控每个Spout的元组树并检测树中的元祖什么时候会成功完成。每个拓扑都有消息超时时间,如果Storm在超时之前未能检测到Spout元祖处理完成则
                会把元祖置为失败并会重新发射它。

Storm概念介绍的更多相关文章

  1. Storm概念、原理详解及其应用(一)BaseStorm

    本文借鉴官文,添加了一些解释和看法,其中有些理解,写的比较粗糙,有问题的地方希望大家指出.写这篇文章,是想把一些官文和资料中基础.重点拿出来,能总结出便于大家理解的话语.与大多数“wordcount” ...

  2. 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之集群概念介绍(一)

    集群概念介绍(一)) 白宁超 2015年7月16日 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习 ...

  3. Linux LVM硬盘管理之一:概念介绍

    一.LVM概念介绍: LVM是 Logical Volume Manager(逻辑卷管理)的简写,它由Heinz Mauelshagen在Linux 2.4内核上实现.LVM将一个或多个硬盘的分区在逻 ...

  4. Java SE/ME/EE的概念介绍

    转自 Java SE/ME/EE的概念介绍 多数编程语言都有预选编译好的类库以支持各种特定的功能,在Java中,类库以包(package)的形式提供,不同版本的Java提供不同的包,以面向特定的应用. ...

  5. rocketMq概念介绍

    rocketMq官网 http://rocketmq.apache.org/ rocketMq逻辑概念介绍 rocketMq逻辑图 备注:    改图片分享自李占卫的网上家园 说明: 在rocketM ...

  6. java 并发多线程 锁的分类概念介绍 多线程下篇(二)

    接下来对锁的概念再次进行深入的介绍 之前反复的提到锁,通常的理解就是,锁---互斥---同步---阻塞 其实这是常用的独占锁(排它锁)的概念,也是一种简单粗暴的解决方案 抗战电影中,经常出现为了阻止日 ...

  7. Airflow Python工作流引擎的重要概念介绍

    Airflow Python工作流引擎的重要概念介绍 - watermelonbig的专栏 - CSDN博客https://blog.csdn.net/watermelonbig/article/de ...

  8. spring batch (一) 常见的基本的概念介绍

    SpringBatch的基本概念介绍 内容来自<Spring Batch 批处理框架>,作者:刘相. 一.配置文件 在项目中使用spring batch 需要在配置文件中声明: 事务管理器 ...

  9. helm-chart-1-简单概念介绍-仓库搭建-在rancher上的使用

    简单的概念介绍: Chart是helm管理的应用的打包格式,一个chart对应一个或一套应用.内部是一系列的yaml描述文件,以为为yaml 服务的文件. 三个部分,helm .tiller.repo ...

随机推荐

  1. UML解惑:图说UML中的六大关系--转

    UML定义的关系主要有六种:依赖.类属.关联.实现.聚合和组合.这些类间关系的理解和使用是掌握和应用UML的关键,而也就是这几种关系,往往会让初学者迷惑.这里给出这六种主要UML关系的说明和类图描述, ...

  2. 源代码解读Cas实现单点登出(single sign out)功能实现原理--转

    关于Cas实现单点登入(single sing on)功能的文章在网上介绍的比较多,想必大家多多少少都已经有所了解,在此就不再做具体介绍.如果不清楚的,那只能等我把single sign on这块整理 ...

  3. lubuntu12.11 source.list

    deb http://ports.ubuntu.com/ubuntu-ports/ precise main universe deb-src http://ports.ubuntu.com/ubun ...

  4. Android 从清单配置文件元数据中获取值

    最近在上班工作当中,也尝到了一些新的知识,现总结如下(1)从AndroidManifest.xml配置文件中获取meta数据 // 从Manifest.xml配置文件中获取数据 public stat ...

  5. Android android-common 常用功能和工具集合

    本文内容 环境 android-common 项目结构 演示 android-common 参考资料 android-common 主要包括如下内容: 缓存,包括图片缓存.预取缓存.网络缓存. 公共 ...

  6. Java基础知识强化74:正则表达式之分割功能 (扩展练习)

    1. 看程序写结果:(面试题考过) package cn.itcast_03; /* * 分割功能练习 */ public class RegexDemo2 { public static void ...

  7. Creating Lists and Cards 创建列表和卡片

    To create complex lists and cards with material design styles in your apps, you can use the Recycler ...

  8. linux删除或隐藏命令历史记录history

    1.环境变量添加HISTCONTROL = ignorespace 在命令前面插入空格,这条命令会被 shell 忽略,也就意味着它不会出现在历史记录中.但是这种方法有个前提,只有在你的环境变量 HI ...

  9. 使用exp&imp工具进行数据库备份及恢复

    使用exp&imp工具进行数据库备份及恢复1.exp/imp使用方法介绍exp/imp为一种数据库备份恢复工具,也可以作为不同数据库之间传递数据的工具,两个数据库所在的操作系统可以不同.exp ...

  10. CSS 之 margin知识点

    1.margin的百分比值 普通元素的百分比maigin相对于容器元素的宽度(width) 进行计算的. 这里我们在图片外面设置一个宽高分别为800 * 600的容器.设置img{ margin: 1 ...