【问题标题】:Cassandra nodetool decommissionCassandra nodetool 退役
【发布时间】:2017-05-19 14:21:27
【问题描述】:

我希望停用 cassandra 节点,因为该节点需要升级操作系统。

我登录到那个节点。执行 decommission 命令,几分钟后我在控制台上得到这个异常

nodetool decommission

error: Stream failed
-- StackTrace --
org.apache.cassandra.streaming.StreamException: Stream failed
    at org.apache.cassandra.streaming.management.StreamEventJMXNotifier.onFailure(StreamEventJMXNotifier.java:85)
    at com.google.common.util.concurrent.Futures$4.run(Futures.java:1172)
    at com.google.common.util.concurrent.MoreExecutors$SameThreadExecutorService.execute(MoreExecutors.java:297)
    at com.google.common.util.concurrent.ExecutionList.executeListener(ExecutionList.java:156)
    at com.google.common.util.concurrent.ExecutionList.execute(ExecutionList.java:145)
    at com.google.common.util.concurrent.AbstractFuture.setException(AbstractFuture.java:202)
    at org.apache.cassandra.streaming.StreamResultFuture.maybeComplete(StreamResultFuture.java:208)
    at org.apache.cassandra.streaming.StreamResultFuture.handleSessionComplete(StreamResultFuture.java:184)
    at org.apache.cassandra.streaming.StreamSession.closeSession(StreamSession.java:412)
    at org.apache.cassandra.streaming.StreamSession.onError(StreamSession.java:507)
    at org.apache.cassandra.streaming.StreamSession.start(StreamSession.java:229)
    at org.apache.cassandra.streaming.StreamCoordinator$StreamSessionConnector.run(StreamCoordinator.java:208)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

我不确定该异常是什么意思,我打算通过 nodetool netstatsnodetool status 来验证退役是否成功,输出如下。在这两个地方都写着LEAVING,我如何确认它是否完整。

nodetool netstats
Mode: LEAVING
Not sending any streams.
Read Repair Statistics:
Attempted: 1
Mismatch (Blocking): 0
Mismatch (Background): 0
Pool Name                    Active   Pending      Completed
Commands                        n/a         0             26
Responses                       n/a         0         758780

nodetool status
Datacenter: DC1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address     Load       Tokens  Owns    Host ID                               Rack
UL  x.x.x.x  1.02 MB    256     ?       377869a9-d01c-4b7d-a24c-dbb90afee3d8  RAC1

我的 cassandra 版本是 2.1.8。发现了一个参考错误https://issues.apache.org/jira/browse/CASSANDRA-10371,它表示更改可能需要 72 小时才能反映。

我应该像Removing a node doc中提到的那样assassinate the node

【问题讨论】:

    标签: cassandra datastax datastax-enterprise cassandra-2.1 nodetool


    【解决方案1】:

    如果您在nodetool status 中没有看到该节点,则它确认它已完成。如果没有,那么您可以尝试nodetool removenode 从集群中删除该节点。 nodetool assassinate 是您从集群中删除节点的最后一个选项。如果nodetool removenode从集群中移除节点失败,那么我们使用nodetool assassinate移除节点。

    错误问题:要查看此错误的更多详细信息,cat /install_directory/apache-cassandra-2.1.8/logs/system.log | grep ERROR

    您的节点无法与其他节点传输数据。出现此类问题的原因有很多,例如:用户进程限制 (nproc)。查找有关您的问题的更多详细信息,以找出错误的原因。

    【讨论】:

    • 非常感谢。它有助于在查看 system.log 后进行调试。集群节点之一出现故障,流失败。
    猜你喜欢
    • 2018-11-21
    • 2018-10-23
    • 2021-05-15
    • 1970-01-01
    • 2018-04-08
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    • 2015-06-03
    相关资源
    最近更新 更多