【问题标题】:How to inspect the local hints directory on a Cassandra node?如何检查 Cassandra 节点上的本地提示目录?
【发布时间】:2016-06-28 17:34:21
【问题描述】:

我遇到了和Cassandra system.hints table is empty even when the one of the node is down一样的问题:

我正在从 academy.datastax.com 学习 Cassandra。我正在本地机器上尝试复制和一致性演示。 RF = 3,一致性 = 1。

当我的 Node3 关闭并且我正在使用 update 命令更新我的表时,SYSTEM.HINTS 表应该存储 node3 的提示,但它始终是空的。

@amalober 指出这是由于使用的 Cassandra 版本不同。来自 DataStax 的 Cassandra 文档:

在 Cassandra 3.0 及更高版本中,提示存储在每个节点上的本地提示目录中,以改进回放。

同样的问题是 3 年前提出的,How to access the local data of a Cassandra node,但接受的解决方案是

...使用读取 SSTables 的 Cassandra 源代码将某些东西整合在一起,并将其提供给您希望构建的本地客户端。一个很好的起点是查看 sstable2json 工具中使用的 org.apache.cassandra.tools.SSTableExport 的源代码。

有没有更简单的方法可以访问 Cassandra 节点的本地提示目录?

【问题讨论】:

  • 你到底用的是什么版本?

标签: cassandra


【解决方案1】:

有没有更简单的方法可以访问 Cassandra 节点的本地提示目录?

提示目录在$CASSANDRA_HOME/conf/cassandra.yaml 文件中定义(有时它也位于/etc/cassandra 下,具体取决于您安装Cassandra 的方式)

寻找房产hints_directory

【讨论】:

  • 我查看了 cassandra.yaml 文件中提到的两个地方,$CASSandra_HOME/data/hints 和 /var/lib/cassandra/hints(我在创建集群之前取消了 cassandra.yaml 中的行的注释) ,但两个目录都是空的。
【解决方案2】:

我猜你正在使用 ccm。所以,提示文件应该在$CASSANDRA_HOME/.ccm/yourcluster/yournode/hints目录中

【讨论】:

    【解决方案3】:

    由于没有得到提示文件,我无法重现您的问题。我所做的每一次尝试都会按预期生成提示文件。现在有一种方法可以更轻松地查看提示。

    我们在sstable-tools 中添加了提示转储,您可以使用它来查看 HH 文件中的突变。我们将来可能会增加在 shell 中使用 HH 文件(如 sstables)的功能(使用突变来构建 memtable 并包含在查询中),但目前它还很原始。

    如果您想自己分析数据,它非常简单(无元数据设置)。您可以在这里查看我们所做的并根据您的需求进行更改:https://github.com/tolbertam/sstable-tools/blob/master/src/main/java/org/apache/cassandra/hints/HintsTool.java#L39

    【讨论】:

      猜你喜欢
      • 2018-02-24
      • 2021-08-10
      • 2014-11-12
      • 2016-02-02
      • 2022-10-09
      • 2015-01-15
      • 1970-01-01
      • 1970-01-01
      • 2017-11-14
      相关资源
      最近更新 更多