MarkLogic群集如何加载和管理数据

时间:2019-04-26 18:59:32

标签: marklogic marklogic-9

我想查询如何将数据加载到此群集中,是否手动将数据分别单独加载到每个节点中?还是marklogic能够在集群本身之间管理和传输数据,所以我要做的就是将数据加载到单个节点中?

要让marklogic了解并平衡某些林/数据库之间的数据,是否有一定要求?例如是否需要森林和数据库共享相同的名称或XDBC服务器共享相同的端口号?最后,我想问一下,是否有办法提高数据提取吞吐量?我试图通过一次将数据泵入所有3个节点来完成此操作,但是这导致了另外两个节点上的错误。因此,我又回到了使用单个节点泵送数据的方式,它目前正在以100%的CPU使用率运行。

从此处的评论中拉出的问题: Clustering of nodes (MarkLogic)

1 个答案:

答案 0 :(得分:2)

数据库将数据存储在林中,并且数据将分发到任何林中。因此,如果您的数据库都在两台主机上都有目录林,它将自动在两台主机之间平衡数据。您可以使用分配策略(默认为存储桶

)来更改数据库如何确定将哪些数据放置在哪个林中

没有重新平衡的特定要求。 App Server和林已分配给特定的数据库,因此它们已被链接。

因此,摄取到应用程序服务器的数据将被写入分配的数据库。然后,该数据库将确定放置数据的森林。有时这可能会导致一个群集主机上的森林变得比另一群集主机上的森林更大,这时数据库将决定将某些数据重新分配给分配给同一数据库的其他森林,这些森林可能相同也可能不同主机。

有很多方法可以提高提取吞吐量,但这是最常见的方法:

  • 增加主机的受限资源。这意味着,如果您受CPU限制,则添加内核;如果您受内存限制,请添加内存;等
  • 增加涉及的主机数。通过负载平衡或多个提取管道。

由于使用的是MLCP,它将检索群集中的林主机列表,并且默认情况下它将在群集中分配工作。有一些选项,请参见here

要查看工作是否正在分发,您可以在管理界面中检查:配置->组->默认->应用服务器-> [您的摄取应用服务器],单击状态标签和 Show More 按钮。它应该列出您的所有主机,以及集群中每个主机正在处理的请求数。如果一个主机的数量明显高于其他主机,则可能无法正确分配工作。

一旦吸收了数据,它们将在整个森林中保持平衡。文件数量或使用的空间不会完全相同。服务器将确定林的大小是何时过小或过大,并相应地移动文档。重新平衡可能会占用大量资源,因此服务器尝试权衡将数据保留在原处与将数据移动到另一个目录林的成本。

如果主要摄取到单个节点中,则由于上述原因,您可能还会在该节点上看到较大的林,因为服务器要权衡移动数据与保留数据的成本。

索引也会影响磁盘的大小,尤其是当文档大小多种多样时,由于文档类型的原因,某些目录林的索引可能比其他目录林更大。

还有许多其他因素会影响每个节点使用的间隔。一是删除片段的数量;二是删除片段的数量。这些片段已标记为删除,但尚未合并到林中。如果林中有很多摄取活动,或者合并优先级降低,则可能导致某些林比其他林大很多,直到有机会合并删除的片段。

您提到您尝试将所有三个节点都提取,但没有成功。在不知道您如何摄取数据以及遇到的确切错误的情况下,很难说出对您不起作用的原因,但这通常是MarkLogic的使用方式。

MarkLogic提供了许多免费课程,按需提供和指导老师。我建议花几个小时来服用MarkLogic Fundamentals。还可以查看mlu.marklogic.com以获得其他课程的列表。您还可以查看MarkLogic Concepts Guide,它对MarkLogic的工作原理进行了很好的概述。