问题标签 [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 - 在 nodetool 修复期间 Cassandra 副本宕机?
我正在开发一个用于 nodetool 修复的自动化脚本,该脚本将在所有 6 个 Cassandra 节点上每个周末执行。我们在 DC1 中有 3 个,在 DC2 中有 3 个。只是想了解最坏的情况。如果 DC1 和 DC2 之间的连接丢失或几个副本在节点工具修复之前或期间发生故障,会发生什么情况。这可能是网络问题、网络升级(通常发生在周末)或其他原因。我知道 nodetool repair 为该节点上的每个数据范围计算 Merkle 树,并将其与其他副本上的版本进行比较。因此,如果它们在副本之间没有连接性,节点工具修复将如何表现?它真的会修复节点吗?在所有节点都启动并恢复连接后,我是否必须重新运行节点工具修复。他们会不会是这个事件的任何副作用?我盯着它看,但找不到太多细节。任何见解都会有所帮助。
谢谢。
cassandra - 连接到远程 JMX 代理时出错!在启动 Nodetool 时
我正在尝试使用nodetool
我们的 Cassandra 生产数据库。但是,一旦我尝试从本地机器上针对 Cassandra 生产集群启动 nodetool,我就会遇到异常。
谁能提供一些想法,为什么我会看到这个异常?任何帮助将不胜感激。
cassandra - 使用复制命令将数据导入 cassandra
我刚到 C* 世界一周大。我正在使用复制命令从大约(23 GB)的 csv 文件上传数据。
我需要获取列族的行数以确保成功插入行。我读到了两种执行此操作的方法:
从限制 2000000 中选择计数(*);使用 nodestats 工具 woth cfstas 命令并检查结果中的“键数(估计)”,我尝试了选项(1),但我一直等待很长时间没有任何结果。然后我尝试了选项(2)。但是我发现键的数量(估计)随着时间的推移而减少。这是我的节点工具命令输出的一部分:
nodetool --host 54.225.108.245 cfstats
开/关:
我运行命令前 5 分钟的键数(估计)是 896,而在此之前的 3 分钟是 1024。但是我注意到键空间的“写入计数:324654”值正在增加。
如果我的复制命令正确导入数据,我会感到困惑,因为即使在大约 30 分钟后操作仍未完成。好心提醒..
cassandra - cassandra 1.2 nodetool 在尝试连接到远程节点时出现“连接失败”
我正在使用 Oracle 的 64 位 JVM 版本 1.7.0_10 的 Amazon Web Service VPC 上运行 cassandra 1.2 的 6 节点集群。
当我登录到其中一个节点(例如 10.0.12.200)时,我可以正常运行nodetool -h 10.0.12.200 status
。
但是,如果我尝试从同一个终端使用集群中的另一个 IP 地址(10.0.32.153),我会得到Failed to connect to '10.0.32.153:7199: Connection refused'
.
在我尝试连接的 10.0.32.153 节点上,我进行了以下检查。
从 10.0.12.200 我可以运行
telnet 10.0.32.153 7199
并获得连接,因此它似乎不是端口 7199 的安全组/防火墙问题。如果我在 10.0.32.153 上运行,
netstat -ant|grep 7199
我会看到tcp 0 0 0.0.0.0:7199 0.0.0.0:* LISTEN
所以 cassandra 似乎确实在监听端口
10.0.32.153 上的 cassandra-env.sh 文件使 jmx 的所有 JVM_OPTS 都处于活动状态
-Dcom.sun.management.jmxremote.port=7199 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
在搜索互联网时尝试解决此问题时,我在黑暗中看到的唯一镜头是设置以下内容:
JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=10.0.32.153"
但是当我这样做时,我什至没有得到回应。它只是挂起。
任何指导将不胜感激。
cassandra - “nodetool repair”操作有多贵?
定期nodetool repair
在我的 Cassandra 节点上运行会削弱它们吗?
Planet Cassandra 常见问题解答说明(重点添加)
反熵节点修复——对于不经常读取的数据,或更新已宕机时间较长的节点上的数据,节点修复过程(也称为反熵修复)确保一个节点上的所有数据副本是一致的。节点修复(使用 nodetool 实用程序)应作为常规集群维护操作的一部分定期运行。
这是我见过的唯一nodetool repair
定期运行的参考。如果它便宜,定期运行它不会有问题,但它到底有多贵?它是否相当于对节点上的每条记录进行一致性检查读取?还是比这更聪明?文档提到了 Merkle 树的使用,但这并没有让我知道操作的成本有多大。
如果您在一个节点上有 500 GB 的数据,并且该节点实际上与其他节点一致(修复是无操作的),那么修复从磁盘读取多少数据(读取所有 500 GB 需要几个小时)?以及通过 LAN 发送多少数据(通过 LAN 发送全部 500 GB 可能需要另一个小时左右)。
cassandra - Cassandra system.log 中的错误:java.io.IOException:权限被拒绝
我在所有节点上的完全空白集群上遇到以下异常。里面绝对什么都没有。我没有理由聚集。
所以,现在当我nodetool info
在节点上看到时,我看到 gossip 和 thrift 都关闭了。
我可以重新启动它们而不会出现 nodetool 的任何问题。有什么线索吗?
cassandra - cassandra复合,多节点上的复合键
我最近在 cassandra 中使用不同的设计进行了一些性能测试。我目前正在使用 cassandra 作为写入密集型项目。但是,我将添加读取密集型部分以使用select
语句导出数据。
我正在用下表做时间序列;
我有date|n
作为分区键。为了提高读取性能,我试图利用宽行的概念。在文档中,指出;
如果分区键相同,则将它们插入到同一个物理节点,并扩大分区键的行。
因此,我使用均匀分布行以防出现此处n
所述的热点;
但是,在多节点集群中,当我插入以下内容时;
我看到它们不在同一个物理节点中。
我通过以下方式获取节点信息;
nodetool getendpoint keyspace columnfamily some-timeuuid
因此,不知何故,我希望它们位于同一行以提高读取性能,但在获得 20 亿列的情况下不要太宽。(这是列的大小限制)
那么,有什么想法吗?
cassandra - Cassandra:nodetool修复不起作用
我的一个节点上的 Cassandra 服务出现故障,我们无法重新启动它,因为其中一个表中存在一些损坏。所以我们尝试通过删除所有数据文件然后启动服务来重建它,一旦它出现在环中,我们多次运行 nodetool repair 但它挂起并抛出相同的错误
引起:org.apache.cassandra.io.compress.CorruptBlockException:(/var/lib/cassandra/data/profile/AttributeKey/profile-AttributeKey-ib-1848-Data.db):检测到损坏,块长度为 1177104 11576。
这发生在恢复 6GB 数据之后。此外,我的复制因子是 3,因此其他 2 个节点上的相同数据也可以。
我对 Cassandra 有点陌生,不确定我缺少什么,有人看到过这个修复问题吗?我也尝试过擦洗,但由于腐败而失败。
请帮忙。
cassandra - 在虚拟节点设置下知道哪个真实节点在 Cassandra 集群中启动
虚拟节点是 Cassandra 中的一个强大设置,它减轻了为每个节点分配适当初始令牌的负担,但有时我发现在读取nodetool ring
每个节点由大量行描述的位置的输出时会很痛苦。例如:
如果我的目标只是简单地知道哪个真实节点启动了,每个真实节点拥有多少数据,我能知道我应该怎么做吗?
cassandra - Cassandra:删除节点
我想从我的 Cassandra 集群中删除一个节点,并关注这两个相关的问题(此处和此处)和Cassandra 文档。但我仍然不太确定确切的过程。
我的第一个问题是:以下从 Cassandra 集群中删除节点的方法是否正确?
decommission
我要删除的节点。removetoken
我刚刚退役的节点。
如果上述过程是正确的,那我怎么知道退役过程已经完成,以便我可以进行第二步呢?还是在第 1 步之后立即执行第 2 步总是安全的?
此外,Cassandra 文件说:
您可以使用 nodetool decommission 将一个节点从集群中移除到一个活动节点,或者使用 nodetool removetoken(到任何其他机器)来移除一个死节点。这会将旧节点负责的范围分配给其他节点,并在那里复制适当的数据。如果使用 decommission,数据将从 decommissioned 节点流式传输。如果使用 removetoken,则数据将从剩余的副本中流式传输。
不会从正在退役的节点中自动删除任何数据,因此如果您想以环上的不同令牌将节点重新投入使用,则应手动删除。
这是否意味着退役节点是死节点?此外,由于没有数据会自动从正在退役的节点中删除,我如何判断何时可以安全地从已退役的节点中删除数据(即,如何知道数据流何时完成?)