问题标签 [nodetool]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cassandra - Cassandra 在插入 8000 万行后挂起
使用默认配置安装 Cassandra。只是一个单节点服务器,48GB 内存,2 TB 硬盘。当它显着减慢时,插入了大约 8000 万行。新连接因超时错误而被拒绝。
Opssenter 也会引发超时。
htop 显示 1 个 cassandra 进程,它为 100% 加载 CPU
iotop 显示定期读取\写入,但强度非常低 - 所以 HDD 不是瓶颈
大量 RAM 仍然可用,并且没有交换任何内容
nodetool tpstats - 没有工作,被“java.net.SocketTimeoutException:读取超时”压垮
nodetool status - 显示服务器正常工作(!):UN,负载为 122GB,Owns 100%,tokens 256
tail /var/log/cassandra/system.log - 对我来说没有任何信息,最后一行是
怎么了?如何找到当前执行的操作列表?如何找到该行为的原因?以及如何让它恢复正常?
谢谢!
PS最后它抛出了一个异常:
错误 [ReadStage:1550] 2014-02-16 05:22:26,476 CassandraDaemon.java(第 192 行)线程异常 [ReadStage:1550,5,main] java.lang.OutOfMemoryError:org.apache 处的 Java 堆空间。 cassandra.io.util.RandomAccessReader.(RandomAccessReader.java:69) at org.apache.cassandra.io.compress.CompressedRandomAccessReader.(CompressedRandomAccessReader.java:76) at org.apache.cassandra.io.compress.CompressedRandomAccessReader.open( CompressedRandomAccessReader.java:43) at org.apache.cassandra.io.util.CompressedPoolingSegmentedFile.createReader(CompressedPoolingSegmentedFile.java:48) at org.apache.cassandra.io.util.PoolingSegmentedFile.getSegment(PoolingSegmentedFile.java:39) at org .apache.cassandra.io.sstable.SSTableReader.getFileDataInput(SSTableReader.java:1195) 在 org.apache.cassandra.db。columniterator.IndexedSliceReader.setToRowStart(IndexedSliceReader.java:108) at org.apache.cassandra.db.columniterator.IndexedSliceReader.(IndexedSliceReader.java:84) at org.apache.cassandra.db.columniterator.SSTableSliceIterator.createReader(SSTableSliceIterator.java :65) org.apache.cassandra.db.columniterator.SSTableSliceIterator.(SSTableSliceIterator.java:42) org.apache.cassandra.db.filter.SliceQueryFilter.getSSTableColumnIterator(SliceQueryFilter.java:167) org.apache.cassandra .db.filter.QueryFilter.getSSTableColumnIterator(QueryFilter.java:62) 在 org.apache.cassandra.db.CollationController.collectAllData(CollationController.java:273) 在 org.apache.cassandra.db.CollationController.getTopLevelColumns(CollationController.java :53) 在 org.apache.cassandra.db.ColumnFamilyStore。getTopLevelColumns(ColumnFamilyStore.java:1560) at org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1379) at org.apache.cassandra.db.Keyspace.getRow(Keyspace.java:327) at org.apache .cassandra.db.SliceFromReadCommand.getRow(SliceFromReadCommand.java:65) at org.apache.cassandra.service.StorageProxy$LocalReadRunnable.runMayThrow(StorageProxy.java:1396) at org.apache.cassandra.service.StorageProxy$DroppableRunnable.run (StorageProxy.java:1931) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread。运行(Thread.java:744)getColumnFamily(ColumnFamilyStore.java:1379) at org.apache.cassandra.db.Keyspace.getRow(Keyspace.java:327) at org.apache.cassandra.db.SliceFromReadCommand.getRow(SliceFromReadCommand.java:65) at org.apache .cassandra.service.StorageProxy$LocalReadRunnable.runMayThrow(StorageProxy.java:1396) at org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:1931) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor .java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:744)getColumnFamily(ColumnFamilyStore.java:1379) at org.apache.cassandra.db.Keyspace.getRow(Keyspace.java:327) at org.apache.cassandra.db.SliceFromReadCommand.getRow(SliceFromReadCommand.java:65) at org.apache .cassandra.service.StorageProxy$LocalReadRunnable.runMayThrow(StorageProxy.java:1396) at org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:1931) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor .java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:744)cassandra.service.StorageProxy$LocalReadRunnable.runMayThrow(StorageProxy.java:1396) at org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:1931) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor. java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:744)cassandra.service.StorageProxy$LocalReadRunnable.runMayThrow(StorageProxy.java:1396) at org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:1931) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor. java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:744)
cassandra - 停用 cassandra 节点超时,“仅收到 0 个响应”
当我尝试停用 Cassandra 集群中的节点时,该过程开始(我看到活动流从节点流向集群中的其他节点(使用 vnodes)),但随后nodetool decommission
存在一点延迟并出现以下错误信息。
我可以重复运行 nodetool decommission 并且它将开始将数据流式传输到其他节点,但到目前为止始终存在以下错误。
为什么我会看到这个,有没有办法可以安全地停用这个节点?
cassandra - 一个 Cassandra 节点没有负载
我有一个带有 4 个节点和 RF 3 的 Cassandra 1.2.13 集群。并在 QUORUM 中读取/写入。
我已使用此处给出的以下内容分配了初始令牌。
但是当我向 Cassandra 插入数据时,一个节点的负载 ( 58.07 KB
) 不会改变,而其他节点的负载会上升。这是nodetool ring
输出。
这意味着特定节点没有获取任何数据,不是吗?
为什么会这样?
谢谢, 巴蒂亚
datastax-enterprise - DSE OpsCenter 显示错误的节点状态
我已经遇到过几次事件,即我们的一个或两个 DSE 搜索节点在 OpsCenter 中显示为“关闭 - 无响应”状态,即使该节点已启动(即我可以访问 Solr 管理 UI)。有时,nodetool 状态也会显示节点已关闭。但更多时候,它只是 OpsCenter。我发现修复方法是重新启动 datastax-agent 服务。可能会导致这种情况吗?
我还想跟进我的其他问题:
cassandra - 集群内的 Cassandra 密钥空间克隆
通过使用 nodetool 的快照功能,我设法在单节点测试机器上克隆了一个键空间。通过克隆,我的意思是具有不同名称的相同键空间数据:原始:Keyspace1,新:Keyspace2。
如果我对集群中的单个节点执行相同的过程,是否会将新的密钥空间复制到所有其他节点?或者我必须在集群内的所有节点上运行该过程吗?
cassandra - 升级 Cassandra
我的 Cassandra 版本是1.2.4
,我正在尝试将其升级到,2.0.5
并且我知道在第一部分中我必须将其升级到1.0.14
,然后尝试将其升级到2.0.5
,
当我尝试运行时nodetool -h localhost removenode Host ID
,它给了我:
线程“主”java.lang.UnsupportedOperationException 中的异常:无法在 org.apache.cassandra.service.StorageService.removeNode(StorageService.java:3199)处删除自身 .....
在运行该命令之前,我尝试过nodetool upgradesstables
问题是什么 ?我该如何解决?
操作系统:Ubuntu 12.04 lts
cassandra - 引导新节点后完全不平衡的 DC
我刚刚在我的 Cassandra DC 中添加了一个新节点。之前我的拓扑是这样的:
- DC Cassandra:1 个节点
- DC Solr:5 个节点
当我为 Cassandra DC 引导第二个节点时,我注意到要流式传输的总字节数几乎与现有节点的负载一样大(916gb 流式传输;现有 cassandra 节点的负载为 956gb)。尽管如此,我还是允许引导程序继续进行。它在几个小时前完成,现在我的恐惧得到了证实:Cassandra DC 完全不平衡。
Nodetool 状态显示如下:
请注意 Cassandra DC 中的“拥有”列:节点 2 拥有 99.4%,而节点 1 拥有 0.6%(尽管节点 2 的“负载”小于节点 1)。我希望他们每个人拥有 50% 的股份,但这就是我得到的。我不知道这是什么原因造成的。我记得的是,当我启动新节点的引导程序时,我正在 Solr 节点 1 中运行完整修复。到目前为止,修复仍在运行(我认为它实际上是在新节点完成引导时重新启动的)
我该如何解决?(修理?)
在 Cassandra DC 处于此状态时批量加载新数据是否安全?
一些附加信息:
- DSE 4.0.3(卡桑德拉 2.0.7)
- 网络拓扑策略
- 卡桑德拉 DC 中的 RF1;Solr DC 中的 RF2
- DC 由 DSE 自动分配
- 已启用 Vnode
- 新节点的配置模仿现有节点的配置;所以或多或少是正确的
编辑:
原来我也不能在 cs-node1 中运行清理。我收到以下异常:
编辑:
Nodetool 状态输出(无键空间)
来自node1的Cassandra yaml:https ://www.dropbox.com/s/ptgzp5lfmdaeq8d/cassandra.yaml (与node2的唯一区别是listen_address和commitlog_directory)
关于 CASSANDRA-6774,它有点不同,因为我没有停止之前的清理工作。尽管我认为我现在通过启动清理(仍在进行中)而不是像他们建议的解决方法那样首先重新启动节点而采取了错误的路线。
更新(2014/04/19):
执行以下操作后,nodetool cleanup 仍然失败并出现断言错误:
- 完全擦洗键空间
- 全集群重启
我现在正在对 cs-node1 中的键空间进行全面修复
更新(2014 年 4 月 20 日):
任何修复 cs-node1 中的主键空间的尝试都失败了:
丢失通知。您应该检查服务器日志以了解密钥空间的修复状态
我刚才也看到了这个(dsetool ring的输出)
键空间感知:
这是一个强有力的指标,表明 cs-node2 的引导方式有问题(正如我在帖子开头所描述的那样)。
cassandra - Cassandra 1.2.x 到 2.x 数据中心重建
我正在尝试从 Cassandra 1.2.x 升级到 2.x。我通常进行升级的方式是建立一个新的数据中心(这是在 EC2 上,所以问题不大)并将nodetool rebuild
数据移动到新的数据中心。然后将应用程序切换到新数据中心,修复,然后关闭旧数据中心。
但是,从 1.2.15.1 到 2.0.7.31,我遇到了一些麻烦。在 2.x 节点上运行时,我nodetool rebuild us-east-1-2-15-1
没有按预期开始重建,而是收到以下错误。
这可能是由于 1.2.x 和 2.x 之间的不兼容,或者只是我尝试使用的 2.x 版本中的错误,但我找不到其他任何人看到此问题的现有实例。有什么想法吗?
ETA:我还尝试将新的 2.x 节点添加到现有集群,然后计划在替换它们时慢慢删除 1.2.x 节点,显然确保在所有 1.2.x 节点退役之前不要使用任何 2.x 功能. 但是,这不起作用,我得到了完全相同的错误。
cassandra - 实用程序“nodetool rebuild”期间磁盘空间不足
下午好。
在生产环境中,我们使用 Cassandra 2.0.7。最初我们有足够的一个节点(cass-05,本地 IP 地址 192.168.0.5)。现在需要第二个节点(cass-06,本地 IP 地址 192.168.0.6)。对于第二个节点(cass-06)有一个单独的服务器。cass-06 上的 Cassandra 设置与 cass-05 完全类似。使用 NetworkTopologyStrategy 复制策略。每个节点都在自己的机架和数据中心上配置 1 个数据副本(机架 1,DC1:1 用于 cass-05 和机架 2,DC2:1 用于 cass-06)。
每台服务器上有 1TB 的磁盘空间可供 Cassandra 使用。在服务器 cass-05 上有 600Gb 的真实数据。
在服务器 cass-06 上,我们运行实用程序“nodetool rebuild”:
cass-06 上的 Cassandra 开始为理论上应该删除的表创建大量临时文件。但是,由于某种原因,它没有。这些临时表占用的整个 1TB 磁盘空间需要 9-12 个小时,从而导致节点故障。在 cass-06 节点上重新启动 Cassandra 后,磁盘空间仅占用 150Gb。
在实用程序“nodetool rebuild”期间,节点 cass-06 与 cass-05 一样参与写入/读取。
谢谢你的帮助。
cassandra - Cassandra nodetool status 与 gossipinfo 的输出不同
我已将一个节点添加到 5 个 Cassandra 集群,并且新节点加入时没有任何错误。但是,如果我在同一个节点上输入 nodetool 状态,则缺少 2 个集群节点:
nodetool gossipinfo 正确显示所有 6 个节点:
到目前为止,我重新启动了节点,可以看到所有握手都正确完成。但是 nodetool 状态仍然失败。我错过了什么吗?