Spouts,流的源头

Spout是Storm里面特有的名词,Stream的源头,通常是从外部数据源读取tuples,并emit到topology

Spout可以同时emit多个tupic stream,通过OutputFieldsDeclarer中的declareStream,method来定义

Spout需要实现RichSpout端口,最重要的方法是nextTuple,storm会不断调用接口从spout中取数据,同时需要注意的是Spout分为reliable or unreliable两种

对于reliable,还支持ack和fail方法

Bolts,流的处理节点

对于Bolt,用户可以定义任意的处理逻辑,最重要的方法是execute,输入为tuple,输出为emit 或多个tuples到OutoutCollector。

Topologies,拓扑

可以理解为mapreduce里面的job

区别是,mrjob执行完会结束,而Topologies会一直存在,因为mr流动的是代码,而Storm流动的是数据

Storm Topology是基于Thrifit结构,并且Nimtus是个Thrifit server。

Stream grouping分类

1Shuffle Grouping(最常用):随机分组,随机派发stream里面的tuple,保证每个bolt接收到的tuple数目相同

Strom Topology的并发度

概念:一个Topology可以包含一个或者多个worker(并行的跑在不同的machine上),所以worker process 就是执行一个topology的子集,并且worker只能对应于一个topology。

一个worker包含一个或者多个executor,每个component(spout或bolt)至少对应一个executor,所以可以说executor执行一个compenent的子集,同时一个executor只能对应于一个component。

task就是具体的处理逻辑对象,一个executor线程可以执行一个或者多个tasks,但是一般默认每个executor只执行一个task,所以我们往往认为task就是执行线程,其实不然

task代表的是最大并发度,一个component的task数目是不会改变的,但是一个component的excutor数目数会发生变化的,当task数目大于executor数目时候,executor代表实际并发度

Storm里面的数据结构tuple

这几天一直在看storm,其中注意到了storm中主要的数据结构类型tuple,刚开始对这种数据还是很不理解,看几个程序之后,才豁然开朗,下面就主要介绍一些storm中最简单的、最基础的东西——tuple。

storm中的数据首先是有spout收集,类似于一个消息源,spout的open()函数一般就是接收数据的地方,然后spout的 nextTuple()是发送(emit)tuple的地方。tuple到底是什么?感觉还是用英语来说比较容易理解吧,"A tuple is a named of values where each value can be any type."  tuple是一个类似于列表的东西,存储的每个元素叫做field(字段)。我们用getString(i)可以获得tuple的第i个字段。而其中的每个字段都可以任意类型的,也可以一个很长的字符串。我们可以用:

      String A = tuple.getString(0);
long a= tuple.getLong(1);

来得到我想要的数据,不过前提你是要知道你的tuple的组成。具体tuple是什么类型,完全取决于自己的程序,取决于spout中nextTuple()方法中emit发送的类型。

参考资料:

www.51studyit/html/notes/20140329/44.html

www.51studyit/html/notes/20140329/45.html

www.51studyit/html/notes/20140329/46.html

www.51studyit/html/notes/20140329/47.html

www.51studyit/html/notes/20140329/48.html

Storm基本概念以及Topology的并发度的更多相关文章

  1. 关于Storm 中Topology的并发度的理解

    来自:https://storm.apache.org/documentation/Understanding-the-parallelism-of-a-Storm-topology.html htt ...

  2. storm并发度理解

    1. 核心原理 一个运行中的拓扑是由什么组成的:worker进程,executors和tasks.Storm是按照下面3种主要的部分来区分Storm集群中一个实际运行的拓扑的:Worker进程.Exe ...

  3. storm基础系列之一----storm并发度概念剖析

    前言: 学了几天storm的基础,发现如果有hadoop基础,再理解起概念来,容易的多.不过,涉及到一些独有的东西,如调度,如并发度,还是很麻烦.那么,从这一篇开始,力争清晰的梳理这些知识. 在正式学 ...

  4. [Storm] 并发度的理解

    Tasks & executors relation Q1. However I'm a bit confused by the concept of "task". Is ...

  5. storm源码之理解Storm中Worker、Executor、Task关系 + 并发度详解

    本文导读: 1 Worker.Executor.task详解 2 配置拓扑的并发度 3 拓扑示例 4 动态配置拓扑并发度 Worker.Executor.Task详解: Storm在集群上运行一个To ...

  6. 用实例的方式去理解storm的并发度

    什么是storm的并发度 一个topology(拓扑)在storm集群上最总是以executor和task的形式运行在suppervisor管理的worker节点上.而worker进程都是运行在jvm ...

  7. Storm并发度和Grouping方式

    Storm并发度和Grouping方式 .note-content {font-family: "Helvetica Neue",Arial,"Hiragino Sans ...

  8. 【转帖】Storm基本原理概念及基本使用

    Storm基本原理概念及基本使用 https://www.cnblogs.com/swordfall/p/8821453.html 1. 背景介绍 1.1 离线计算是什么 离线计算:批量获取数据.批量 ...

  9. 1 storm基本概念 + storm编程规范及demo编写

    本博文的主要内容有 .Storm的单机模式安装 .Storm的分布式安装(3节点)   .No space left on device .storm工程的eclipse的java编写 http:// ...

随机推荐

  1. [技巧篇]10.那些年我们一起优化过的MyEclipse8.6

    这里里面是针对于四海的给位学生预留的视频,请自行下载,我希望对大家有所帮助 我这里使用了百度网盘,这里的东西还是比较多的!如果喜欢请关注我,当好胖先生的粉丝 链接:http://pan.baidu.c ...

  2. jsoup select 选择器

    转载自:http://blog.csdn.net/zhejingyuan/article/details/11801027 方法 利用方法:Element.select(String selector ...

  3. python基础--结构篇

    在C/C++/Java中,main是程序执行的起点,Python中,也有类似的运行机制,但方式却截然不同: Python使用缩进对齐组织代码的执行,所有没有缩进的代码(非函数定义和类定义),都会在载入 ...

  4. Eclipse Support UTF-8

    1.  Windows > Preferences > General > Content Types, set UTF-8 as the default encoding for ...

  5. centos设置tomcat开机启动

    1.编辑开机启动脚本 vi /etc/init.d/tomcat8 #!/bin/bash # tomcat8:start|stop|restart # chkconfig: 345 90 10 # ...

  6. java map 转 json 自编封装

    1.自编封装代码: import com.alibaba.fastjson.JSON; import java.util.*; public class jsonConversion { privat ...

  7. CSS3禁止网页中文本被选中代码

    通常大家会有js来实现,另一个方案就是,将-webkit-user-select 和-moz-user-select 的值设为none,这针对于移动用户,可能会很有用.请谨慎使用这个属性:因为大部分用 ...

  8. eCharts_基于eCharts开发的一个多图表页面

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. 关于Solaris系统“mpt_sas”驱动

    1.mpt_sas 驱动源文件所在系统源代码中目录: illumos-soulos/usr/src/uts/common/sys/scsi/adapters/mpt_sas  -- 头文件 illum ...

  10. 第一章:读取文件一行IO::File

    #!c:\\perl\\bin\\perl.exe use IO::File; #读取一行 my $fd = IO::File->new('perl.txt'); my $one_line = ...