关于Storm的几点困惑释疑
2015-07-07 16:13
218 查看
一、Storm的文档中提及为Spout和Bolt单元设置的“线程数量”为“初始线程数量”,难道还可以改变?
在一个具体的Topology实例运行起来后,可以动态调整为Spout单元和Bolt单元服务的线程的“线程数量”,因此称刚开始设置的线程数量为初始线线程数量”。
参考文献:
[1]:http://blog.csdn.net/dslztx/article/details/46789443
二、在Storm中已经有了进程,线程,为何还需要任务?
在Storm中已经有了进程和线程,为何还需要任务?任务对于提升并发性没有意义,因为同一个线程中的多个任务间是串行执行的。
这样做的主要原因是:
当我们只有进程和线程两个层次的时候,如果需要将Tuple根据某个值进行分组(即采用fieldsGrouping分组方式),那么刚开始设定的线程数量就不能改变,否则就会出错。
比如刚开始设定线程数量为3,那么值1和4的Tuple被分配到线程1,值2和5的Tuple被分配到线程2,值3和6的Tuple被分配到线程3。而如果此时动态将线程数量改为4,那么值1和5的Tuple被分配到线程1,值2和6的Tuple被分配到2,值3的Tuple被分配到线程3,值4的Tuple被分配到线程4。
那么由于是在线动态改变的,线程2就可能会有2,5,6值的Tuple,这就导致了数据的不一致。
而在Storm中,不像Hadoop中,很多时候需要调整参数,必须是在线动态的,而不能是离线静态的。
因而,才设置了任务这个层次,这时候,分组根据任务数量来进行分配,Storm中可以动态调整进程数量和线程数量,但是某个单元的任务数量是静态不可动态调整的
参考文献:
[1]:http://blog.csdn.net/dslztx/article/details/46789443
[2]:http://stackoverflow.com/questions/17257448/what-is-the-task-in-storm-parallelism
[3]:http://www.quora.com/What-is-a-task-in-Storm-topology
在一个具体的Topology实例运行起来后,可以动态调整为Spout单元和Bolt单元服务的线程的“线程数量”,因此称刚开始设置的线程数量为初始线线程数量”。
参考文献:
[1]:http://blog.csdn.net/dslztx/article/details/46789443
二、在Storm中已经有了进程,线程,为何还需要任务?
在Storm中已经有了进程和线程,为何还需要任务?任务对于提升并发性没有意义,因为同一个线程中的多个任务间是串行执行的。
这样做的主要原因是:
当我们只有进程和线程两个层次的时候,如果需要将Tuple根据某个值进行分组(即采用fieldsGrouping分组方式),那么刚开始设定的线程数量就不能改变,否则就会出错。
比如刚开始设定线程数量为3,那么值1和4的Tuple被分配到线程1,值2和5的Tuple被分配到线程2,值3和6的Tuple被分配到线程3。而如果此时动态将线程数量改为4,那么值1和5的Tuple被分配到线程1,值2和6的Tuple被分配到2,值3的Tuple被分配到线程3,值4的Tuple被分配到线程4。
那么由于是在线动态改变的,线程2就可能会有2,5,6值的Tuple,这就导致了数据的不一致。
而在Storm中,不像Hadoop中,很多时候需要调整参数,必须是在线动态的,而不能是离线静态的。
因而,才设置了任务这个层次,这时候,分组根据任务数量来进行分配,Storm中可以动态调整进程数量和线程数量,但是某个单元的任务数量是静态不可动态调整的
参考文献:
[1]:http://blog.csdn.net/dslztx/article/details/46789443
[2]:http://stackoverflow.com/questions/17257448/what-is-the-task-in-storm-parallelism
[3]:http://www.quora.com/What-is-a-task-in-Storm-topology
相关文章推荐
- Laravel 4 系列入门教程(一)【最适合中国人的Laravel教程】
- MongoDB中对象反序列化的一个小问题
- Linux:install command
- 原生JS实现淡入淡出效果(fadeIn/fadeOut/fadeTo)
- 皕杰报表斜线单元格或图表里的中文显示为小方块
- SqlServer Update更新语句因where条件不正确 造成更新全表的情况
- C++通过gsoap做WebService接口 供C++及java客户端调用
- CSP:使用CryptoAPI解析X509证书基本项
- C++编译器对类中成员函数的处理(引用this指针)
- 各移动设备尺寸、分辨率
- YII开发笔记
- ExpandableListView长按监听实现
- Swift Compiler Error Arithmetic operation '** ' (on type '**') results in an overflow (溢出运算符'&+')
- ArrayAdapter的用法:ArrayAdapter(Context context, int textViewResourceId, T[] objects)
- plist文件的读写
- ecshop第三方登陆之微信登录
- 有关sd卡
- android network develop(1)----doing network background
- WSAIoctl
- 使用Memory Analyzer tool(MAT)分析内存泄漏(一)