分布式的实时计算框架,storm对于实时计算的意义类似于hadoop对于批处理的意义。

Storm的适用场景:
1.流数据处理:storm可以用来处理流式数据,处理之后将结果写到某个存入中去。

2.持续计算:连续发送数据到客户端,使它们能够实时更新并显示结果,如网站指标

3.分布式RPC:由于storm的处理组件是分布式的,而且处理延迟极低,所以可以作为一个通用的分布式rpc框架来使用。

我们的搜索引擎本身也是一个分布式rpc系统。

storm关注的是数据的一次写入多次处理,storm的job运行起来是持续不断的。

Hadoop关注的是数据的一次写入,多次查询,使用。job执行完就结束了。

  hadoop storm
组件角色 jobtracker
tasktracker
child
Nimbus
Supervisor
Worker
应用名称 Job Topology
组件接口 Map/Reduce Spout/Bolt

Storm的特点:

  • 编程模型简单
  • 可扩展
  • 高可靠性
  • 高容错性
  • 支持多种语言编程

支持本地模式运行和远程模式。

Storm集群架构:

 

Topology(拓扑)

storm中运行的一个实时应用程序,因为各个组件间的消息流动形成逻辑上的一个拓扑结构,一个Topology是由Spouts和bolts组成的图。

Topology的定义是一个Thrift结构,幵且Nimbus就是一个Thrift服务, 你可以提交由
任何询言创建的topology。

Tuple

可以认为是一个Map,但要求此数据类型是可以序列化的,这点和Hadoop的一样,其实分布式开发都需要注意这点。

Field1:String Filed2:int field3:string Filed:customerobj

一个没有边界的,源源不断的连续的Tuple序列就组成了Stream.

Spout

这是storm中消息的生产者,它会有一个NextTuple方法,一直产生Tuple形成流,它可以读成取文件生成Tuple,也可以从Kafka里面读取消息生成Tuple.

通常会从外部数据源(消息队列,数据库)读取数据,封闭成Tuple,发送到Stream中。

Bolt

Topology中所有的处理都是由它完成,即所有的消息处理逻辑都封装在里面。可以完成:过滤,聚合,访问文件数据库等。

它有一个Execute(Tuple Input)方法,处理spout或其他bolt传过来的数据,处理完并输出到下游。

Stream Grouping

定义了tuple如何被传送。从spout到bolt或bolt2bolt之间的传送方式。

1.随机分组(shuffle grouping)随机分发tuple到bolt,保证每个任务获得相等数量的tuple.

2.字段分组(Fields grouping)根据指定的字段分割数据流,并分组。例如,wordcount任务中,根据word进行分组计算。

3.全部分组(All grouping):tuple被复制到bolt的所有任务。这种类型要慎用。

4.全局分组(Global grouping):全部流都分配到bolt的同一个任务。分配给ID最小的那个Task.

5.无分组(None Grouping)暂时等于随机分组

6.直接分组(Direct grouping)由tuple生产者决定去哪里。

7.本地或随机分组(Local or Shuffle grouping)如果目标bolt有一个某多个任务在同一个worker进程中,tuples会随机分发给这些任务,否则就随机分组。

自定义分组,实现CustomStreamGrouping接口来定制自己需要的分组。

运行中的topology主要三个组件组成:

worker process(进程)Executors (线程)和tasks

Worker:

运行具体处理组件的进程。一个拓扑可能会在一个或多个worker里面执行,每一个worker是一个物理JVM并且执行整个拓扑的一部分,Storm会尽量均匀地将工作分配给所有的worker.

Executor:每一个executor对应一个线程,一个executor是一个worker进程生成的一个线程。它可能运行着一个相同的组件的一个或多个Task.

Task:每一个spout或bolt会被当作很多task在整个集群中运行。

Storm 基础知识的更多相关文章

  1. Storm基础知识

    上一篇文章我们介绍一个简单的Storm起源,今天我去学习Storm一些主要的知识,他的基本使用基本的了解.幸运的是,,不是太困难,假设我们理解Hadoop的MapReduce模型的话.看这个也是很类似 ...

  2. Storm基础知识学习

    概述 Storm是一个免费开源的分布式实时计算系统.Storm能轻松可靠地处理无界的数据流,就像Hadoop对数据进行批处理 编程模型 spout:数据读取数据.接收数据.将数据写出到blot bol ...

  3. 大数据基础知识问答----spark篇,大数据生态圈

    Spark相关知识点 1.Spark基础知识 1.Spark是什么? UCBerkeley AMPlab所开源的类HadoopMapReduce的通用的并行计算框架 dfsSpark基于mapredu ...

  4. IM开发基础知识补课(五):通俗易懂,正确理解并用好MQ消息队列

    1.引言 消息是互联网信息的一种表现形式,是人利用计算机进行信息传递的有效载体,比如即时通讯网坛友最熟悉的即时通讯消息就是其具体的表现形式之一. 消息从发送者到接收者的典型传递方式有两种: 1)一种我 ...

  5. 最全的spark基础知识解答

    原文:http://www.36dsj.com/archives/61155 一. Spark基础知识 1.Spark是什么? UCBerkeley AMPlab所开源的类HadoopMapReduc ...

  6. ZooKeeper_基础知识学习

    ZooKeeper是Hadoop的开源子项目(Google Chubby的开源实现),它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护.命名服务.分布式同步.组服务等. Zookee ...

  7. .NET面试题系列[1] - .NET框架基础知识(1)

    很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...

  8. RabbitMQ基础知识

    RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...

  9. Java基础知识(壹)

    写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...

随机推荐

  1. sencha gridpanel checkbox 复选框的勾选 以及和单机行冲突

    gridpanel显示checkbox: 添加SelectionModel为Checkbox Selection Model { xtype: 'gridpanel', id: 'Grid1', he ...

  2. MyBatis的一些基本操作

    在学校里只学过一点点的hibernate基础,但是这几天被熊哥叫去写好几个类的接口,所以就去百度了一下mybatis的接口方式怎么使用.1定义接口,并且定义其中要使用到的方法,这里必须注意到的是方法名 ...

  3. 在MVC中应用百度富文本编辑器

    1.下载.NET版本的百度富文本编辑器,前往 下载.NET版本百度富文本框 2.解压下载的.zip压缩包,将utf8-.net文件夹名称改为:ueditor,复制到MVC根目录下面.结构如下: App ...

  4. 【iOS】Quartz2D基本图形

    一.画线段 - (void)drawRect:(CGRect)rect { // Drawing code // 1.获得图形上下文 CGContextRef ctx = UIGraphicsGetC ...

  5. 硅谷新闻4--解决页签手指按下从左到右滑动的bug

    有一种方法可以阻止父层的View截获touch事件,就是调用 getParent().requestDisallowInterceptTouchEvent(true);方法.一旦底层View收到tou ...

  6. iOS 七牛云上传并获取图片----【客户端】

           最近做了七牛云存储的有关内容,涉及到与后台交互获取验证的token,无奈,后台自命清高,不与理会,没办法呀,于是自己搞呗.首先呢在在七牛上注册一个账号,然后呢添加一个存储空间这时候空间名 ...

  7. ArcGIS快捷键导出

    在以前的文章中说过怎样恢复ArcGIS默认界面.今天同事的电脑用ArcMap打开数据后,移动或缩放数据时莫名的闪动. 于是使用排除法来查找原因:(1)先以为是数据的原因,换个数据还是有问题:(2)后以 ...

  8. SharePoint List来做项目管理

    其实这是一个常见的问题,已经不仅仅只是一次用SharePoint List来做项目管理了. 核心 1. SharePoint List Lookup自己来实现项目的父子关系 2. 权限控制,直接控制在 ...

  9. 2015第18本:从0到1,ZERO to ONE, Notes on startups, or how to build the future

    <从0到1>中文版的副标题是”开创商业与未来的秘密“,题目大得吓人,英文副标题就谨慎了许多:Notes on startups, or how to build the future. 全 ...

  10. Linux平台Makefile文件的编写基础入门(课堂作业)

    根据老师的要求,写一个超简单的makefile准备:       准备三个文件:file1.c, file2.c, file2.h       file1.c: #include "file ...