如何检查Cassandra节点上的本地提示目录?

时间:2016-03-13 19:22:43

标签: cassandra

我遇到了与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,但接受的解决方案是

  

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

是否有更简单的方法来访问Cassandra节点的本地提示目录?

3 个答案:

答案 0 :(得分:6)

  

是否有更简单的方法来访问Cassandra节点的本地提示目录?

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

查找属性hints_directory

答案 1 :(得分:1)

我猜你正在使用ccm。因此,提示文件应位于$CASSANDRA_HOME/.ccm/yourcluster/yournode/hints目录

答案 2 :(得分:0)

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

我们在sstable-tools中添加了一个转储,您可以使用它来查看HH文件中的突变。我们将来可能会增加在shell中使用像sstables这样的HH文件的能力(使用突变来构建memtable并包含在查询中)但是现在它非常原始。

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