文档章节

storm的利用并行度提高处理速度的经验

飓风2000
 飓风2000
发布于 2018/09/26 21:55
字数 1233
阅读 4
收藏 0

在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://blog.csdn.net/shuaiOKshuai/article/details/38365279

共有 人打赏支持
飓风2000
粉丝 38
博文 337
码字总数 138214
作品 0
浦东
高级程序员
私信 提问
Spark cluster 部署

Spark 框架 Spark与Storm的对比 对于Storm来说: 1、建议在那种需要纯实时,不能忍受1秒以上延迟的场景下使用,比如实时金融系统,要求纯实时进行金融交易和分析 2、此外,如果对于实时计算的...

meteor_hy
2018/06/27
0
0
storm 0.9.2单机性能测试

最近在使用storm做了一下数据处理性能测试。 Topology结构:spout输出80万数据(csv格式);bolt1解析csv,拆分各信息段;bolt2按bolt1中某个字段汇总,累加记数后入库(入库触发频率:60s)...

GoldenRoc
2014/09/23
0
0
Twitter Storm进阶初步,Storm能做什么

本篇Blog是一个简单的Storm入门例子,目的让读者明白Storm是怎样的运行机制。以及后续会放出的几篇Storm高级特性以及最终将Storm融入Hadoop 2.x的YARN中。目的读者是已经进阶大数据的Hadoop,...

震秦
2014/04/13
0
8
windows 安装 storm 及 eclipse 调试 TopN 实例

一:安装JDK 下载地址:地址一 地址二 配置Java环境变量 JAVAHOME、Path、CLASSPATH三个值分别为(按照自己安装状况设置,此处供参考): D:javajdk1.8 %JAVAHOME%/bin;%JAVAHOME%/jre/bin ....

大数据之路
2012/06/08
0
1
Storm笔记整理(四):Storm核心概念与验证——并行度与流式分组

[TOC] Storm核心概念之并行度 Work 1个worker进程执行的是1个topology的子集(注:不会出现1个worker为多个topology服务)。1个worker进程会启动1个或多个executor线程来执行1个topology的(...

xpleaf
2018/04/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

带你看数据挖掘与机器学习-厦大EDP上课出勤预测

带你看数据挖掘与机器学习-厦大EDP上课出勤预测 标签: 数据挖掘 特征工程 机器学习 出勤预测 write by xmhexi 2019/3/22 内容提要 首先说明本文是一篇科普文章,通过一个实际案例,帮助理解什...

xmhexi
今天
41
0
IOS  学习记录

1.StackView=>IOS 9及以上支持 2.布局方式: AutoLayout / StackView 堆布局 (线性布局) 3.屏幕适配 (资源分辨率、设计分辨率、屏幕分辨率) Size Class技术 可以针对 屏幕的方向进行设置...

萨x姆
今天
4
0
第四次工业革命:自主经济的崛起

https://36kr.com/p/5170370.html

shengjuntu
昨天
3
0
Cloud Native 与12-Factor

12-Factor(twelve-factor),也称为“十二要素”,是一套流行的应用程序开发原则。Cloud Native架构中使用12-Factor作为设计准则。 12-Factor 的目标在于: 使用标准化流程自动配置,从而使...

waylau
昨天
10
0
java多线程2

“非线程安全”问题存在于“实例变量”中,如果是方法内部的私有变量,则不存在线程安全问题。这是因为方法内部的变量都是私有造成的。 synchronized 获取的都是对象锁。如果多个线程访问多个...

一滴水穿石
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部