博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
storm的利用并行度提高处理速度的经验
阅读量:5935 次
发布时间:2019-06-19

本文共 1732 字,大约阅读时间需要 5 分钟。

hot3.png

在storm的流计算框架中,在数据量非常大或者计算逻辑比较复杂的情况下,可能会造成处理速度变慢的情况,最后反而不满足了系统的处理要求,因此这里讨论一下。本文的内容是我在storm的使用过程中所得到的一些经验,个人的观点,如果考虑不够全面或者有某些问题,以后会慢慢补齐或者改进。

在数据量一定的情况下,如果要提高计算效率,当然首要的任务是

(1)要将系统中的算法调优。有可能一个算法浪费了一小部分时间,但由于数据量可能比较大,以至于整体上1秒的时间内可能浪费大量的时间。因此,算法的设计还是比较重要的。

 

(2)其次,就是调整系统中占用资源比较多、运算速度比较慢的那些spout和bolt。在进行topology设计时需要设计好每个bolt的并行度。对于运行速度比较慢的bolt,需要调大他们的并行度,是得更多的资源用到这些计算上面来。这里,bolt运行的快慢是可以从ui界面中看到的,如下图:

如上图,其中,capacity表示一种容量,其实就是占用的资源的百分比。比如,0.799就表示占用了79.9%的分配给这个bolt的资源。这个数值越大,则表示的处理起来速度越慢,则更要加大它的并行度。

 

(3)然后就是设置acker的数量。acker是在bolt成功处理后,进行ack调用的线程(还是进程,我忘记了)。当数据量比较大时,需要使用这个线程的次数就比较多,因此有可能这个线程就是制约处理速度的因素。因此,可以适当调大acker的数量,用于进行ack的调用。系统中,如果不设置的话,acker的数量默认为1;可以通过以下语句在topology中进行设定:

 

 

(4)再就是,在算法的设计过程中,当需要使用某些算法时,比如进行分组的算法,则尽量使用storm系统中自带的fieldsgrouping的方法来代替自己实现的算法。这样效率应该会有提高。

 

conf.put(Config.TOPOLOGY_ACKER_EXECUTORS, 10);//设置acker的数量

 

(5)在设置线程的并行度时,最好能够根服务器集群的及其数量和其每台的cpu的核心数有所关联。我一般这样设置,比如,在我的使用的集群中,假如共有5台用于工作的服务器,则我在进行资源消耗较多的bolt的并行度设置时,一般设置其并行度是5的倍数,如10,15,20等。这样可以更容易的促进系统自动进行负载的均衡。

 

(6)设置好worker的数量。worker是指工作进程的数量,其上可以运行多个工作线程。在设置worker的数量时,首先查看系统中的所有的executors线程数共有多少,比如,有45个。那么,在设置worker的数量时,最好使得每个worker进程所占有的线程数不要太大,也不要太小。我一般设置为3,也就是说每个worker进程大约有3个左右的线程。在上面的45个executors线程的例子中,若共有5台机器,则设置共有25个worker,则每台机器上有5个worker;对于45个线程,每台机器上有15个;这样一平均,则每个worker进程中有3个executors线程。

(这是我自己的看法,大家可以试一下。我感觉如果负载均衡了会更有利于大型集群的运算处理。)

 

(7)当集群中数据量比较大时,则最好能设置spout中的等待处理的数据量的大小。当集群中等待的数据量比较大时,也就是数据发送比较快,但是处理太慢。这个时候应该阻止spout的发送,否则可能会导致系统队列爆掉。因此,设置以下:

 

conf.put(Config.TOPOLOGY_MAX_SPOUT_PENDING, 10000);//设置一个spout task上面最多有多少个没有处理的tuple(没有ack/failed)回复,以防止tuple队列爆掉

 

 

 

--------------------- 本文来自 shuaiokshuai 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/shuaiOKshuai/article/details/38365279?utm_source=copy

转载于:https://my.oschina.net/u/1458864/blog/2209164

你可能感兴趣的文章
RabbitMQ集群
查看>>
Apache防盗链和隐藏版本信息
查看>>
ARP协议与路由
查看>>
使用pypiserver搭建私有源
查看>>
SCI检索介绍
查看>>
Android开发之生成自己的签名文件及App签名打包
查看>>
如何提高阿里云上应用的可用性(二)
查看>>
云宏WinCloud前端工程师告诉你什么是UI扁平化
查看>>
如何压缩PDF文件,有什么简单的方法
查看>>
SpringMVC常用注解标签详解
查看>>
day18 Set集合
查看>>
Oracle event之db file read
查看>>
ORA 00600 [ktrexc_1]
查看>>
Docker 安装
查看>>
查询文件系统容量与每个目录的容量
查看>>
角度与弧度的转换 - 三角学
查看>>
接口规范 3.应用相关接口
查看>>
traceroute命令
查看>>
zabbix接入百度告警详细攻略
查看>>
在Exchange 2010邮箱迁移时有用的命令行
查看>>