1.grouping分组策略

  stream grouping就是用来定义一个stream应该如果分配给Bolts上面的多个Tasks。
  storm里面有6种类型的stream grouping:
    1.1.Shuffle Grouping: 随机分组, 随机派发stream里面的tuple, 保证每个bolt接收到的tuple数目相同。轮询,平均分配。
      1.2 Fields Grouping:按字段分组, 比如按userid来分组, 具有同样userid的tuple会被分到相同的Bolts, 而不同的userid则会被分配到不同的Bolts。
    1.3 All Grouping: 广播发送, 对于每一个tuple, 所有的Bolts都会收到。
    1.4 Global Grouping: 全局分组, 这个tuple被分配到storm中的一个bolt的其中一个task。再具体一点就是分配给id值最低的那个task。
    1.5 Non Grouping: 不分组, 这个分组的意思是说stream不关心到底谁会收到它的tuple。目前这种分组和Shuffle grouping是一样的效果,不平均分配。
    1.6 Direct Grouping: 直接分组, 这是一种比较特别的分组方法,用这种分组意味着消息的发送者举鼎由消息接收者的哪个task处理这个消息。 只有被声明为Direct Stream的消息流可以声明这种分组方法。而且这种消息tuple必须使用emitDirect方法来发射。消息处理者可以通过TopologyContext来或者处理它的消息的taskid (OutputCollector.emit方法也会返回taskid)

2.worker、executor和task之间的关系

  

  备注:一个topology可以包含一个或多个worker(并行地跑在不同的machine上),并且worker只能对应一个topology。

     一个worker可以包含一个和多个executor,每个component(spout或bolt)至少对应于一个executor,同时一个executor只能对应于一个component.

     task是具体的处理逻辑对象,一个executor线程可以执行一个或多个同类型的tasks

     task代表最大并发度,一个component的task数是不会改变的,但是一个component的executor数目是会发生变化的,task数>=executor数,executor数代表实际并发送。

3.各个节点间的作用

  3.1 nimbus主节点:

    3.1.1 接收客户端提交的任务请求,任务由Nimbus进行分配,将分配信息提交到Zookeeper集群(在Zookeeper相应的znode节点上写入任务分配信息,由supervisor查看这些znode上的任务分配      信息,获取分配到的任务)
    3.1.2 监控整个集群的状态(从Zookeeper集群中相应znode上读取supervisor、worker进程的状态信息数据)
    3.1.3 容错:当任务在某些Supervisor节点上运行的时候由于Supervisor进程失效,重新将这些任务分配给其他supervisor运行
  3.2 Supervisor:
    3.2.1 需要定时将自己的运行状态信息(心跳信息)汇报给zookeeper(在Zookeeper相应的znode节点上写入心跳信息)

    3.2.2 接收Nimbus分配给它的任务,负责启动、停止工作进程worker,其本身并不是执行任务的工作进程,worker的容错由Supervisor进程负责
  3.3 worker进程:并不是常驻进程,不能通过手动启动
    真正执行任务的进程 ,worker进程启动后,也会定时将状态信息汇报给zookeeper

  3.4 executor 线程:

     由worker进程来启动,executor负责执行客户提交到Storm集群上任务中Task(spout/bolt)

4.并发设置

  4.1 设置worker工作进程并发

    config.setNumWorkers(3);

  4.2 设置executor工作线程并发

    builder.setBolt(SPLITE_SBOLT, new SplitWordBolt(),2)

  4.3 设置task任务级别的并发

    builder.setBolt(SPLITE_SBOLT, new SplitWordBolt(),2).setNumTasks(4)

    

strom的使用02的更多相关文章

  1. Flume+Kafka+Strom基于伪分布式环境的结合使用

    目录: 一.Flume.Kafka.Storm是什么,如何安装? 二.Flume.Kafka.Storm如何结合使用? 1) 原理是什么? 2) Flume和Kafka的整合  3) Kafka和St ...

  2. Kotlin中变量不同于Java: var 对val(KAD 02)

    原文标题:Variables in Kotlin, differences with Java. var vs val (KAD 02) 作者:Antonio Leiva 时间:Nov 28, 201 ...

  3. Android游戏开发实践(1)之NDK与JNI开发02

    Android游戏开发实践(1)之NDK与JNI开发02 承接上篇Android游戏开发实践(1)之NDK与JNI开发01分享完JNI的基础和简要开发流程之后,再来分享下在Android环境下的JNI ...

  4. iOS系列 基础篇 02 StoryBoard 故事板文件

    iOS基础 02 StoryBoard 故事板文件 目录: 1. 故事板的导航特点 2. 故事板中的Scene和Segue 3. 本文最后 在上篇HelloWorld工程中有一个Main.storyb ...

  5. [转]Tesseract 3.02中文字库训练

    下载chi_sim.traindata字库下载tesseract-ocr-setup-3.02.02.exe 下载地址:http://code.google.com/p/tesseract-ocr/d ...

  6. Java多线程系列--“JUC锁”02之 互斥锁ReentrantLock

    本章对ReentrantLock包进行基本介绍,这一章主要对ReentrantLock进行概括性的介绍,内容包括:ReentrantLock介绍ReentrantLock函数列表ReentrantLo ...

  7. Oracle Recovery 02 - 常规恢复之不完全恢复

    背景:这里提到的常规恢复指的是数据库有完备可用的RMAN物理备份. 实验环境:RHEL6.4 + Oracle 11.2.0.4 单实例. 二.常规恢复之不完全恢复:部分数据丢失 2.1 重做日志文件 ...

  8. 异步编程系列第02章 你有什么理由使用Async异步编程

    p { display: block; margin: 3px 0 0 0; } --> 写在前面 在学异步,有位园友推荐了<async in C#5.0>,没找到中文版,恰巧也想提 ...

  9. star ccm+ 11.02安装

    STAR CCM+是CD-Adapco公司的主打软件,其安装方式较为简单,这里以图文方式详细描述STAR CCM+11.02安装过程. 1 安装准备工作2 正式安装3 软件破解4 软件测试 1 安装准 ...

随机推荐

  1. 关于移动app开发的一些不错的站点

    1. http://www.androiddevtools.cn      Android Dev Tools官网地址:www.androiddevtools.cn 收集整理Android开发所需的A ...

  2. Spring注解@Resource和@Autowired区别对比

    转载:http://www.cnblogs.com/think-in-java/p/5474740.html @Resource和@Autowired都是做bean的注入时使用,其实@Resource ...

  3. Javascript基础知识总结一

    Javascript基础知识总结一 <!DOCTYPE html> <html> <head lang="en"> <meta chars ...

  4. 用BlazeMeter录制JMeter测试脚本

    工具: 1,JMeter 2,Chrome 3,BlazeMeter 4,SwitchyOmega(如果需要代理) 步骤: 以上工具准备好以后就可以录制JMeter的测试脚本了, 在Chrome中点击 ...

  5. 一、oracle数据库成功安装步骤 (11gR2)

    下载安装包 从Oracle官方网站下载数据库软件安装包:http://www.oracle.com/technetwork/cn/database/enterprise-edition/downloa ...

  6. MySQL 显示命令

    虽然现在各种图形化管理工具方便了MySQL的管理,但是偶尔还是需要手动输入指令来使用比较方便,以下是摘抄的一些命令,供自己备忘使用. 1.显示数据库列表. show databases; 2.显示库中 ...

  7. The prefix "util" for element "util:list" is not bound.

    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4. ...

  8. FreeBSD 查看硬件信息

    systat 能实时查看各种信息 systat -pigs 默认值CPU systat -iostat 硬盘IO systat -swap 交换分区 systat -mbufs 网络缓冲区 systa ...

  9. Windows Phone 十一、MVVM模式

    MVVM 模式介绍 模型-视图-视图模型 (MVVM) 是一种用来分离 UI 和非 UI 代码的应用设计模式 MVVM – 模型(Model) MVVM 中的 Model 与 MVC 中的一致,用于封 ...

  10. AngularJs的UI组件ui-Bootstrap

    http://www.cnblogs.com/pilixiami/p/5597634.html