strom的使用02
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的更多相关文章
- Flume+Kafka+Strom基于伪分布式环境的结合使用
目录: 一.Flume.Kafka.Storm是什么,如何安装? 二.Flume.Kafka.Storm如何结合使用? 1) 原理是什么? 2) Flume和Kafka的整合 3) Kafka和St ...
- Kotlin中变量不同于Java: var 对val(KAD 02)
原文标题:Variables in Kotlin, differences with Java. var vs val (KAD 02) 作者:Antonio Leiva 时间:Nov 28, 201 ...
- Android游戏开发实践(1)之NDK与JNI开发02
Android游戏开发实践(1)之NDK与JNI开发02 承接上篇Android游戏开发实践(1)之NDK与JNI开发01分享完JNI的基础和简要开发流程之后,再来分享下在Android环境下的JNI ...
- iOS系列 基础篇 02 StoryBoard 故事板文件
iOS基础 02 StoryBoard 故事板文件 目录: 1. 故事板的导航特点 2. 故事板中的Scene和Segue 3. 本文最后 在上篇HelloWorld工程中有一个Main.storyb ...
- [转]Tesseract 3.02中文字库训练
下载chi_sim.traindata字库下载tesseract-ocr-setup-3.02.02.exe 下载地址:http://code.google.com/p/tesseract-ocr/d ...
- Java多线程系列--“JUC锁”02之 互斥锁ReentrantLock
本章对ReentrantLock包进行基本介绍,这一章主要对ReentrantLock进行概括性的介绍,内容包括:ReentrantLock介绍ReentrantLock函数列表ReentrantLo ...
- Oracle Recovery 02 - 常规恢复之不完全恢复
背景:这里提到的常规恢复指的是数据库有完备可用的RMAN物理备份. 实验环境:RHEL6.4 + Oracle 11.2.0.4 单实例. 二.常规恢复之不完全恢复:部分数据丢失 2.1 重做日志文件 ...
- 异步编程系列第02章 你有什么理由使用Async异步编程
p { display: block; margin: 3px 0 0 0; } --> 写在前面 在学异步,有位园友推荐了<async in C#5.0>,没找到中文版,恰巧也想提 ...
- star ccm+ 11.02安装
STAR CCM+是CD-Adapco公司的主打软件,其安装方式较为简单,这里以图文方式详细描述STAR CCM+11.02安装过程. 1 安装准备工作2 正式安装3 软件破解4 软件测试 1 安装准 ...
随机推荐
- oracle not in,not exists,minus 数据量大的时候的性能问题
http://blog.csdn.net/greenappple/article/details/7073349/ 耗时 minus<not exists<not in
- 用Netty开发中间件:高并发性能优化
用Netty开发中间件:高并发性能优化 最近在写一个后台中间件的原型,主要是做消息的分发和透传.因为要用Java实现,所以网络通信框架的第一选择当然就是Netty了,使用的是Netty 4版本.Net ...
- 这是用过的"最差"树形插件
这是用过的"最差"树形插件 !!! 或许大家听过一个bootstrap UI框架---ace皮肤.有兴趣的童鞋可以在线查看:https://www.iteblog.com/ac ...
- python中应用*args 与**kwargs
这是Python函数可变参数 args及kwargs------->目的是:当函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kwargs有key值. ...
- JavaScript基本操作
一.如何编写? 1.JavaScript代码存在形式 <!-- 方式一 --> <script type="text/javascript" src=" ...
- 常用的Linux命令
1.如何创建一个目录?mkdir DirectoryName 2.如何进入服务器根目录?ls / 3.如何查看日历?cal 4.如何修改密码?passwd 5.如何查看当前用户信息?whoami 6. ...
- UVALive 7141 BombX(离散化+线段树)(2014 Asia Shanghai Regional Contest)
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=6 ...
- NSAttributedString字符串属性类
//定义一个可变字符串属性对象aStr NSMutableAttributedString *aStr = [[NSMutableAttributedString alloc]initWithStri ...
- c# 利用动态库DllImport("kernel32")读写ini文件(提供Dmo下载)
c# 利用动态库DllImport("kernel32")读写ini文件 自从读了设计模式,真的会改变一个程序员的习惯.我觉得嘛,经验也可以从一个人的习惯看得出来,看他的代码编写习 ...
- 1.NoSql简介
NoSQL,指的是非关系型的数据库.随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以 ...