在Storm Crawler中将爬网阶段与处理阶段分离

问题描述

我目前正在从事基于Storm Crawler的项目。在当前项目中,我们修改了原始Storm Crawler Core工件的一些Bolts和spouts。例如,我们更改了ParserBolt等的某些部分。此外,我们在上述项目中开发了一些处理步骤。我们的螺栓与原始的Storm Crawler项目混合在一起。例如,我有一个图像分类器,该分类器提供了来自Storm Crawler的一些图像并对该图像进行了一些分类。现在,我将把爬网阶段与处理阶段分开。对于爬网阶段,我想使用最新版本的Storm Crawler,并将其结果保存到名为Docs的Solr集合中。对于第二阶段(独立于爬网阶段),我还有另一个基于Storm的项目,该项目与Storm Crawler没有任何关系。第二个拓扑的输入元组需要从Docs集合中获取。我对将文档从Solr集合馈送到第二个风暴拓扑一无所知。它是一个好的设计架构吗? 如果是,将数据导入第二个拓扑的好方法是什么?还应该注意的是,我希望在不停机的情况下使用这些项目。

解决方法

这是一个基于意见的问题,但要回答该问题,您绝对可以将管道分成多个拓扑。当您需要不同类型的硬件时,这是一个好习惯,例如用于图像处理的GPU与较便宜的抓取实例。

您可以将文档编入SOLR,但其他解决方案也可以使用,例如队列等。第二种拓扑结构上需要的是定制的SOLR喷口。如果您希望第二个项目独立于SC,您将无法利用SOLR模块中的代码,但可以将其作为灵感的来源。

根据总体架构以及第二拓扑是否需要摄取图像的内容,可能会有更好的方法。但是,这超出了StackOverflow的技术问题的范围。