Cassandra:添加一个节点需要太长时间

时间:2014-12-20 18:53:58

标签: cassandra cassandra-2.0 datastax

我的群集由四个环中的节点组成,每个DC中有一个节点。我正在向其中一个DC添加一个新节点,这需要太长时间。我使用RF 3,并且只有一个键空间。我正在使用cassandra 2.0.11。几个问题:

在节点工具netstats'中,我看到新节点也在从其他数据中心的节点中提取数据,而不仅仅是它所属的节点。为什么这样,因为其DC中的节点具有所有数据?

在添加新节点时,是否要求群集必须处于完美状态,不需要任何修复?这可能是节点从其他DC中的节点提取数据的原因吗?

我已将流吞吐量设置为0,使用' nodetool setthroughput'但我发现该节点仅以大约350kb / s的速度接收数据。我能做些什么来加快速度?在过去的一天里,我看到节点只收到了大约2GB的数据(如nodetool状态所示),还有另外10GB的数据,所以你可以看到它需要很长时间。这是正常的吗?

在正在进行自举的节点上,节点工具netstats'显示它正在接收来自其他节点的文件,但在所有其他节点上,我看到“不发送任何流”#39;这是正常的吗?

最后,在完全加入集群之前重启bootstrapping节点是否可以?我想尝试更改一些需要重启的设置,但我想知道引导流是否会从重启之前的位置继续。

感谢

1 个答案:

答案 0 :(得分:4)

我会尝试内联回答您的问题,希望这些有用:

  

在节点工具netstats'中,我看到新节点也在从其他数据中心的节点中提取数据,而不仅仅是它所属的节点。为什么这样,因为其DC中的节点具有所有数据?

这取决于许多事情;密钥空间复制设置,种子列表(每个DC应至少有一个节点),以及集群的修复状态(即仅在远程DC中的密钥)。

  

在添加新节点时,是否要求群集必须处于完美状态,不需要任何修复?这可能是节点从其他DC中的节点提取数据的原因吗?

不,群集状态不一定非常完美,但是你是对的,这可能是节点可能从远程DC流式传输的原因

  

我已将流吞吐量设置为0,使用' nodetool setthroughput'但我发现该节点仅以大约350kb / s的速度接收数据。我能做些什么来加快速度?

设置此值应该禁止流式传输您是正确的。可能有很多因素导致未达到全带宽,可能是有计划的维修,或其他流量,如客户端应用程序同时读取或写入数据到群集?这也可能意味着压缩已经落后,您可以在当时检查nodetool tpstats以查看哪些线程池统计信息是否正在查看节点是否忙于执行压缩等操作。

  

在过去的1天里,我看到节点只收到了大约2GB的数据(如nodetool状态所示),而且还有10GB的空间,所以你可以看到它需要很长时间。这是正常的吗?

一般来说没有。当我看到慢速自举这样的事情时,它通常会受到CPU或光盘吞吐量等硬件的影响。您的节点是否使用本地光盘?它们是SSD还是HDD?你在使用网络附加存储吗?

  

在正在进行自举的节点上,节点工具netstats'显示它正在接收来自其他节点的文件,但在所有其他节点上,我看到“不发送任何流”#39;这是正常的吗?

较早版本的Cassandra已经看到了一些引导问题,其中流式传输可以变为“#”;如果可能的话,最好尽可能尝试使用最新版本并重新检查。< / p>

  

最后,在完全加入集群之前重启bootstrapping节点是否可以?我想尝试更改一些需要重启的设置,但我想知道引导流是否会从重启之前的位置继续。

每次启动过程时,Bootstrapping都将从头开始。重新启动节点将停止原始引导过程并从头重新启动。请注意,数据文件将被重新流式传输,因此您可能最终会在节点上显示剩余数据。最好在再次引导之前清除数据目录。

如果节点没有引导,您可以随时在auto_bootstrap: false文件中设置cassandra.yaml,然后再进行修复。