【发布时间】:2015-04-25 01:40:57
【问题描述】:
我在分析和提取文本信息的过程中使用了 UIMA。管道因 6 个同时进程而失败。
我认为我需要使用横向扩展工具,例如 UIMA-Ducc 和 UIMA-AS,但我看不清楚是哪个。
什么时候使用每个?它们的区别是什么?
【问题讨论】:
我在分析和提取文本信息的过程中使用了 UIMA。管道因 6 个同时进程而失败。
我认为我需要使用横向扩展工具,例如 UIMA-Ducc 和 UIMA-AS,但我看不清楚是哪个。
什么时候使用每个?它们的区别是什么?
【问题讨论】:
UIMA-AS 提供了用于部署 UIMA 管道的机制。本质上,UIMA-AS 允许用户在 UIMA 组件前面放置一个队列,以便它可以在不同的线程或不同的进程中运行。 UIMA-AS 处理 CAS 的线程和进程间传输。除了一些简单的 bash 脚本,UIMA-AS 不提供用户进程的生命周期管理。
DUCC 是一个集群控制器,除其他外,它为 UIMA-AS 服务提供生命周期管理。 DUCC 还提供了一种机制,用于扩展具有多线程和多进程的 UIMA 管道,并将工作提供给管道实例;这称为 DUCC 作业。 DUCC 作业由核心 UIMA 组件创建,无需了解 UIMA-AS。
【讨论】:
作为UIMA Duckbook 引号
UIMA-AS 提供了一种横向扩展机制,用于在计算资源集群上分配 UIMA 管道,但不提供资源的作业或集群管理。 DUCC 定义了一个与标准 UIMA 管道紧密映射的正式作业模型。围绕这个作业模型,DUCC 提供集群管理服务,以自动化 UIMA 管道在计算集群上的横向扩展。
因此,如果希望将作业/集群管理任务委托给框架,则应使用 UIMA-DUCC,否则请使用 UIMA-AS。
回答
它们有什么区别?
鸭子书说,
DUCC 提供了其他支持横向扩展的工具:
1.在集群中保留全部或部分节点的能力。
2. 支持工作所需的服务的自动化管理。
3. 在集群中的节点上调度和执行任意进程的能力。
4. 调试工具和支持。
5. 用于显示和管理工作和集群状态的 Web 服务器。
6. 支持上述内容的 CLI 和 Java API。
【讨论】:
问题大概应该是:在 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。
【讨论】:
用非常简单的语言回答您的问题是“DUCC 是您在 UIMA 或 UIMA AS 中可能面临的所有瓶颈的答案”。
在 DUCC 中,可以轻松地进行监控,并且您可以通过更改作业描述文件来定义进程的内存大小和每个进程的线程数。
DUCC 相对于 Uima 的另一个优势是现在 CR 也可以使用 Job Driver 进行扩展。
【讨论】: