Apache Storm 学习:Supervisor,Worker,Executor,Task

本文介绍了Apache Storm的核心概念,包括IBasicBolt与IRichBolt的区别,任务分解策略,以及并行度的设置。通过调整并行度和任务分解,优化了大文件处理,避免超时问题。详细阐述了Supervisor、Worker、Executor和Task的关系,以及如何通过配置和代码设置这些参数。
摘要由CSDN通过智能技术生成

成功安装Storm环境之后,接下来的事情就是使用这个分布式实时计算框架来完成原来的读数据文件并导入MongoDB的工作了。

代码不复杂,根据文档可以很快的实现。但是有几件事情觉得有必要记录下来。

1)IBasicBolt 和 IRichBolt

根据文档,为了简化代码使用了BaseBasicBolt作为基类,却导致Spout收到大量的fail,为什么?研究发现,根源是我们超时时间缺省只有30s,实在太短(任务有一个读30M的文件),但另一方面也是这个BasicBolt帮我们对ack/fail进行了管理,代码是省了,但其实并不方便,至少觉得不如自己处理更有效果,也不直接。所以,后来修改为继承IRichBolt,还是自已主动Ack吧。

2)任务分解

开始设计按原来的逻辑,在Bolt中完成全部工作:读文件,解析,写数据库。但是发现对于30M的大文件来说,这个过程非常漫长导致超时,加大超时时间能解决问题。

conf.setMessageTimeoutSecs(600);

但不是根本办法,所以又优化一下,看看写库动作能否拆到其它任务中去,于是又新建一个MongoRecordBolt,负责写一条记录。

builder.setBolt("complain-day", new ComplainBolt(),TASK_NUMBER)
  .shuffleGrouping("csv-scanner", "complain.day");
builder.setBolt("mongo-complain-day", new MongoRecordBolt(),2*TASK_NUMBER)
  .shuffleGrouping("complai
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值