Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Memory Cassandra数据存储:数据目录空间不等于占用的空间_Memory_Cassandra_Disk_Nodetool_Du - Fatal编程技术网

Memory Cassandra数据存储:数据目录空间不等于占用的空间

Memory Cassandra数据存储:数据目录空间不等于占用的空间,memory,cassandra,disk,nodetool,du,Memory,Cassandra,Disk,Nodetool,Du,这是一个关于卡桑德拉体系结构的初学者问题 我有一个3节点的Cassandra集群。数据目录位于$CASSANDRA_HOME/data/data。我加载了一个巨大的数据集。我对加载数据的表执行了nodetool刷新,然后执行nodetool表状态。这表示占用的总空间约为50GiB。我很好奇,检查了每个节点上我的数据目录du$CASSANDRA_HOME/data/data的大小,每个节点上显示大约1-2GB。数据目录怎么可能小于单个表所占用的空间?我错过什么了吗?我的表是用复制系数1创建的,du

这是一个关于卡桑德拉体系结构的初学者问题


我有一个3节点的Cassandra集群。数据目录位于$CASSANDRA_HOME/data/data。我加载了一个巨大的数据集。我对加载数据的表执行了
nodetool刷新
,然后执行
nodetool表状态
。这表示占用的总空间约为50GiB。我很好奇,检查了每个节点上我的数据目录
du$CASSANDRA_HOME/data/data
的大小,每个节点上显示大约1-2GB。数据目录怎么可能小于单个表所占用的空间?我错过什么了吗?我的表是用复制系数1创建的,du给出了给定路径使用的真实存储容量。这并不总是与存储在这些路径中的数据大小直接相关

与您可能获得的任何其他存储使用情况信息(例如,从Cassandra)相比,
du
的输出有两个主要因素

  • 由于两个原因,
    du
    可能给出比预期更小的数字:ⓐ 它结合了硬链接。这意味着,如果指定给它的路径包含硬链接文件(我在这里不解释硬链接,但这个术语对于Unixish操作系统是固定的,因此可以很容易地进行查找),当文件存在多次时,这些文件只被计算一次。ⓑ 它知道稀疏文件;这些文件包含很大(有时很大)的空白区域(零字节)。在许多Unixish文件系统中,这些文件可以高效地存储,具体取决于它们的创建方式
  • du
    可能给出比预期更多的数字,因为文件系统有一些开销。为了存储一个n字节的文件,需要存储n+h字节,因为这是一个原因。h取决于文件系统及其配置。最重要的因素是文件系统通常以块结构存储文件。如果一个文件的大小不是文件系统块大小的倍数,那么最后需要的块仍然完全由该文件分配,因此它的一些大小可能会被浪费
    du
    会将整个块显示为已分配,因为事实上它是

  • 因此,在您的案例中,Cassandra可能会谈到50GiB占用的空间,但其中很多可能是空的(从未写入)空间。这可能存储在文件系统上的一个稀疏文件中,该文件实际上只使用2GB的存储大小(如
    du
    所示)。

    du
    给出了给定路径使用的真实存储容量。这并不总是与存储在这些路径中的数据大小直接相关

    与您可能获得的任何其他存储使用情况信息(例如,从Cassandra)相比,
    du
    的输出有两个主要因素

  • 由于两个原因,
    du
    可能给出比预期更小的数字:ⓐ 它结合了硬链接。这意味着,如果指定给它的路径包含硬链接文件(我在这里不解释硬链接,但这个术语对于Unixish操作系统是固定的,因此可以很容易地进行查找),当文件存在多次时,这些文件只被计算一次。ⓑ 它知道稀疏文件;这些文件包含很大(有时很大)的空白区域(零字节)。在许多Unixish文件系统中,这些文件可以高效地存储,具体取决于它们的创建方式
  • du
    可能给出比预期更多的数字,因为文件系统有一些开销。为了存储一个n字节的文件,需要存储n+h字节,因为这是一个原因。h取决于文件系统及其配置。最重要的因素是文件系统通常以块结构存储文件。如果一个文件的大小不是文件系统块大小的倍数,那么最后需要的块仍然完全由该文件分配,因此它的一些大小可能会被浪费
    du
    会将整个块显示为已分配,因为事实上它是

  • 因此,在您的案例中,Cassandra可能会谈到50GiB占用的空间,但其中很多可能是空的(从未写入)空间。这可能存储在文件系统上的一个稀疏文件中,该文件实际上只使用2GB的存储大小(显示为
    du

    50Gb的哪种数据?压缩在这里起着很大的作用。我的问题更倾向于,即使在压缩的时候,它在两个地方是否反映出相同的情况?@xmas79 Compression没有启用。压缩从一开始就被禁用了吗?请发布YAML配置50GB的什么样的数据?压缩在这里起着很大的作用。我的问题更倾向于,即使在压缩的时候,它在两个地方是否反映出相同的情况?@xmas79 Compression没有启用。压缩从一开始就被禁用了吗?请发布YAML配置