UIMA-Ducc与UIMA-AS

时间:2015-04-17 08:10:49

标签: uima ducc

我在文本中分析和提取信息的过程中使用了 UIMA 。管道失败,同时有6个进程。

我认为我需要使用横向扩展工具,例如 UIMA-Ducc UIMA-AS ,但我看不清哪个。

何时使用每一个?他们的差异在哪?

4 个答案:

答案 0 :(得分:5)

UIMA-AS提供了部署UIMA管道的机制。实质上,UIMA-AS允许用户将队列放在UIMA组件的前面,以便它可以在不同的线程或不同的进程中运行。 UIMA-AS处理线程和CAS的进程间传输。除了一些简单的bash脚本,UIMA-AS不为用户进程提供生命周期管理。

DUCC是一个集群控制器,除其他外,还为UIMA-AS服务提供生命周期管理。 DUCC还提供了一种机制,用于扩展具有多个线程和多个进程的UIMA管道,并将工作提供给管道实例;这被称为DUCC工作。 DUCC作业是从核心UIMA组件创建的,不需要UIMA-AS的知识。

答案 1 :(得分:4)

UIMA Duckbook引用

  

UIMA-AS提供了一种横向扩展机制,用于在计算资源集群上分发UIMA管道,但不提供资源的作业或集群管理。 DUCC定义了一个紧密映射到标准UIMA管道的正式作业模型。围绕这个工作模型,DUCC提供集群管理服务,以通过计算集群自动扩展UIMA管道。

因此,如果希望将作业/集群管理任务委托给框架,则应使用UIMA-DUCC,否则请使用UIMA-AS。

回答

  

他们的区别是什么?

鸭子说,

  

DUCC提供其他支持横向扩展的设施:
  1.保留集群中全部或部分节点的能力   2.自动管理支持工作所需的服务   3.在集群中的节点上安排和执行任意进程的能力   4.调试工具和支持。
  5.用于显示和管理工作和群集状态的Web服务器   6.用于支持上述内容的CLI和Java API。

答案 2 :(得分:4)

问题应该是:在UIMA-AS之上使用DUCC有什么好处,因为DUCC是UIMA-AS之上的管理层。

如果您只想快速部署UIMA-AS管道,那么您就可以使用基本的UIMA-AS基础架构(实际上是基于Active MQ的UIMA,http://activemq.apache.org/)。但请注意,UIMA-AS文档中的示例仅向您展示如何在处理时实现并行性,而不是在读取时。这意味着读取数据可能会成为瓶颈(除非您完全实现将数据存储在不同节点上以及从不同节点读取数据)。

这实际上是DUCC为您解决的问题之一。如果您遵循DUCC最佳实践,您的数据读取可以使用WorkItem类型(放在CAS之上)进行分发。 DUCC强迫你这样做(这很好),如果你按照它的CollectionReader(将输入数据分成块)+ CASMultiplier(做实际的分布式读取)方法,你可以获得巨大的性能提升。此外,DUCC为您提供了类似Hadoop的基于Web的监控界面和一些其他不错的功能,例如每个计算节点的内存分配。

如果您计划运行大量管道并愿意深入挖掘DUCC,我绝对推荐DUCC。当然,你也必须学习UIMA-AS。

答案 3 :(得分:1)

您的问题以非常简单的语言回答" DUCC是您在UIMA或UIMA AS中可能面临的所有瓶颈的答案。

在DUCC中,可以轻松实现监控,只需更改作业描述文件即可定义进程的内存大小和每个进程的线程数。

DUCC优于Uima的另一个优势 - 现在CR也可以使用Job Driver进行缩放。