文档章节

Strom-(1)基本结构

xiongsheng
 xiongsheng
发布于 2016/03/04 11:15
字数 834
阅读 43
收藏 2

一、Strom的优点:

    1.容错性。Storm会管理工作进程和节点的故障。

    2.快速。系统的设计保证了消息能得到快速的处理,使用ZeroMQ作为其底层消息队列。

    3.可靠的消息处理。Storm保证每个消息至少能得到一次完整处理。任务失败时,它会负责从消息源重试消息。

Strom的简单原理:

        Storm集群主要由一个主节点和一群工作节点(worker node)组成,通过Zookeeper进行协调。

二、基本架构:

            

        主节点( Nimbus ):

        主节点通常运行一个后台程序 —— Nimbus,用于响应分布在集群中的节点,分配任务和监测故障。这个很类似于Hadoop中的 Job Tracker。

        工作节点( Supervisor ):

        工作节点同样会运行一个后台程序 —— Supervisor,用于收听工作指派并基于要求运行工作进程。每个工作节点都是topology中一个子集的实现。而Nimbus和Supervisor之间的协调则通过Zookeeper系统或者集群。

        Zookeeper

        Zookeeper是完成Supervisor和Nimbus之间协调的服务。而应用程序实现实时的逻辑则被封装进Storm中的“topology”。topology则是一组由Spouts(数据源)和Bolts(数据操作)通过Stream Groupings进行连接的图。

       Worker

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

        Task

         worker中每一个spout/bolt的线程称为一个task. 在storm0.8之后,task不再与物理线程对应,同一个spout/bolt的task可能会共享一个物理线程,该线程称为executor。

三、编程架构

        Topology

        1  拓扑是一个计算图; 2  拓扑中的每一个节点都包含处理逻辑;3    拓扑描述了数据在各节点间传输的方向;4  拓扑描述了spouts和bolts任务间的关系

        Tuple是一个消息单元,源源不断的消息单元(tuples)就组成了流(Stream)

       Stream groupings:消息分发策略

  

分发策略分类:

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

    2.Fields Grouping:按字段分组, 比如按userid来分组, 具有同样userid的tuple会被分到相同的Bolts, 而不同的userid则会被分配到不同的Bolts.

    3.All Grouping: 广播发送, 对于每一个tuple, 所有的Bolts都会收到.

    4.Global Grouping: 全局分组,这个tuple被分配到storm中的一个bolt的其中一个task.再具体一点就是分配给id值最低的那个task.

    5.Non Grouping: 不分组,意思是说stream不关心到底谁会收到它的tuple.目前他和Shuffle grouping是一样的效果,有点不同的是storm会把这个bolt放到这个bolt的订阅者同一个线程去执行.

    6.Direct Grouping: 直接分组,这是一种比较特别的分组方法,用这种分组意味着消息的发送者决定由消息接收者的哪个task处理这个消息.只有被声明为Direct Stream的消息流可以声明这种分组方法.而且这种消息tuple必须使用emitDirect方法来发射.消息处理者可以通过TopologyContext来或者处理它的消息的taskid (OutputCollector.emit方法也会返回taskid)。



© 著作权归作者所有

下一篇: 2.NIO
xiongsheng
粉丝 2
博文 68
码字总数 35128
作品 0
程序员
私信 提问
PostgreSQL GPU 加速(HeteroDB pg_strom) (GPU计算, GPU-DIO-Nvme SSD, 列存, GPU内存缓存)

标签 PostgreSQL , GPU , heteroDB , pg_strom , CUDA , nvidia , DIO , Nvme , SSD , 列存 , GPU内存缓存 背景 HeteroDB pg_strom是PG的一个GPU加速插件,目前已支持到PG 11的版本。 在这些...

德哥
2018/07/28
0
0
twitter的实时数据处理分析工具-Storm

Twitter在9月19日的Strange Loop大会上公布Storm的代码,是一个类似于Hadoop的即时数据处理工具,由BackType开发的,后来被Twitter收购用于Twitter进行实时数据处理分析。 Twitter列举了Sto...

红薯
2011/09/20
5.8K
5
PostgreSQL 扩展--PGStrom

PG-Strom 是 PostgreSQL 的一个扩展,作为 custom-scanprovider。PG-Strom 的目的是利用其庞大的并行执行能力,解放 GPU 设备的一些 CPU 密集工作流。GPU 在处理器核心数量(通常是几百 - 几...

叶秀兰
2015/08/03
2.9K
1
分布式轻量级框架 设计&实现 1 - 初步想法&技术选型

技术选型 项目用maven管理,使用checkstyle,findbugs,cobertura等插件生成项目报告。 使用Spring框架,采用注解的方式,尽量零配置。 统一化持久层模块。Repository分为JPA,MongoDB,HBa...

亮_dangdang
2013/10/12
1K
1
storm 0.9.2单机性能测试

最近在使用storm做了一下数据处理性能测试。 Topology结构:spout输出80万数据(csv格式);bolt1解析csv,拆分各信息段;bolt2按bolt1中某个字段汇总,累加记数后入库(入库触发频率:60s)...

GoldenRoc
2014/09/23
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Security 自定义登录认证(二)

一、前言 本篇文章将讲述Spring Security自定义登录认证校验用户名、密码,自定义密码加密方式,以及在前后端分离的情况下认证失败或成功处理返回json格式数据 温馨小提示:Spring Security...

郑清
24分钟前
1
0
php yield关键字以及协程的实现

php的yield是在php5.5版本就出来了,而在初级php界却很少有人提起,我就说说个人对php yield的理解 Iterator接口 在php中,除了数组,对象可以被foreach遍历之外,还有另外一种特殊对象,也就是继承...

冻结not
37分钟前
2
0
servlet请求和响应的过程

本文转载于:专业的前端网站➥servlet请求和响应的过程 1.加载 Servlet类被加载到Java虚拟机中,并且实例化。在这个过程中,web容器(例如tomcat)会调用Servlet类的公开无参构造函数,产生一...

前端老手
37分钟前
2
0
golang 1.13 errors 包来了,不用写“err 气功波”代码

引 这篇是对 errors 包 的姿势挖掘 气功波错误代码 从 http.Get()返回的错误 判断 syscall.ECONNREFUSED 错误.以前要对 go 标准库 error 结构有点熟悉,才能写出下面的代码 func CmdErr(err ...

guonaihong
41分钟前
27
0
喜玛拉雅已听书单

时间倒序排 书名 作者 状态 唐砖 孑与2 进行中 死灵之书(克苏鲁神话合集) 阿卜杜拉·阿尔哈萨德 进行中 赡养人类 刘慈欣 完结 赡养上帝 刘慈欣 完结 中国太阳 刘慈欣 完结 中国太阳 刘慈欣...

Alex_Java
42分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部