Apache Storm: Supervisor、Worker、Executor、Task
发布时间
阅读量:
阅读量
Storm环境安装成功后,下一步要做的是利用这一套分布式实时计算框架来进行读取数据文件并导入MongoDB的操作
代码相对简单,并非难以实现;然而有一些事情值得特别记录。
1)IBasicBolt 和 IRichBolt
参考文档指出,在实际开发中为了便于简化代码实现选择使用了BaseBasicBolt作为基类结构。然而这一选择却带来了意想不到的问题——系统接收了大量的失败消息(fail)。经过进一步研究发现:问题的根本原因是我们的默认设置将超时时间限制为仅允许30秒的时间窗口(该任务需要读取一个大约30MB的文件),这显然远远低于预期的需求水平。尽管如此,在一定程度上这也得益于BasicBolt组件为我们自动实现了对ack和fail事件的统一管理功能(这使得代码实现更加简便)。然而在实际运行过程中我们发现:这种简单的做法虽然节省了开发时间但它同时也带来了一些不必要的麻烦——至少我们感觉到与其自行处理这些事件可能更为高效且便捷一些也不失为一种可行的选择方式。因此最终决定优化选择究竟是选择继承IRichBolt架构还是主动处理Ack?
2)任务分解
按照原先设定的流程,在Bolt系统中实现全部功能:解析文件内容、处理数据并存储到数据库中。遇到30MB的大文件后发现该流程耗时很久导致操作超时,则需要延长超时时间以解决问题。
conf.se
全部评论 (0)
还没有任何评论哟~
