您的位置:首页 > 其它

关于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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: